OCaml and Functional Programming

Programming assignments for this course use the OCaml language. Here are some instructions for installing OCaml. (In contrast with that guide, I recommend Homebrew on macOS: just type brew install ocaml.)

If you are already familiar with another functional programming language, OCaml will be quick to pick up. If you’re new to functional programming, however, you might want to spend some time at the beginning of the semester getting up to speed. Here are some resources for learning OCaml:

Textbooks You Might Like

There are no required textbooks, but if you find yourself wanting extra background, you might find these textbooks helpful:

And here are a couple of good online textbooks that are relevant to the course:


We’ve made an experimental web-based tool, called LambdaLab, to help you learn the λ-calculus. You can type in terms to reduce them, and you can define and use encodings. It’s open source and on GitHub, and contributions are welcome.

Extra Background

Here are some well-written materials on standard PL topics:


There are many options for typesetting inference rules and derivation rules in LaTeX. We recommend mathpartir, which is included with most TeX distributions.