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
1/22 Lecture 1 Course overview and background on OCaml [Notes
1/22 OCaml demo 7:30–9:30pm Upson B7
1/23 PS 1 issued [PS 1
1/23 Recitation 1 Introduction to OCaml syntax [Notes] [Slides
1/24 OCaml demo 7:30–9:30pm Upson B7
1/24 Lecture 2 OCaml syntax and evaluation [Notes
1/24 LaTeX demo 7:30–9:30pm Upson B7
1/28 Recitation 2 Tuples, records, and pattern matching [Notes] [Code
1/29 Lecture 3 Scoping, currying, and lists [Notes] [Code
1/30 Recitation 3 Higher-order functions, anonymous functions, currying, side effects, printing, exceptions [Notes
1/31 Lecture 4 Variants, recursive types, and polymorphism [Notes] [Code
1/31 PS1 due at 11:59PM; PS2 issued [PS2
2/4 Recitation 4 Pattern-matching pitfalls, more parametrized types [Notes
2/5 Lecture 5 Map, fold, and the map-reduce paradigm [Notes] [Code
2/6 Recitation 5 Folding and tail recursion [Notes
2/7 Lecture 6 Substitution model of evaluation [Notes] [Code
2/6 Recitation 6 More about the substitution model [Notes
Functional Data Structures
2/12 Lecture 7 Modules, structures, and signatures [Notes] [Code
2/13 Recitation 7 Functional stacks and queues, dictionaries, fractions [Notes
2/14 Lecture 8 Functors: parametrized modules [Notes] [Code
2/14 PS2 due at 11:59PM; PS3 issued [PS3
2/18 Recitation 8 Problem Set 3 overview, splay trees [Notes
2/19 Lecture 9 Abstraction functions and representation invariants [Notes] [Code
2/20 Recitation 9 More about functors [Notes
2/21 Lecture 10 Red-black trees [Notes] [Code
2/25 Recitation 10 Mutability: refs and arrays [Notes
2/26 Lecture 11 Disjoint sets [Notes] [Code
2/27 Recitation 11 Functional Arrays [Notes
2/28 Lecture 12 Type inference and unification [Notes] [Code
2/28 PS3 due at 11:59PM; PS4 issued [PS4
Verification and Testing
3/4 Recitation 12 Inductive correctness proofs [Notes
3/5 Lecture 13 The Environment Model [Notes] [Code
3/6 Recitation 13 Prelim review
3/7 Lecture 14 Logic for formal verification [Notes
3/7 Prelim I, Upson B17, 7:30pm
3/11 Recitation 14 Prelim Debrief
3/12 Lecture 15 Logic continued [Notes
3/13 Recitation 15 Testing [Notes] [Image
3/14 Lecture 16 Predicate Logic [Notes] [Code
3/14 PS4 due
3/16-3/24 Spring Break
3/25 Recitation 16 PS5 overview [PS5
Concurrency
3/26 Lecture 17 Concurrency [Notes] [Code] [Supplemental
3/27 Recitation 17 Concurrency: condition variables and message passing [Notes
3/28 Lecture 18 Concurrency continued [Code
Analysis of Algorithms
4/1 Recitation 18 Asymptotic complexity and binary search trees [Notes
4/2 Lecture 19 Asymptotic complexity and recurrences [Notes] [Code
4/3 Recitation 19 Master method [Notes
4/4 Lecture 20 More recurrences and master method [Notes] [Proof
4/8 Recitation 20 Hashing [Notes] [Botelho] [Cichelli] [CMU
4/9 Lecture 21 Amortized Analysis [Notes
4/10 Recitation 21 Prelim II review
Other Topics
4/11 Lecture 22 Representing and traversing directed graphs [Notes] [Code
4/11 PS5 due at 11:59PM; PS6 issued [PS6
4/15 Recitation 22 Amortized analysis examples [Notes
4/16 Lecture 23 Memoization and dynamic programming [Notes] [Code
4/16 Prelim II, Upson B17, 7:30pm
4/17 Recitation 23 PS6 / Graph algorithms [Notes
4/18 Lecture 24 Locality [Notes] [Code
4/22 Recitation 24 Prelim II Debrief
4/23 Lecture 25 Garbage collection [Notes
4/24 Recitation 25 Splay trees and B-trees [Notes
4/25 Lecture 26 The λ-calculus [Notes
4/29 Recitation 26 Continuations and CPS conversion [Notes] [Code
4/30 Lecture 27 Fixpoints and recursion [Notes] [Slides] [Code
5/1 Recitation 27 Streams and lazy programming [Notes] [Code
5/2 Lecture 28 Verification continued; Review [Notes
5/2 PS6 due
5/10 Final Exam, Friday, May 10 2:00–4:30 pm, HLSB14
5/10 The 3110 Tournament, Philips 101, 5pm (food provided)