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 | |||
08/26/14 | Lecture 1 | Introduction to CS 3110 | [Slides] [Code] |
08/26/14 | PS 0 issued | [PS 0] | |
08/26/14 | OCaml demo session, 7:30–9:30PM, Upson B7 | ||
08/27/14 | Recitation 1 | Introduction to OCaml syntax | [Notes] |
08/27/14 | OCaml demo session, 7:30–9:30PM, Phillips 318 | ||
08/28/14 | Lecture 2 | Introduction to OCaml semantics | [Slides] [Notes] |
08/28/14 | OCaml demo session, 7:30–9:30PM, Upson B7 | ||
Week 2 | |||
09/01/14 | No class: Labor Day | ||
09/02/14 | Lecture 3 | Functions and data | [Slides] [Notes] [Code] |
09/03/14 | Recitation 2 | Testing and debugging | [Notes] |
09/04/14 | Lecture 4 | Lists and more data | [Slides] [Notes] [Code] |
09/04/14 | PS 1 issued | [PS 1] | |
Week 3 | |||
09/08/14 | Recitation 3 | Higher-order functions | [Notes] |
09/09/14 | Lecture 5 | Pattern matching | [Slides] [Notes] [Code] |
09/10/14 | Recitation 4 | Datatypes review | [Notes] |
09/11/14 | Lecture 6 | Map and fold | [Slides] [Notes] [Code] |
09/11/14 | PS 1 due | [PS 1] | |
09/11/14 | PS 2 issued | [PS 2] | |
Week 4 | |||
09/15/14 | Recitation 5 | Folding and tail recursion | [Notes] |
09/16/14 | Lecture 7 | The dynamic environment | [Slides] |
09/17/14 | Recitation 6 | PS1 discussion | [Git tutorial] |
09/18/14 | Lecture 8 | Closures | [Slides] |
09/18/14 | PS 2 due | [PS 2] | |
Week 5 | |||
09/22/14 | Recitation 7 | Examples of evaluation | [Notes] |
Modular Programming | |||
09/23/14 | Lecture 9 | Modules | [Slides] [Notes] |
09/23/14 | PS 3 issued | [PS 3] | |
09/24/14 | Recitation 8 | Functional data structures | [Notes] [Code] |
09/25/14 | Lecture 10 | Functors | [Slides] [Notes] [Code] |
Week 6 | |||
09/29/14 | Recitation 9 | Examples of functors | [Notes] |
09/30/14 | Lecture 11 | Documenting abstractions | [Slides] [Notes] |
10/01/14 | Recitation 10 | Red–black trees | [Notes] |
10/02/14 | Lecture 12 | Imperative features | [Slides] [Notes] |
10/02/14 | PS 3 due | [PS 3] | |
Week 7 | |||
10/06/14 | Recitation 11 | Functional arrays | [Notes] |
10/07/14 | Lecture 13 | Hash tables | [Slides] [Notes] |
10/08/14 | Recitation 12 | Prelim 1 review | |
10/09/14 | No class: Study for Prelim 1 | ||
10/09/14 | Prelim 1, 5:30–7:00 pm and 7:30pm–9:00 pm, Phillips 101 and 203, and Upson B17 | ||
10/09/14 | PS 4 issued | [PS 4] | |
Week 8 | |||
10/13/14 | No class: Fall Break | ||
10/14/14 | No class: Fall Break | ||
10/15/14 | Recitation 13 | Prelim 1 discussion, PS4 overview | |
Advanced Topics in Functional Programming | |||
10/16/14 | Lecture 14 | Static vs. dynamic typing | [Slides] |
Week 9 | |||
10/20/14 | No class: Recitation cancelled | ||
10/21/14 | Lecture 15 | Concurrency (Prof. Foster) | [Notes] |
10/22/14 | Recitation 14 | Programming in Async | [Notes] |
10/23/14 | Lecture 16 | Advanced Async (Prof. Foster) | [Slides] [Notes] [Code] |
10/23/14 | PS 4 due | [PS 4] | |
10/24/14 | PS 5 issued | [PS 5] | |
Week 10 | |||
10/27/14 | Recitation 15 | Socket programming in Async | [Notes] |
10/28/14 | Lecture 17 | Dependent types (Prof. Constable) | [Notes] |
Reasoning about Correctness | |||
10/29/14 | Recitation 16 | Assurance | [Notes] |
10/30/14 | Lecture 18 | Verification | [Slides] [Notes] |
Week 11 | |||
11/03/14 | Recitation 17 | Examples of verification | [Notes] |
11/04/14 | Lecture 19 | Logic | [Slides] [Notes] |
11/05/14 | Recitation 18 | Examples of proof | [Notes] |
11/06/14 | Lecture 20 | Effective OCaml (Dr. Minsky) | |
Week 12 | |||
11/10/14 | No class: Recitation cancelled | ||
11/11/14 | Lecture 21 | Logic, part 2 | [Slides] [Notes] [Proof rules] |
11/12/14 | Recitation 19 | More examples of proof | [Notes] |
11/13/14 | Lecture 22 | Mechanized logic in Coq | [Slides] [Notes] [Code] |
11/13/14 | PS 5 due | [PS 5] | |
11/14/14 | PS 6 issued | [PS 6] | |
Week 13 | |||
11/17/14 | Recitation 20 | PS 6 overview | [PS 6] |
11/18/14 | Lecture 23 | Formal verification in Coq | [Slides] [Notes] [Code] |
11/19/14 | Recitation 21 | Prelim 2 review | |
11/20/14 | No class: Study for Prelim 2 | ||
11/20/14 | Prelim 2, 5:30–7:00 pm and 7:30pm–9:00 pm, Olin 155, 165, and 255 | ||
11/20/14 | Optional PS 7 issued | [PS 7] | |
Week 14 | |||
11/24/14 | Recitation 22 | Prelim 2 discussion | |
Reasoning about Performance | |||
11/25/14 | Lecture 24 | Efficiency | [Slides] [Notes] |
11/26/14 | No class: Thanksgiving Break | ||
11/27/14 | No class: Thanksgiving Break | ||
Week 15 | |||
11/24/14 | Recitation 23 | Recurrences | [Notes] |
11/25/14 | Lecture 25 | Amortized analysis | [Slides] [Notes] [Code] |
11/24/14 | Recitation 24 | Recurrences, part 2 | [Notes] |
THE END | |||
11/25/14 | Lecture 26 | Victory lap | [Slides] |
12/04/14 | PS 6 due | [PS 6] | |
12/06/14 | 3110 Tournament, 5:00 pm, Gates G01 | ||
Finals | |||
12/11/14 | Optional PS 7 due | [PS 7] | |
12/16/14 | Final, 9:00–11:30 am, Olin 155, 245, and 255 |