Resources
Text books
A number of excellent books and on-line resources overlap with the course's content and can provide alternate explanations despite differences in notation and approach. Let the instructor know if you have trouble finding the intersection between these resources and the course content.
- "Types and Programming Languages" by Benjamin C. Pierce, MIT Press, 2002.
Available on reserve at the library. - "Practical Foundations for Programming Languages" by Robert Harper, Cambridge University Press, 2013.
Draft available on Harper's website. - "Concepts in Programming Languages" by John C. Mitchell, Cambridge University Press, 2003.
Available online through Harvard University Libraries eContent Collection. To view on a Mac, follow these instructions. - "The Formal Semantics of Programming Languages" by Glynn Winskel, MIT Press, 1993.
Available on reserve at the library. - "Programming Languages: Application and Interpretation" by Shriram Krishnamurthi.
There are two editions, both available on the author's website: http://www.cs.brown.edu/~sk/Publications/Books/ProgLangs/.
OCaml resources
- Installation: https://ocaml.org/docs/install.html
- Tools: https://github.com/realworldocaml/book/wiki/Installation-Instructions
This link gives instructions for installing things like Tuareg (a useful emacs mode) and Merlin (advanced IDE features)
Installing Tuareg is pretty simple and will make your OCaml coding experience a lot nicer (though it's of course not necessary). Merlin is probably overkill unless you know what you're doing.
- Learning:
- Standard library documentation: http://caml.inria.fr/pub/docs/manual-ocaml/libref/index.html
The following documentation may be particularly useful as you work on your assignments.
- Everything you need to know and more: http://caml.inria.fr/pub/docs/manual-ocaml/index.html
- Code examples: http://ocaml.org/learn/tutorials/99problems.html
- Standard library documentation: http://caml.inria.fr/pub/docs/manual-ocaml/libref/index.html
See also the CS 51 Resources web page for OCaml books, references, and tutorials.
Haskell resources
- Download The Haskell Platform
- List of Haskell tutorials. If you want to get more meta, see How to Learn Haskell.
- haskell.org contains lots of reference information, language specification, etc.
CML resources
- CML is part of the SML/NJ distribution, available at http://www.smlnj.org/. Download and install SML/NJ.
A simple way to install SML/NJ is using your system's package manager:
- Under Max OS X, using Homebrew (http://brew.sh): brew install smlnj
- Under Debian/Ubuntu: apt-get install smlnj libcml-smlnj libcmlutil-smlnj libsmlnj-smlnj ml-ulex ml-yacc
- Concurrent ML home page, including a useful FAQ.
- Library documentation:
- The SML/NJ Basis library manual pages: http://sml-family.org/Basis/manpages.html
- Documentation on CML channels: http://cml.cs.uchicago.edu/pages/cml.html
- Differences between SML/CML and OCaml:
- A comparison of syntax: https://www.mpi-sws.org/~rossberg/sml-vs-ocaml.html
- A more general comparison: http://adam.chlipala.net/mlcomp/