Schedule
| Date | Lecture | Code | Homework |
|---|---|---|---|
| January 16 | Introduction Functional Programming; Proofs; ADTs | ||
| January 18 | Functional Programming; Proofs; ADTs | Lecture.v, InClass.v | |
| January 23 | Functional Programming; Proofs; ADTs | ||
| January 25 | Semantics via Interpreters | Lecture.v, InClass.v | |
| January 30 | Semantics via Interpreters | HW0 due | |
| February 1 | Interpreters in Practice: Rosette | racket.rkt, rosette.rkt | |
| February 6 | Transition Systems | Lecture.v, InClass.v | |
| February 8 | Transition Systems | ||
| February 13 | Transition Systems | ||
| February 15 | IMP and Operational Semantics | Lecture.v | HW1 due |
| February 20 | IMP and Operational Semantics | ||
| February 22 | IMP and Operational Semantics | Project proposal due | |
| February 27 | Axiomatic Semantics; Hoare Logic | Lecture.v | |
| February 29 | Hoare Logic in Practice: Dafny | Lecture.dfy | |
| March 5 | HW2 hack day | ||
| No class | HW2 due | ||
| No class (spring break) | |||
| No class (spring break) | |||
| March 19 | Lambda Calculus | ||
| March 21 | Lambda Calculus | ||
| March 26 | Simply-Typed Lambda Calculus; Type Safety | Lecture.v | |
| March 28 | Simply-Typed Lambda Calculus; Type Safety | ||
| April 2 | HW3 hack day | ||
| No class (James is traveling) | HW3 due | ||
| April 9 | Types in Practice: Linear Types and Rust | lecture.rs | |
| April 11 | Polymorphism and System F | ||
| April 16 | Polymorphism and System F | ||
| April 18 | Types Potpourri: Products and Sums | ||
| April 23 | Readings: CompCert | ||
| April 25 | Readings: Trusting trust; Victory Lap | HW4 due Project report due | |
| May 2–4 | Final exam (take home) |