August 24 | Course Overview | slides | |
August 26 | Introduction to Semantics | slides notes | |
August 29 | Inductive Definitions and Proofs | slides notes | |
August 31 | Inductive Proof and Large-Step Semantics | slides notes | A1 out |
September 2 | The IMP Language | slides notes | |
September 5 | No class (Labor Day) |
September 7 | IMP Properties | slides notes scribbles | A1 due; A2 out |
September 9 | Denotational Semantics | slides notes | |
September 12 | Denotational Semantics Examples | slides notes slides+ scribbles | |
September 14 | Axiomatic Semantics | slides notes | A2 due; A3 out |
September 16 | Hoare Logic | slides notes scribbles | |
September 19 | Hoare Logic Examples | slides notes scribbles | |
September 21 | Weakest Preconditions | slides notes | A3 due; A4 out |
September 23 | Lambda Calculus | notes scribbles | |
September 26 | More Lambda Calculus and Substitution | slides notes | |
September 28 | Lambda Calculus Encodings | slides notes slides+ | A4 due |
September 30 | Programming in the Lambda Calculus | slides notes | |
October 3 | Definitional Translation and Continuations | slides notes | |
October 5 | Preliminary Exam I |
October 7 | Exam Debrief | | |
October 10 | No class (Fall Break) |
October 12 | Simple Types | notes scribbles | A5 out |
October 14 | Proving Type Soundness | slides notes scribbles | |
October 17 | Normalization | slides notes slides+ scribbles | |
October 19 | Advanced Types | slides notes | A5 due; A6 out |
October 21 | Polymorphism | slides notes | |
October 24 | Guest lecture: Yaron Minsky, Jane Street. "GADTs for Speed Demons" |
October 26 | Type Inference | slides notes slides+ | A6 due; A7 out |
October 28 | Compiling with Continuations | slides notes slides+ | |
October 31 | Records and Subtyping | slides notes slides+ | |
November 2 | Existential Types | slides notes | A7 due; A8 out |
November 4 | Recursive Types | slides notes | |
November 7 | Propositions as Types | slides notes | |
November 9 | Featherweight Java | slides notes slides+ | A8 due |
November 11 | Featherweight Java Properties | slides notes slides+ scribbles | |
November 14 | Concurrency and Parallelism | slides code | |
November 16 | Preliminary Exam II |
November 18 | Exam Debrief | | |
November 21 | Shared-Memory Parallelism | slides code | |
November 23 | No class (Thanksgiving) |
November 25 | No class (Thanksgiving) |
November 28 | Probabilistic Programming | slides notes code | A9 out |
November 30 | Approximate Computing | slides paper | |
December 2 | Victory Lap | slides | A9 due |