Schedule
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 | |||
Week 1 | |||
01/22/15 | Lecture 1 | Introduction to CS 3110 | [slides] [code] |
01/24/15 | Install Session: noon—8 pm, Upson 315 | ||
Week 2 | |||
01/26/15 | Recitation 1 | Introduction to OCaml syntax | [code] [notes] |
01/29/15 | Lecture 2 | OCaml, semantics, and OCaml semantics | [summary] |
01/28/15 | Recitation 2 | ||
01/29/15 | Lecture 3 | Substitution, functions, variants, pattern matching | [summary] |
Week 3 | |||
02/02/15 | Recitation 3 | Testing and debugging | [notes] |
02/03/15 | Lecture 4 | Tuples and lists | [summary] |
02/04/15 | Recitation 4 | Datatypes review | [notes] |
02/05/15 | Lecture 5 | Pattern matching and higher-order functions | [summary] |
Week 4 | |||
02/09/15 | Recitation 5 | Higher-order functions | [notes] |
02/10/15 | Lecture 6 | Map and fold | [slides] [notes] [code] |
02/11/15 | Recitation 6 | Folding and tail recursion | [notes] |
02/12/15 | Lecture 7 | The dynamic environment | [slides] |
Week 5 | |||
02/16/15 | No class: February Break | ||
02/17/15 | No class: February Break | ||
02/18/15 | Recitation 7 | Evaluation examples | [notes] |
02/19/15 | Lecture 8 | Closures | [slides] |
Week 6 | |||
02/23/15 | Recitation 8 | Closure examples | [notes] |
Modular Programming | |||
02/24/15 | Lecture 9 | Modules | [last semester's slides] |
02/25/15 | Recitation 9 | Functional data structures | [notes] |
02/26/15 | Lecture 10 | Composing modules | [summary] [code] |
Week 7 | |||
03/02/15 | Recitation 10 | Functor examples | [notes] [src] |
03/03/15 | Lecture 11 | Functors | [summary] [code] |
03/04/15 | Recitation 11 | Red/black trees | [notes] |
03/05/15 | Lecture 12 | Abstraction functions and representation invariants | [summary] [code] |
Week 8 | |||
03/09/15 | Recitation 12 | Prelim 1 review | |
03/10/15 | No class: Study for prelim 1 | ||
03/10/15 | Prelim 1, 5:30–7:00 and 7:30–9:00 pm, Ives 305 | ||
03/11/15 | No class: Recitation canceled | ||
Imperative Programming | |||
03/12/15 | Lecture 13 | Imperative features | [last semester's notes] |
Week 9 | |||
03/16/15 | Recitation 13 | Prelim 1 redux, git | [git tutorial] |
03/17/15 | Lecture 14 | Hashing | [slides] [notes] |
03/18/15 | Recitation 14 | Functional arrays | [notes] |
Reasoning about Programs | |||
03/19/15 | Lecture 15 | Efficiency | [slides] [notes] |
Week 10 | |||
03/23/15 | Recitation 15 | Recurrences | [notes] |
03/24/15 | Lecture 16 | Amortized analysis | [slides] [notes] |
03/25/15 | Recitation 16 | Examples of amortized analysis | [notes] |
03/26/15 | Lecture 17 | Verification | [slides] [notes] |
Week 11 | |||
03/30/15 – 04/02/15 | No class: Spring Break | ||
Week 12 | |||
04/06/15 | Recitation 17 | Examples of verification | [notes] |
Concurrent Programming | |||
04/07/15 | Lecture 18 | Intro to async | [notes] [documentation] |
04/08/15 | Recitation 18 | Async examples | [notes] [sample problems] |
04/09/15 | Lecture 19 | Ivars | [notes] |
Week 13 | |||
04/13/15 | Recitation 19 | Networking | [notes] |
04/14/15 | Lecture 20 | Asynchronous queue | [notes] |
04/15/15 | Recitation 20 | Async_parallel | [notes] [overview] |
Advanced Topics | |||
04/16/15 | Lecture 21 | Monads | [notes] |
Week 14 | |||
04/20/15 | Recitation 21 | Prelim 2 review | |
04/21/15 | No class: Study for prelim 2 | ||
04/21/15 | Prelim 2, 5:30–7:00 and 7:30–9:00 pm, Uris G01 | ||
04/22/15 | No class: Recitation canceled | ||
04/23/15 | Lecture 22 | The expression problem | [slides] [code] |
Week 15 | |||
04/27/15 | No class: Charter Day | ||
04/28/15 | Lecture 23 | Object encodings | [slides] [code] |
04/29/15 | Recitation 22 | Lambda calculus | [notes] |
04/30/15 | Lecture 24 | Dynamic dispatch | [slides] [code] |
Week 16 | |||
05/04/15 | Recitation 23 | TA's choice | |
THE END | |||
05/05/15 | Lecture 25 | Victory lap | [slides] |
05/06/15 | No class: Recitation canceled | ||
Finals | |||
05/17/15 | Final Exam, 2:00–4:30 pm, Olin 155 |