CSE 590 · Winter 2026 · University of Michigan

Advanced Programming Languages

Grader
Yuganshi Agrawal (yuganshi@umich.edu)
Lecture
Mondays & Wednesdays
1:30–3:00pm · FXB 1008
Credits
4
Office Hours
Office Hours Queue
  • Cyrus Omar — Tue 6–7pm, 4624 BBB or virtual
  • Thomas Porter — Thu 11:30am–12:30pm, BBB Atrium (Tishman Hall) or virtual
Overview

Programming languages and proof assistants are rich mathematical structures and powerful user interfaces. This course covers the design and use of advanced programming languages and proof assistants. We will build up systematically from mathematical first principles while considering human factors in language design, language prototyping, and techniques for reasoning about program behavior throughout the course.

The goals of the course are:

  1. To change the way you think about programming and programming language design in ways that will remain relevant across the many technology hype cycles that you will encounter over the course of your careers.
  2. To provide you with an introduction to contemporary tools and research results in the field of programming languages and theorem proving.

See the Syllabus for full details and policies, and the Research Project Guide for the project.

Course Structure
Assignments25%
Mid-Semester Exam25%
Course Project40%
Attendance & Participation10%

The semester concludes with a research project: a narrativized annotated bibliography and an in-class presentation on a topic in programming languages, plus an implementation. The student annotated bibliographies and slides are published below.

Schedule
W 7 Jan
Course Introduction
M 12 Jan
Syntax
W 14 Jan
Semantics
M 19 Jan
No class — MLK Day Holiday
W 21 Jan
Types
M 26 Jan
Inductive Reasoning
M 26 Jan
A1 Released
W 28 Jan
Sums and Recursion, Formally
M 2 Feb
Constructive Logic
W 4 Feb
Propositions as Types, Universal Types
Th 5 Feb
A1 Due
F 6 Feb
A2 Released
M 9 Feb
Existential Types, Higher Kinds
W 11 Feb
Dependent Types I
M 16 Feb
Dependent Types II
M 16 Feb
A2 Due
W 18 Feb
Dependent Types III
W 18 Feb
A3 Released
M 23 Feb
Metatheory
W 25 Feb
Imperative Programming
W 25 Feb
A3 Due · A4 Released · Project Guide Released
Sa 28 Feb – Su 8 Mar
No class — Spring Break
M 9 Mar
Imperative Program Analysis
M 9 Mar
A4 Due
W 11 Mar
Exam
M 16 Mar
Memory Management and Ownership
M 16 Mar
A5 Released
W 18 Mar
Borrowing in Rust
Th 19 Mar
Project Proposals Due
M 23 Mar
No class — read papers!
T 24 Mar
A5 Due
W 25 Mar
No class — read papers!
M 30 Mar
Presenter: Kei Rockwell · Partner: Jania Vandevoorde
Presenter: Sam Hiken · Partner: Yi Wang
M 30 Mar
Annotated Bibliography Drafts due (for presentations scheduled on or after 6 Apr)
W 1 Apr
Presenter: Amirali Ebrahimzadeh · Partner: Conner Rose
Presenter: Scott Brinley · Partner: Ruijie Gao
Presenter: Andre Osores · Partner: Lani Quach
F 3 Apr
Annotated Bibliography Drafts due (for first-week presentations)
M 6 Apr
Presenter: Lani Quach · Partner: Andre Osores
Presenter: Logan Green · Partner: Amirali Ebrahimzadeh
W 8 Apr
Presenter: Jania Vandevoorde · Partner: Kei Rockwell
Presenter: Ivan Wei · Partner: Tianyiming Jing
Presenter: Conner Rose · Partner: Jerry Zhu
M 13 Apr
Presenter: Vanshika Singla · Partner: Rafe Symonds
Presenter: Ruijie Gao · Partner: Scott Brinley
W 15 Apr
Presenter: Tianyiming Jing · Partner: Ivan Wei
Course Wrap-Up and Special Topics by Request
Cyrus Omar
M 20 Apr
Annotated Bibliography Final Versions Due
F 30 Apr
Project Reports Due