• Real World OCaml, by Yaron Minsky, Anil Madhavapeddy and Jason Hickey. The book is freely available at dev.realworldocaml.org.
  • Functional Programming in OCaml, Cornell CS3110 textbook. Freely available here.



Lambda Calculus

  • Types and Programming Languages (TAPL), by Benjamin Pierce.
  • Peter Selinger’s lecture notes on lambda calculus available here.


  • Programming Languages, Concepts and Constructs, 2nd edition, by Ravi Sethi. Chapter 11.


  • The Art of Prolog, 2nd edition, Advanced Programming Techniques, by Leon Sterling and Ehud Y. Shapiro. Available for free here.



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. Docker is a free software and is supported on all major platforms. The installation instructions for Docker is available here. The instructions for running the Jupyter notebooks is here.


OCaml installation instructions are covered in the Real World OCaml book. I would recommend installing OPAM (OCaml Package Manager) with instructions from the opam website and switching to OCaml version 4.07.1.


SWI-Prolog installation instructions are here.

CS3100 Virtual Box Disk Image

An Ubuntu virtual box disk image (VDI) with the jupyter notebook is available here. The password is cs3100. The course git repo has been cloned under cs3100 in the home directory.