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