Notes for COS 326

These pages contain some notes by David Walker for various topics taught in COS 326 at Princeton University. The goal is not to provide a manual for OCaml. If you want to know all about the specifics of OCaml, see some of the links under Resources on the left sidebar. 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 OCaml 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, these notes and curriculum ideas come from discussions with 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.