This course is about functional programming, emphasizing programming skills for functional languages and techniques.
| Jan 10: | How to design programs; slides | 
| Jan 12: | How to design programs; slides; HW 1 | 
| Jan 14: | How to design programs; Gobblet; HW 2 | 
| Jan 17: | Holiday | 
| Jan 19: | Function abstraction; slides | 
| Jan 21-Feb 2: | Gobblet presentations | 
| Feb 4: | Continuation-passing style; cps.ss | 
| Feb 7: | Initial GUI presentations | 
| Feb 9: | Functional drawing; Slideshow paper software & examples | 
| Feb 11: | More GUI presentations | 
| Feb 14: | Concurrent ML; refs | 
| Feb 16: | GUI conclusions; notes | 
| Feb 18: | Compiling an interpreter | 
| Feb 21: | Holiday | 
| Feb 23: | Project descriptions | 
| Feb 25: | Class cancelled | 
| Feb 28: | Macros | 
| Mar 2-4: | Project reports | 
| Mar 7: | Purely functional data structures; queue.ml | 
| Mar 9: | FP, OOP, and the extensibility problem | 
| Mar 11: | Project reports | 
| Mar 14-18: | Spring break | 
| Mar 21: | Contracts | 
| Mar 23: | Continuations; explore.ss; server.ss | 
| Mar 25-28: | Project reports | 
| Mar 30: | Monads | 
| Apr 1: | Class cancelled | 
| Apr 4: | Types and inference | 
| Apr 6-8: | Project reports | 
| Apr 11: | Server project planning | 
| Apr 13: | Class cancelled | 
| Apr 15: | Tail calls and space safety; Proper Tail Recursion and Space Efficiency, Compiling with Continuations | 
| Apr 18-20: | Server project reports | 
| Apr 22: | Modules, components, and language extension; macros and phases | 
| Apr 25: | Course summary (instructor) | 
| Apr 27: | Final project reports and course summary (students) |