| Date | Topic | Slides & examples | Supplementary notes |
| Tue, May 29 | 1. Course introduction | slides (PDF, 6up) | history & overview (PDF, 6up) |
| Tue, May 29 | 2. Introduction to OCaml | slides (PDF, 6up), code (intro.ml) | SML & OCaml quick feature reference, OCaml manual |
| Thu, May 31 | 3. Recursion patterns | slides (PDF, 6up) | foldl.com, foldr.com, OCaml List module docs, transcript of terminal session |
| Thu, May 31 | 4. Higher order functions | slides (PDF, 6up) | more on reverse, fold & map (PDF) |
| Mon, June 4 | 5. User-defined types | slides (PDF, 6up) | UDTs extended example (PDF, OCaml code), Option example (PDF, OCaml code), OCaml manual: Type expressions, Type and exception definitions |
| Mon, June 4 | 6. Overview of type systems | slides (PDF, 6up) | "Type Systems" by Luca Cardelli (long—just browse/skim through it) |
| Tue, June 5 | 7. Type derivations | slides (PDF, 6up) | notes on linear types, "Linear Types Can Change the World!" by Philip Wadler |
| Thu, June 7 | 8. Type checking | slides (PDF, 6up), monomorphic type checker (tc.ml) | terminal transcript, incomplete polymorphic type checker, poly-notes.txt |
| Mon, June 11 | 9. Unification | slides (PDF, 6up) |
| Tue, June 12 | 10. Type inference & Unification | slides (PDF, 6up) | examples from class |
| Thu, June 14 | 11. Regexps, DFAs & NFAs | slides (PDF, 6up) | Wikipedia article on regular expressions |
| Thu, June 14 | 12. Converting NFAs to DFAs | slides (PDF, 6up) | |
| Thu, June 14 | 13. Lexing & ocamllex | slides (PDF, 6up) | test.mll, overview of ocamllex, ocamllex tutorial |
| Mon, June 18 | 14. Derivatives of regular expressions & DFA minimization | slides (PDF, 6up) | "Derivatives of Regular Expressions" by J.A. Brzozowski, slides on DFA minimization, deriv-re-notes.txt and parsing-notes.txt from class |
| Tue, June 19 | 15. Grammars | slides (PDF, 6up) | |
| Tue, June 19 | 16. LL Parsing | slides (PDF, 6up) | examples from class |
| Thu, June 21 | 17. LR Parsing | slides (PDF, 6up) | expr.ml, exprlex.mll, exprparse.mly |
| Mon, June 25 | 18. Writing and Disambiguating Grammars | rpcalc.mly, lexer.mll, main.ml, Makefile, exn.ml, dangling-else.txt, nonstandardparen.txt | ocamlyacc tutorial, midterm topics |
| Tue, June 26 | 19. LR item sets | see video | wiki:LR parser |
| Tue, July 3 | 20. Lambda calculus | lectures notes (PDF, LaTeX), outline, summer 2006 slides (PDF, 6up) | "A Tutorial Introduction to the Lambda Calculus" by Raul Rojas, wiki:Lambda calculus |
| Thu, July 5 | 21. Transition Semantics | slides (PDF, 6up) |
| Mon, July 9 | 22. Names and Variables | slides (PDF, 6up) |
| Mon, July 9 | 23. Natural Semantics | slides (PDF, 6up) |
| Tue, July 10 | 24. Lambda Calculus & Imperative Language Interpreters via Natural Semantics | eval.ml, eval-imp.ml |
| Thu, July 12 | 25. Soundness & Termination of the Simply-Typed Lambda Calculus | informal proof sketch: termination of simply-typed lambda expressions (PDF) |
| Mon, July 16 | 26. Control flow & Continuation Passing Style | slides (PDF, 6up) |
| Tue, July 17 | 27. CPS transform & code generation, SSA | slides (PDF, 6up) |
| Thu, July 19 | 28. Code generation & optimization with GCC | code exaples |
| CPS & control flow | |
| Data abstraction | |
| Object-oriented languages | |
| Concurrency | |
|