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
Introduction to Functional Programming
08/29 Lecture 1 Introduction to OCaml syntax and evaluation [Notes
08/29 PS 1 issued [PS 1
09/02 Labor Day
09/03 Lecture 2 Evaluation of Expressions, Types, Recursion [Notes
09/04 Recitation 1 OCaml syntax, higher-order functions, option types [Notes] [Code
09/05 Lecture 3 Induction and Recursion [Notes
09/05 PS1 due at 11:59PM; PS2 issued [PS2
09/09 Recitation 2
09/10 Lecture 4 Lists, unions, map, fold, specification issues [Notes
09/11 Recitation 3 Folding [Notes] [Code
Data Types and Structures
09/12 Lecture 5 Recursive Types, Polymorphic Recursive Types, Implementing Map and Fold [Notes
09/16 Recitation 4
09/17 Lecture 6 Proving properties of lists, Introduction to search trees [Notes
09/18 Recitation 5
09/19 Lecture 7 Red-Black Trees [Notes
09/19 PS2 due at 11:59PM; PS3 issued [PS3
09/23 Recitation 6
09/24 Lecture 8 Red-Black Trees continued [Notes
09/25 Recitation 7
09/26 Lecture 9 Environment model [Notes
09/30 Recitation 8
10/01 Lecture 10 The Type of Rational Numbers (in OCaml and Mathematics) [Notes] [Formal proofs
10/02 Recitation 9
10/03 Lecture 11 The Computable Real Numbers [Notes] [Constructive Analysis Ch.2
10/03 PS3 due at 11:59PM; PS4 issued [PS4
10/07 Recitation 10
10/08 Lecture 12 Modules and Functors [Notes(1)] [Notes(2)
10/09 Recitation 11
10/10 Lecture 13 Modules, Functors, Reals [Notes
10/10 Prelim I, Phillips 101 + Phillips 203 + Phillips 219, 7:30pm
10/14 - 10/15 Fall Break
10/16 Recitation 12
Specification and Verification
10/17 Lecture 14 Proof Assistants, by Dr. Vincent Rahli [Notes] [Proof 1] [Proof 2
10/21 Recitation 13
10/22 Lecture 15 Specification Languages [Notes
10/23 Recitation 14
10/24 Lecture 16 Specifications and dependent types [Notes
10/24 PS4 due; PS5 issued
10/28 Recitation 15
10/29 Lecture 17 Specification with Dependent Types [Notes
10/30 Recitation 16
Analysis of Algorithms
10/31 Lecture 18 Computing with Dependent Types [Notes
11/04 Recitation 17
11/05 Lecture 19 Computational Complexity and Recursion [Notes
11/06 Recitation 18
11/07 Lecture 20 Asymptotic Complexity, lecture by Mike George (see comments at the start of Lecture 21) [Notes 1] [Notes 2
11/11 Recitation 19
Concurrency
11/12 Lecture 21 Unsolvable Specifications [Notes
11/13 Recitation 20
11/14 Lecture 22 Concurrency, lecture by Dr. Robbert van Renesse [Notes 1] [Notes 2
11/14 PS5 due at 11:59PM; PS6 issued [PS6
11/18 Recitation 21
11/19 Lecture 23 Prelim Review [Notes
11/20 Recitation 22
Other Topics
11/21 Lecture 24 Types as Propositions [Notes
11/21 Prelim II, 7:30pm - see Piazza for room assignments
11/25 Recitation 23
11/26 Lecture 25 OCaml SL as a Basis for Math and Logic [Notes
11/27 - 11/28 Thanksgiving Break
12/02 Recitation 24
12/03 Lecture 26 Review of Course [Notes
12/04 Recitation 25
12/05 Lecture 27 Guest lecture by Yaron Minsky (Jane Street) [Slides
12/06 PS6 due [PS6
12/11 Final Exam, 7:00 PM
12/14 The 3110 Tournament, Phillips 101, 6:30pm