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