Schedule
| Date | Lecture | Code | Homework |
|---|---|---|---|
| August 23 | Introduction Functional Programming; Proofs; ADTs | ||
| August 25 | Functional Programming; Proofs; ADTs | Lecture.v, InClass.v | |
| August 30 | Functional Programming; Proofs; ADTs | InClass2.v, InClass3.v | |
| September 1 | Semantics via Interpreters | Lecture.v, InClass1.v | |
| September 6 | Semantics via Interpreters | InClass2.v | HW0 due |
| September 8 | Interpreters in Practice: Rosette | racket.rkt, rosette.rkt | |
| September 13 | Transition Systems | Lecture.v, InClass.v | |
| September 15 | Transition Systems | ||
| September 20 | Transition Systems | ||
| September 22 | IMP and Operational Semantics | Lecture.v, InClass.v | HW1 due |
| September 27 | IMP and Operational Semantics | ||
| September 29 | IMP and Operational Semantics | Project proposal due | |
| October 4 | IMP and Operational Semantics | ||
| October 6 | Axiomatic Semantics; Hoare Logic | Lecture.v | |
| October 11 | Hoare Logic in Practice: Dafny | Lecture.dfy | |
| October 13 | Hoare Logic in Practice: Dafny | InClass.dfy | HW2 due |
| October 18 | Lambda Calculus | ||
| October 20 | Lambda Calculus | ||
| October 25 | Simply-Typed Lambda Calculus; Type Safety | Lecture.v | |
| October 27 | Simply-Typed Lambda Calculus; Type Safety | ||
| November 1 | Polymorphism and System F | ||
| November 3 | Polymorphism and System F | ||
| No class (election day—go vote!) | |||
| November 10 | Types in Practice: Linear Types and Rust | lecture.rs | HW3 due |
| November 15 | Types Potpourri: Products and Sums | ||
| No class | |||
| No class (fall break) | |||
| No class (fall break) | |||
| November 29 | Readings: CompCert | ||
| December 1 | Readings: Trusting trust; Victory Lap | HW4 due Project report due | |
| December 8–10 | Final exam (take home) |