Skip to main content



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