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
01/23 Lecture 1 Introduction to CS3110 [Notes] [Code and extras] 
01/23 PS 0 issued [PS 0] 
01/24 OCaml demo session, 7:30pm, Upson 315
01/25 OCaml demo session, 7:30pm, Upson 315
01/27 Recitation 1 Introduction to OCaml syntax [Notes] 
01/27 OCaml demo session, 7:30pm, Upson 315
01/28 Lecture 2 Syntax and Evaluation of OCaml programs [Notes] 
01/29 Recitation 2 Tuples, Records, and Datatypes [Notes] [Code] 
01/30 Lecture 3 Scope, Currying, and Lists [Notes] 
01/30 PS 1 issued [PS 1] [documentation] 
02/03 Recitation 3 Higher-order functions [Notes] 
02/04 Lecture 4 Variant Types and Polymorphism [Notes] 
02/05 Recitation 4 Datatype pitfalls, polymorphism, lists [Notes] 
02/06 Lecture 5 Map, Fold, and the Map-Reduce paradigm [Notes] 
02/06 PS 1 due, PS 2 issued [PS 2] [documentation] 
02/10 Recitation 5 Folding and tail recursion [Notes] 
02/11 Lecture 6 Substitution Model of Evaluation [Notes] [Code] 
02/12 Recitation 6 More on the Substitution Model [Notes] 
02/13 Lecture 7 Even More Substitution Model [Notes] 
02/13 PS 2 due
02/17 - 02/18 Winter Break
02/19 Recitation 7 Functional stacks, queues, dictionaries, and fractions [Notes] 
02/20 Lecture 8 Modules, Structures, and Signatures [Notes] [Code] 
02/20 PS 3 Issued [PS 3] [documentation] 
02/24 Recitation 8 Program Equivalence and Structural Induction [Notes] 
02/25 Lecture 9 Functors [Notes] 
02/26 Recitation 9 Functors continued [Notes] 
02/27 Lecture 10 Abstraction functions and representation invariants [Notes] [Code] 
Mutability
03/03 Recitation 10 Refs and Arrays [Notes] 
03/04 Lecture 11 Red-black trees [Notes] [Code] 
03/05 Recitation 11 Functional Arrays [Notes] 
03/06 Lecture 12 Disjoint set-forests [Notes] [Code] 
03/06 PS 3 due, PS 4 issued [PS 4] [documentation] 
03/10 Recitation 12 Prelim 1 review session
03/11 Lecture 13 The Environment Model [Notes] [Code] 
03/11 Prelim 1, 7:30pm, Upson B17
03/12 Recitation 13 Prelim 1 discussion, PS 4 overview
Formal Verification
03/13 Lecture 14 Logic for Formal Verification [Notes] 
03/17 Recitation 14 Natural Deduction examples [Notes] 
03/18 Lecture 15 Predicate logic and theories [Notes] 
03/19 Recitation 15 Testing [Notes] 
03/20 Lecture 16 Verification [Notes] [GCD proof] 
03/20 PS 4 due, PS 5a Issued [PS 5a] 
03/24 Recitation 16 PS 5b overview [PS 5b] 
Asynchronous Programming
03/25 Lecture 17 Concurrency [Notes] 
03/26 Recitation 17 Introduction to Async [Guide] [Documentation] [RWO] 
03/27 Lecture 18 More Async [Notes] 
03/28 PS 5b Issued [PS 5b] [documentation] 
03/31 - 04/04 Spring Break
04/07 Recitation 18 Socket Programming in Async [Notes] 
04/08 Lecture 19 Even More Async [Notes] 
04/09 Recitation 19 Async Parallel [Notes] [Blog] [Source] 
Analysis of Algorithms
04/10 Lecture 20 Asymptotic Complexity [Notes] [Code] 
04/14 Recitation 20 Review of Asymptotic Complexity [Notes] 
04/15 Lecture 21 Recursion Trees and the Master Method [Notes] 
04/16 Recitation 21 Solving Recurrences [Notes] 
04/17 Lecture 22 Amortized Analysis [Notes] 
04/17 PS 5 due, PS 6 Issued [PS 6] 
04/21 Recitation 22 PS 6 overview, Prelim II review
04/22 Lecture 23 Memoization [Notes] [Code] 
04/22 Prelim 2, 7:30pm, Upson B17
04/23 Recitation 23 Prelim II aftermath
04/24 Lecture 24 Graph Traversals [Notes] [Code] [OCamlgraph] 
04/28 Recitation 24 Master Method [Notes] 
Advanced Topics
04/29 Lecture 25 Implementing Graphs
04/30 Recitation 25 The λ-calculus [Notes] 
05/01 Lecture 26 Memory and Locality [Notes] 
05/05 Recitation 26 Hashing [Notes] [Botelho] [Cichelli] [Blum] 
05/06 Lecture 27
05/07 Recitation 27 Continuation Passing Style [Notes] 
05/10 CS 3110 Tournament, Philips 101, 5:00pm
05/12 Final Exam, Kennedy 116, 7:00pm