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 |