Resources
Software
The course comes with a handy docker image which contains the necessary software to run OCaml, SWI-Prolog and the Jupyter notebooks, primarily through which the course is taught. The instructions for running the Jupyter notebooks is here.
Docker
Docker is a free software and is supported on all major platforms. The installation instructions for Docker is available here.
CS3100 Virtual Box Disk Image
If the Docker setup does not work for you for some reason, then an Ubuntu
virtual box disk image (VDI) with the jupyter notebook is available
here.
The password is cs3100_m20
. The course git repo has been cloned under
cs3100_m20
in the home directory. As you go through the course, you will have
to do git pull
in the cs3100_m20
directory to get the latest updates from
upstream.
OCaml
My recommendation is to use the Jupyter notebook for the class and not install OCaml on your host machine. If you still want to, I would recommend installing OCaml through the OPAM package manager. The installation instructions for OPAM is here.
SWI-Prolog
SWI-Prolog installation instructions are here.
Learning
OCaml
Recommended
- Functional Programming in OCaml, Cornell CS3110 textbook. Freely available here.
- Real World OCaml, by Yaron Minsky, Anil Madhavapeddy and Jason Hickey. The book is freely available at dev.realworldocaml.org.
References
Practice
Lambda Calculus
Recommended
- Types and Programming Languages (TAPL), by Benjamin Pierce.
- Peter Selinger’s lecture notes on lambda calculus available here.
Prolog
Recommended
- Programming Languages, Concepts and Constructs, 2nd edition, by Ravi Sethi. Chapter 11.
References
- The Art of Prolog, 2nd edition, Advanced Programming Techniques, by Leon Sterling and Ehud Y. Shapiro. Available for free here.