This course is about functional programming, emphasizing functional-programming skills and techniques that apply to all programming languages. Roughly one-third of the course meetings provide a conventional lecture; in the remaining meetings, we study example programs written and presented by students who are taking the course.
| Jan 6: | Course setup; HtDP; alt HtDP |
| Triple Town; assignment |
| Jan 8: | No meeting |
| Jan 13: | Triple Town boards: Kyle, Eric, Devin, and Leif |
| Jan 15: | Triple Town boards: Sarah, Matt, Sriraam, Xiangqi |
| Jan 20: | Holiday |
| Our Triple Town rules |
| Jan 22: | Triple Town moves: Grace, Matthew |
| replace.rkt |
| Jan 27: | Triple Town moves: Thomas, Srikanth, Ankit |
| Jan 29: | Abstraction; slides |
| Feb 3: | Triple Town moves: Marko, Mengyang, Yangtian |
| Due: Triple Town move programs |
| Feb 5: | Concurrency in the style of Concurrent ML; nodes/code |
| Triple Town player protocol |
| Feb 10: | Initial Triple Town player server: Devin, Leif, Thomas |
| Feb 12: | Recursion, loops, stacks, tail calls, and space safety; slides |
| Feb 17: | Holiday |
| Feb 19: | Initial Triple Town player AI: Kyle, Matt, Sarah |
| Triple Town player driver: tt.zip |
| Feb 24: | Triple Town player AI: Srikanth, Marko, Yangtian |
| Feb 26: | Closure compilation; clos-comp; Feeley87 |
| Mar 3: | Continuation-passing style; success-fail-k |
| Sudoku assignment |
| Due: Triple Town players |
| Mar 5: | Continuations; slides; server.rkt |
| Mar 17: | Sudoku solvers: Kyle, Thomas |
| Mar 19: | Project plans |
| Due: Sudoku solvers |
| Mar 24: | Purely functional data structures; Okasaki96; avl.rkt; queue.rkt |
| Mar 26: | Monads; monad.rkt |
| Mar 31: | Initial project reports: Sarah, Leif |
| Apr 2: | Delimlited continuations; slides |
| Apr 7: | No meeting (Lazowska rountable in LCR) |
| Apr 9: | Scribble |
| Apr 14: | Project reports: Ankit, Kyle, Eric, Devin |
| Apr 16: | Project reports: Grace, Marko |
| Apr 21: | Project reports: Xiangqi, Thomas |
| Apr 23: | Project reports: Sriraam, Mengyang, Matt, Yangtian |
| Due: final project |