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:
- Try OCaml is a tutorial you can follow in your browser.
- The CS 3110 tutorial is accessible and thorough.
- The book Real World OCaml is fantastic and free to read online.
Textbooks You Might Like
There are no required textbooks, but if you find yourself wanting extra background, you might find these textbooks helpful:
- The Formal Semantics of Programming Languages by Glynn Winskel.
- Types and Programming Languages by Benjamin C. Pierce.
And here are a couple of good online textbooks that are relevant to the course:
- Programming Languages: Application and Interpretation by Shriram Krishnamurthi.
- Software Foundations by Benjamin C. Pierce and a supporting cast.
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.
Here are some well-written materials on standard PL topics:
- For a self-contained overview of structural induction, see some notes by John A. Thywissen for a class at UT Austin.
- For an overview of notation for inference rules, semantics, and types, see this crash-course blog post by Jeremy Siek.
There are many options for typesetting inference rules and derivation rules in LaTeX. We recommend mathpartir, which is included with most TeX distributions.