CS 5965 – Functional Programming Studio

Spring 2016

Monday and Wednesday, 11:50am-1:10pm, WEB 1460



Matthew Flatt

Office Hours:


by appointment (send e-mail)

For general information, see the Course Description below.


Jan 11


Introductions; Sudoku Solver

Jan 13-27


Sudoku solvers, clients, and servers

Feb 1


Recursion, loops, stacks, tail calls, and space safety

Feb 3


Sudoku code reviews; Dominion Protocol v1

Feb 8


Monads [Sarah]

Feb 10


Lenses [William H.]

Feb 17


Initial dominion players; example v1 implementation

Feb 22


Closure compilation; see also Feely87

Feb 24


Dominion players; Dominion Protocol v2

Feb 29


Concurrent ML; see also references

Mar 2


Dominion code reviews; example v2 implementation

Mar 7


Functional data structures: Okasaki96; queues; AVL trees; HAMTs

Mar 9


Dominion v2 players; Dominion Protocol v3

Mar 21


JavaScript promises [Zef]; example v3 implementation

Mar 28


Delimited continuations; see also Flatt07

Apr 4


Scribble as a DSL

Apr 11


Project reports: Annie, Victor

Apr 13


Project reports: Erich, Kyle, William S., Chris

Apr 18


Project reports: Andrew, Dan, Sarah, Tobin

Apr 20


Thesis report: Dan; project reports: Zef, William H.

Apr 25


Project reports: Nick, Guannan, Tim, Pierce, Sam

Course Description

This programming course is intended for students who have taken a programming-languages course and who are interested in gaining more experience with functional-programming languages and techniques.

There are no lectures or exams for the course. Students are graded on the completion of open-ended coding assignments and, equally importantly, class participation. Class participation includes presenting programs and discussing the presented work of other students.

Students may use any functional programming language for completing assignments, and diversity of language choices will be encouraged. Suitable functional languages include (but are not limited to) Racket, Haskell, Scala, OCaml, F#, SML, Erlang, Clojure, Common Lisp, Agda, Idris, and Elm.

Student Code and Academic Guidelines

All students are expected to follow the University’s student code. See also the College of Engineering’s academic guidelines.