COMP 150—Applied Functional Programming: Distributed Revision Control
Fall 2012

Time: MW 1:30–3:30 (two hours, not a misprint)
Place: Halligan 106
Home page:
Instructor: Norman Ramsey, Halligan Extension 006


Distributed revision-control systems, such as git, Mercurial, bzr, and darcs, have become very popular. But it's hard to tell exactly what they do. In this class, we'll apply techniques from functional programming—algebraic laws, equational reasoning, immutable data structures, and first-class functions—to the problems of building and understanding revision-control systems.

A typical class period will be 2 hours:

Class will begin with two to four weeks of advanced functional-programming technique, and it will continue with papers about the foundations of maintaining views of source code and other resources that evolve over time. Around the middle of the term we will shift our attention entirely to students' projects.

Each student is expected to undertake one project for the semester. Projects may be undertaken alone or in teams of any size. Any project loosely related to functional programming and source-code control is acceptable. Ideas might include

Grades will be based entirely on class participation and on a contribution to an engaging project. There will be no examinations, no graded homeworks, and no graded problem sets. (There may be a few ungraded problems to be done outside of class.)


We have available
Back to Norman Ramsey's home page