Skip to main content



Lecture Notes

The notes linked below are required reading, but they are not a substitute for attending lecture and recitation. The lectures and recitation sections are tightly coupled: Lectures will assume knowledge from previous sections, and vice-versa. These notes should be read sequentially (Monday's section, Tuesday's lecture, Wednesday's section, Thursday's lecture, etc.).

Lecture topics and assignment due dates are subject to change.

DATE EVENT TOPIC LINKS
01/26 Lecture 1 Introduction to Functional Programming with Types [Notes
01/31 Lecture 2 OCaml Syntax and Semantics [Notes] [Resource 1] [Resource 2
02/02 Lecture 3 Evaluation Continued and the OCaml Type System [Notes
02/07 Lecture 4 More OCaml Types [Notes] [Resource
02/08 PS1 due Tuesday the 14th at 11:59 PM [PS1] [Release code
02/09 Lecture 5 Still More OCaml Types [Notes
02/14 Lecture 6 Building on Problem Set 1 [Notes
02/16 Lecture 7 Specifications Using Types [Notes
02/23 Lecture 8 Specifications Continued [Notes
02/24 PS2 due Tuesday the 2nd at 11:59 PM [PS2] [Release code
02/28 Lecture 9 Inductive Proofs of Specifications [Notes
03/02 Lecture 10 A Module for Rational Numbers [Notes
03/02 PS3 due Thursday the 16th at 11:59 PM [PS3] [Release code
03/07 Lecture 11 Constructive Real Numbers [Notes] [Reading on Real Numbers] [Bishop & Bridges, Constructive Analysis
03/02 Course Resources [Resources
03/09 Lecture 12 Constructive Real Numbers Continued [Notes] [Extended Reading From Bishop
03/21 Lecture 13 Constructive Real Numbers as an Introduction to Geometry [Notes
03/23 Lecture 14 Computational Geometry and Convex Hulls [Notes
03/28 Lecture 15 Constructive Synthetic Geometry [Notes] [CS Article in the Atlantic: How Aristotle Invented the Computer
03/30 Lecture 16 Synthetic Geometry and Logic in Computer Science [Notes
04/11 Lecture 17 Guest Lecture on Constructive Synthetic Geometry [Presentation
04/13 Lecture 18 Binary Search Trees [Notes
04/18 Lecture 19 Binary Search Trees Continued [Notes
04/20 Lecture 20 Streams, Choice Sequences, and Continuity [Notes] [Reading on Brouwer's proof of the bar theorem] [Reading on the domains of definition of functions
04/25 Lecture 21 Distributed Computing with Functional Processes [Notes
04/27 Lecture 22 Distributed Computing with Functional Processes continued [Notes] [Formal Specification, Verification, and Implementation of Fault-Tolerant Systems
05/02 Lecture 23 Fixed Point Operators [Notes
05/04 Lecture 24 Computability Theory in OCaml [Notes
05/09 Lecture 25 Course Review and Final Exam Coverage [Notes