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 |