1. Intro, motivation, simple imperative language (MP4)

2. Refresher on semantics, lambda calculus, and types

3. Simple type system for an imperative language

4. Basic properties of these models

5. Data types, evaluation contexts, evaluation order

6. Deeper dive into lambda calculus, data via functions

7. Term representation, simply typed lambda calculus

8. Church/Curry-style formulation, quantification

9. Hindley-Milner type system, type inference

10. Adding functions to an imperative language

11. Advanced type systems - bonus topic

12. Practical applications - bonus topic