Teaching & Curriculum

Highlights

Programs developed at Iowa State

Graduate

M.S. in Artificial Intelligence

Led the development with Prof. Jin Tian. A comprehensive program spanning AI, machine learning, and natural language processing, balancing theory and practice.

Undergraduate

B.A. in Computer Science

Spearheaded with Profs. Soma Chaudhuri and Jack Lutz; approved by the Iowa Board of Regents and launched in spring 2023. A flexible 32-credit curriculum that supports double majors and broadens participation.

Data Science

Data Science B.S., Minor & Certificate

Co-led with Associate Deans Arne Hallam and Sriram Sundararajan; chaired two university committees that designed the B.S. degree and the Minor and Certificate programs.

For the data science programs, I co-designed four new core courses:

  • DS 201 — Introduction to Data Science (with Dr. Adisak Sukul). Concepts, domain case studies, analysis pipelines, computing, and ethics.
  • DS 202 — Data Acquisition & Exploratory Data Analysis (with Dr. Heike Hofmann). Acquisition, summaries, pipelines, visualization, and reproducibility.
  • DS 301 — Applied Data Modeling & Predictive Analysis (with Drs. Kris De Brabanter and Jin Tian). Predictive analysis, machine learning, modeling, and communication, with team projects.
  • DS 401 — Data Science Capstone. Multi-disciplinary team projects with oral and written reporting.

Summer school

Midwest Big Data Summer School (2016–2019). I founded this one-week intensive in 2016 to introduce early-career researchers to data science. The first edition drew 144 participants from across the Midwest and beyond, and the 2019 edition more than 175; in total, over 600 attendees benefited across the four years. (Website)

Courses taught

Iowa State University and the University of Virginia, 2004–2020.

  • Com S 362 — Object-Oriented Analysis and Design. Four offerings, Spring 2006 – Fall 2007.
  • Com S 342 — Programming Language Design, Semantics & Implementation (undergraduate). Eight offerings, 2007–2015; the basis for my MIT Press textbook.
  • Com S 541 — Programming Language Design & Semantics (graduate). 2008–2015; used the Coq proof assistant and Types and Programming Languages.
  • Com S 610 — Advanced topics & graduate seminars. Type systems (2009), program analysis (2008), aspect-oriented software development (2006), and security properties of software systems (2006).
  • Aspect-Oriented Software Development (CS-551/661, University of Virginia). Fall 2004; co-developed and co-taught with Prof. Kevin Sullivan.
  • Preparing Graduate Students for a Faculty Career.

Teaching resource: exam.class, a LaTeX class file and example for typesetting exams and quizzes.