Date | Topic | Extra Notes | Homework |
Introduction |
Jan 6 | Sets, relations, and languages | code , how to run | Course notes: exercises 1.x |
Jan 8 | Class cancelled | | |
Jan 10 | Class cancelled | | |
Jan 13 | Structural induction | | Course notes: exercises 2.1-2.3 |
Jan 15 | Diamond property | | Course notes: exercises 2.4, 2.6 |
Lambda calculus |
Jan 17 | Lambda calculus | Gordon | Course notes: exercises 4.1-4.2 |
Jan 20 | Holiday | | |
Jan 22 | Church numerals | | Course notes: exercises 4.4, 4.5, 4.9, 4.10 |
Jan 24 | Recursion | | Course notes: exercises 4.13-4.14 |
Jan 27 | ISWIM | | Course notes: exercises 5.1-5.2 |
Jan 29 | Observational equivalence | lc.ss, iswim.ss | Course notes: exercises 5.6 |
Jan 31 | Standard reduction | | Course notes: exercises 6.1-6.2 |
Machines, and modelling realistic languages |
Feb 3 | CC | | Course notes: exercises 7.1 |
Feb 5 | Implementing CC | Teach Yourself Scheme | Course notes: exercises 6.1, CC |
Feb 7 | SCC, CK | scc.scm | CK |
Feb 10 | CEK | | CEK |
Feb 12 | SECD, tail recusion | | none |
Feb 14 | Continuations | | Course notes: exercises 8.3-8.5 |
Feb 17 | Holiday | | |
Feb 19 | Continuation-passing style | notes | Notes: exercise 3.1 |
Feb 21 | Class cancelled | | |
Feb 24 | Robby Findler talk | Contracts | |
Feb 26 | State, CS | | none |
Feb 28 | CEKS, garbage collection | | Mid-term exam |
Types |
Mar 3 | Typed Arithmetic | | Course notes: exercises 11.1, 11.6 |
Mar 5 | Simply Typed ISWIM | | Course notes: exercises 12.1, 12.2 |
Mar 7 | Strong Normalization | | Course notes: exercises 12.3 |
Mar 10 | More typed lambda calculi | | Course notes: exercises 13.1-13.3 |
Mar 12 | Polymorphism | | Course notes: exercises 14.1 |
Mar 14 | Recursive and existential types | | none |
Mar 17 | Spring Break | | |
Mar 19 | Spring Break | | |
Mar 21 | Spring Break | | |
Mar 24 | Type inference | | Course notes: exercises 15.1, 15.2 |
Mar 26 | ML | tutorial, demo | ML |
Mar 28 | Subtyping | | none |
Project |
Mar 31 | Project Intro | suggested papers | |
Apr 2 | MiniJava part I | minijava.ss, red-sem.plt | pick a paper and grammar |
Apr 4 | Class cancelled | | |
Apr 7 | MiniJava part II | minijava-run.ss, minijava-test.ss | implement reduction rules |
Apr 9 | Class cancelled | | |
Apr 11 | MiniJava part III | minijava-check.ss | implement type checker |
Apr 14 | Appointments | | |
Apr 16 | Appointments | | |
Apr 18 | Project wrap-up | minijava-explore.ss | |
Denotational semantics |
Apr 21 | Denotational semantics | notes | Lecture notes: exercise 4 |
Apr 23 | Domain theory | notes | |