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 |