*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 | |