Functional Programming
08/23/16
| L1: Introduction to 3110 [slides] [notes] [syllabus] [OCaml installation]
08/24/16
| R1: Introduction to OCaml [recitation guidelines] [lab] [OCaml manual]
08/25/16
| L2: Functions [slides] [notes]
08/29/16
| R2: Functions, and testing in the toplevel [lab]
08/30/16
| L3: Lists [slides] [notes]
08/31/16
| R3: Lists, and testing with OUnit [lab] [OUnit documentation]
09/01/16
| L4: Data types [slides] [notes] [lab]
09/05/16
| No class: Labor Day
09/06/16
| L5: Variants [slides] [notes]
09/07/16
| R5: Variants [lab]
09/08/16
| L6: Higher-order programming [slides] [notes] [Google paper on MapReduce]
09/12/16
| R6: Higher-order programming [lab]
09/13/16
| L7: Modules [slides] [notes] [code]
09/14/16
| R7: Modules and printing [lab]
09/15/16
| L8: Functors [slides] [notes] [code]
09/19/16
| R8: Functors [lab]
Software Engineering
09/20/16
| L9: Software architecture [slides] [notes]
09/21/16
| R9: Git [tutorial]
09/22/16
| L10: Software design [slides] [notes]
09/26/16
| R10: Software design [lab]
09/27/16
| L11: Specification [slides] [notes]
09/28/16
| R11: Specification [lab]
09/29/16
| L12: Testing [slides] [notes]
10/03/16
| R12: Testing [lab] [QCheck documentation]
Interlude: Imperative Programming
10/04/16
| L13: Imperative programming [slides] [old notes]
10/05/16
| R13: Imperative programming [lab]
Interpreters
10/06/16
| L14: Interpreters [slides] [code] [notes]
10/10/16
| No class: Fall break
10/11/16
| No class: Fall break
10/12/16
| R: Prelim 1 review
10/13/16
| Prelim 1: in person: 5:30–7:00 and 7:30–9:00pm, Rockefeller 201 (and 203 used for overflow seating); followed by take-home exam
10/17/16
| R14: Interpreters [lab] [code]
10/18/16
| L15: Formal semantics [slides] [code] [substitution model semantics of core OCaml]
10/19/16
| R15: Substitution model [lab]
10/20/16
| L16: Closures [slides] [environment model semantics of core OCaml]
10/24/16
| R16: Environment model [lab]
10/25/16
| L17: Type inference [slides] [notes]
10/26/16
| R17: Type inference [lab]
Interlude: Efficiency
10/27/16
| L18: Efficiency [slides]
10/31/16
| R18: Efficiency [lab]
Reasoning about Programs
11/01/16
| L19: Behavioral equivalence [slides] [proofs]
11/02/16
| R19: Behavioral equivalence [lab]
11/03/16
| L20: Induction and recursion [slides] [proofs]
11/07/16
| R20: Induction and recursion [lab]
11/08/16
| L21: Specifications [slides] [old notes]
11/09/16
| R21: Specifications [lab]
Advanced Topics
11/10/16
| L22: Futures [slides] [old async notes part 1] [old async notes part 2] [old ivar notes]
11/14/16
| R22: Futures [lab]
11/15/16
| L23: Monads [slides]
11/16/16
| R: Prelim 2 review
11/17/16
| Prelim 2: in person: 5:30–7:00 and 7:30–9:00pm, Rockefeller 201 (and 203 used for overflow seating); followed by take-home exam
11/21/16
| R23: Monads [lab]
11/22/16
| L24: Proofs are programs [slides] [notes]
11/23/16
| No class: Thanksgiving break
11/24/16
| No class: Thanksgiving break
11/28/16
| R: TA's choice
11/29/16
| L25: Objects [slides] [code]
11/30/16
| R: TA's choice
THE END
12/01/16
| L26: Victory lap [slides]
12/15/16
| Final Exam: 9:00–11:30 am, Statler Hall Auditorium (185)

Assignments