| Date | Topic | Handout | Homework | |
| 1/17 | Course intro, Introductory SML | slides | ||
| 1/22 | Core SML, Running SML/NJ | slides | ||
| 1/24 | First-Class Functions | slides | SML Programming | [Sample Solution] |
| 1/29 | Modules | slides | ||
| 1/31 | Concrete and Abstract Syntax | slides | Sets and Modules, assign2.sml | [Sample Solution] |
| 2/5 | Introduction to Formal Semantics | slides | ||
| 2/7 | More Formal Semantics | slides | Formal Semantics, code.sty, 3.tex | [Sample Solution] |
| 2/12 | Type Safety | slides | ||
| 2/14 | Type Safety Continued | Mini-ML | Adding Pairs | [Sample Solution] |
| 2/19 | Variables and Definitions | slides | ||
| 2/21 | Exceptions | slides | Interpreters: assign5.sml, assign5-tests.sml | [Sample Solution] |
| 2/26 | Continuations | source code | ||
| 2/28 | Continuations and Coroutines | slides | Continuations: assign6.sml | [Sample Solution] |
| 3/5 | Aliasing and References | slides | ||
| 3/7 | Video: "Growing a Language" | transcript | ||
| 3/12 | NO CLASS | |||
| 3/14 | NO CLASS | |||
| 3/19 | Nondeterminism | slides | ||
| 3/21 | Code Reuse and Polymorphism | slides | Assignment 7 | [Sample Solution] |
| 3/26 | Subtyping and Subsumption | slides | ||
| 3/28 | Objects and Classes | slides | Implementing Subtyping: setup8.sml, assign8.sml, assign8-tests.sml, | [Sample Solution] |
| 4/2 | Lambda Calculus | slides | ||
| 4/4 | More Lambda Calculus | slides | Lambda Calculus | [Sample Solution] |
| 4/9 | Lambda Calculus Properties | slides | ||
| 4/11 | Typed Lambda Calculus and Logic | slides | Implementing Theory: assign10.sml | [Sample Solution] |
| 4/16 | Parameters, Delayed Computations | slides | ||
| 4/18 | Streams | slides | Streams: stream.sml, assign11.sml | [Sample Solution] |
| 4/23 | NO CLASS | |||
| 4/25 | NO CLASS | |||
| 4/30 | TBA | |||
| 5/2 | TBA | |||
| 5/9 | FINAL: 8am, JA B132 |