Functional Programming
08/25/15
| L1: Introduction to 3110 [slides] [syllabus] [VM installation] [RWO1] [old notes 1] [old notes 2]
08/26/15
| R1: Introduction to OCaml [lab]
08/27/15
| L2: Functions [slides] [RWO2] [old notes 1] [old notes 2] [old notes 3]
08/31/15
| R2: Functions [lab]
09/01/15
| L3: Variables and scope [slides] [RWO2] [old notes]
09/02/15
| R3: Scope, modules, and printing [lab]
09/03/15
| L4: Lists and pattern matching [slides] [RWO3] [lab]
09/07/15
| No class: Labor Day
09/08/15
| L5: Map and fold [slides] [RWO3] [Google paper on MapReduce] [old notes 1] [old notes 2]
09/09/15
| R5: Map and fold [lab]
09/10/15
| L6: User-defined data types [slides] [RWO5] [RWO6] [old notes]
09/14/15
| R6: User-defined data types [lab]
09/15/15
| L7: Variants [slides] [RWO6] [RWO7] [old notes 1] [old notes 2]
09/16/15
| R7: Variants [lab]
Modular Programming
09/17/15
| L8: Modules [slides] [code] [RWO4] [old notes 1] [old notes 2] [old notes 3]
09/21/15
| R8: Modules [lab]
09/22/15
| L9: Functors [slides] [code] [RWO9] [old notes 1] [old notes 2]
09/23/15
| R9: Functors [lab]
09/24/15
| L10: Modular design [slides]
09/28/15
| R10: Testing [lab]
09/29/15
| L11: Modular specification [slides] [old notes]
09/30/15
| R11: Modular specification [lab]
Interpreters
10/01/15
| L12: Interpreters [slides] [code]
10/05/15
| R12: Parsing [lab]
10/06/15
| L13: Formal semantics [slides] [code] [small-step semantics of core OCaml] [old notes 1] [old notes 2] [old notes 3]
10/07/15
| R13: Substitution model [lab]
10/08/15
| L14: Closures [slides] [big-step semantics of core OCaml] [old notes 1] [old notes 2]
10/12/15
| No class: Fall Break
10/13/15
| No class: Fall Break
10/14/15
| R: Prelim 1 review
10/15/15
| No class: Study for prelim
10/15/15
| Prelim 1: 5:30–7:00 and 7:30–9:00pm, Rockefeller 201 and 203
10/19/15
| R14: Environment model [lab]
Imperative and Concurrent Programming
10/20/15
| L15: Imperative programming [slides] [RWO8] [old notes 1] [old notes 2] [old notes 3] [old notes 4]
10/21/15
| R15: Imperative programming [lab]
10/22/15
| L16: Concurrent programming [slides] [RWO18]
10/26/15
| R16: Threads and Async [lab]
10/27/15
| L17: Async [slides] [old notes 1] [old notes 2] [old notes 3] [old notes 4] [old notes 5] [old notes 6] [old notes 7]
10/28/15
| R17: Async [lab]
10/29/15
| L18: Monads [slides] [old notes]
11/02/15
| R18: Async design patterns [lab]
Reasoning about Programs
11/03/15
| L19: Behavioral equivalence [slides] [proofs]
11/04/15
| R19: Behavioral equivalence [lab]
11/05/15
| L20: Induction and recursion [slides] [proofs]
11/09/15
| R20: Induction and recursion [lab]
11/10/15
| L21: Specifications [slides] [old notes 1] [old notes 2] [old notes 3] [old notes 4] [old notes 5] [old notes 6]
11/11/15
| R21: Specifications [lab]
11/12/15
| L22: Efficiency [slides] [old notes 1] [old notes 2] [old notes 3] [old notes 4] [old notes 5] [old notes 6]
11/16/15
| R22: Efficiency [lab]
11/17/15
| L23: Amortized analysis [slides] [old notes 1] [old notes 2]
11/18/15
| R: Prelim 2 review
11/19/15
| No class: Study for prelim
11/19/15
| Prelim 2: 5:30–7:00 and 7:30–9:00pm, Rockefeller 201 and 203
11/23/15
| R23: Amortized analysis [lab]
11/24/15
| L24: Hash tables [slides] [old notes]
11/25/15
| No class: Thanksgiving break
11/26/15
| No class: Thanksgiving break
11/30/15
| R24: Solving recurrences [lab]
Potpourri
12/01/15
| L25: The expression problem [slides] [code]
12/02/15
| R25: TA's choice
THE END
12/03/15
| L26: Victory lap [slides]
12/12/15
| Final Exam: 2:00–4:30 pm, Olin 155, 165, and 255

Assignments