| Part 1: Standard ML and Functional Programming | |||
| 1/22 | Introduction | A 1 | |
| 1/27 | Standard ML and Datatypes | R 1 | |
| 1/29 | First-Class Functions | A 2 | |
| Part 2: Implementing a Programming Language | |||
| 2/3 | Concrete and Abstract Syntax | R 2 | |
| 2/5 | Lexing and Parsing | A 3 | |
| 2/10 | Top-down Parsing | R 3 | |
| 2/12 | Parsing Concluded | A 4 | |
| 2/17 | Interpreters | R 4 | |
| 2/19 | Interpreters, Continued | A 5 | |
| 2/24 | State and Assignment | R 5 | |
| 2/26 | Parameters and Scope | A 6 | |
| Part 3: Types | |||
| 3/3 | Types | R 6 | |
| 3/5 | Subtypes | A 7 | |
| 3/10 | Polymorphism | R 7 | |
| 3/12 | Abstraction | [Take-Home Midterm] | |
| Spring Break | |||
| Part 4: Other Language Designs | |||
| 3/24 | Classes | ||
| 3/26 | Objects | A 8 | |
| 3/31 | Other Paradigms | R 8 | |
| 4/2 | Language Design Principles | A 9 | |
| Part 5: Formal Semantics | |||
| 4/7 | Lambda Calculus | R 9 | |
| 4/9 | Lambda Calculus Encodings | ||
| 4/14 | Fixed Points | ||
| 4/16 | Semantics | ||
| 4/21 | Type Safety | R 10 | |
| 4/23 | Type Safety, Continued | Project Draft Due | |
| 4/28 | TBA | ||
| 4/30 | TBA | Final Project Due | |