Mon, Wed, 3:20 - 5:25 pm. Hunter North 1516.
Office hours: after the class or by appointment.
Instructor: Alexey Nikolaev
Website: https://a-nikolaev.github.io/fp/
Syllabus: PDF
Email: a(my last name)@gradcenter.cuny.edu
Office: HN 1000C
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)
– Real World OCaml 2nd Edition (in progress)
Online documentation for OCaml:
– OCaml.org, 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)
Theoretical background, lambda calculus:
– Introduction to Functional Programming, John Harrison (1999)
– Foundations of Functional Programming, Lawrence C Paulson (2000)
– Video lectures by Frank Pfenning on Basic Proof Theory,
discussing the relation between programs and proofs (2015)