Notes for COS 326

These pages contain some notes for various topics taught in COS 326 at Princeton University. The goal is not to provide a manual for O'Caml. If you want to know all about the specifics of O'Caml, see some of the links on the COS 326 resources page. Instead, the idea is to capture some of the key concepts, algorithms, design patterns, abstractions, and reasoning principles that functional programmers use. The notes do explain these ideas using concrete O'Caml syntax, but many of the ideas translate to other functional and non-functional languages.

Almost all of the ideas in these notes come from other people. In particular, I have discussed curriculum and studied notes from courses taught by the following people: Guy Blelloch (CMU), Kathleen Fisher (Tufts), Nate Foster (Cornell), Bob Harper (CMU), Dexter Kozen (Cornell), Ranjit Jhala (UCSD), Greg Morrisett (Harvard), Andrew Myers (Cornell), Benjamin Pierce (UPenn), Stephanie Weirich (UPenn) and Steve Zdancewic (UPenn).

See the sidebar for a list of topics.