1:30–3:00pm · FXB 1008
- Cyrus Omar — Tue 6–7pm, 4624 BBB or virtual
- Thomas Porter — Thu 11:30am–12:30pm, BBB Atrium (Tishman Hall) or virtual
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:
- 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.
- 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.
| Assignments | 25% |
| Mid-Semester Exam | 25% |
| Course Project | 40% |
| Attendance & Participation | 10% |
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.
| 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
Reading: Gradual Typing for Functional Languages (Siek and Taha)
Presenter: Sam Hiken · Partner: Yi Wang
Reading: Uniprocessor Garbage Collection Techniques (Wilson, Sections 1 and 2)
Presenter: Rafe Symonds · Partner: Vanshika Singla
|
| M 30 Mar | Annotated Bibliography Drafts due (for presentations scheduled on or after 6 Apr) |
| W 1 Apr |
Presenter: Amirali Ebrahimzadeh · Partner: Conner Rose
Reading: Correctness of a Compiler for Arithmetic Expressions (McCarthy and Painter)
Presenter: Scott Brinley · Partner: Ruijie Gao
Reading: Formal Verification of a Realistic Compiler (Leroy)
Presenter: Andre Osores · Partner: Lani Quach
Reading: Systematic Design of Program Analysis Frameworks (Cousot and Cousot)
|
| F 3 Apr | Annotated Bibliography Drafts due (for first-week presentations) |
| M 6 Apr |
Presenter: Lani Quach · Partner: Andre Osores
Reading: Separation Logic: A Logic for Shared Mutable Data Structures (Reynolds)
Presenter: Yi Wang · Partner: Sam Hiken
Reading: A Unified Approach to Global Program Optimization (Kildall)
Presenter: Logan Green · Partner: Amirali Ebrahimzadeh
Reading: A Lattice Model of Secure Information Flow (Denning)
|
| W 8 Apr |
Presenter: Jania Vandevoorde · Partner: Kei Rockwell
Reading: Reflection and Semantics in LISP (Smith)
Presenter: Ivan Wei · Partner: Tianyiming Jing
Reading: Terminating General Recursion (Nordström)
Presenter: Conner Rose · Partner: Jerry Zhu
Reading: The Essence of Functional Programming (Wadler)
|
| M 13 Apr |
Presenter: Vanshika Singla · Partner: Rafe Symonds
Reading: Combinatorial Sketching for Finite Programs (Solar-Lezama et al.)
Presenter: Jerry Y. Zhu · Partner: Logan Green
Reading: ICE: A Robust Framework for Learning Invariants (Garg et al.)
Presenter: Ruijie Gao · Partner: Scott Brinley
Reading: Operation-Centric Hardware Description and Synthesis (Hoe and Arvind)
|
| W 15 Apr |
Presenter: Tianyiming Jing · Partner: Ivan Wei
Reading: Low-Code Programming Models (Hirzel)
Course Wrap-Up and Special Topics by Request
Cyrus Omar
|
| M 20 Apr | Annotated Bibliography Final Versions Due |
| F 30 Apr | Project Reports Due |