Topics, roughly 1 week each:
Abstract syntax and operational semantics
First-class functions; continuations; functional programming with lists (two weeks)
Functional programming with algebraic data types and static types (in ML)
Type systems and parametric polymorphism
Cultural enrichment: Haskell, laziness, and automated testing
ML type inference
Lambda calculus; small-step semantics
Denotational semantics; definitional interpreters
Data abstraction
Object-orientation and inheritance
Modules
Logic programming
There will probably be some bonus content, but I'm not sure what or when.
The midterm exam will be the week of March 7, probably spread over two classes.