Functional Programming in OCaml, CSCI 49201

General information

Mon, Wed, 3:20 - 5:25 pm. Hunter North 1516.
Office hours: after the class or by appointment.

Instructor: Alexey Nikolaev
Syllabus: PDF
Email: a(my last name)
Office: HN 1000C

Lecture notes


Information about projects


This is a practical hands-on course on functional programming using OCaml. The goals of the course are: to help you learn the functional programming paradigm, and more broadly, to improve your ability to learn any new technology or programming language, which will make you a better programmer and computer scientist.

We will be solving programming problems in class, in groups and individually. Small homework assigned every class for better material retention. A project in the second half of the semester, in which you will be implementing a program or tool of your choice using functional programming principles. A final exam at the end of the semester.



Main text:
Functional Programming in OCaml, Cornell CS 3110 textbook (2019)

Supplementary reading on OCaml:
Jason Hickey, Introduction to OCaml (2008) pdf
Real World OCaml 2nd Edition (in progress)

Online documentation for OCaml:, the official community website
– Module Pervasives of the standard library
Reference manual
Github/Awesome-OCaml, a curated collection of OCaml tools and libraries

Functional programming:
Structure and Interpretation of Computer Programs, video lectures of the classical course on functional programming from MIT (the text of the book) (1986) video

Theoretical background, lambda calculus:
Introduction to Functional Programming, John Harrison (1999) pdf
Foundations of Functional Programming, Lawrence C Paulson (2000) pdf
– Video lectures by Frank Pfenning on Basic Proof Theory, discussing the relation between programs and proofs (2015) video

Tentative schedule