Functional Programming
08/22/17
| L1: Introduction to 3110 [slides] [notes] [OCaml installation] [local copy of OCaml manual] [lab] [lab solution] [syllabus] [tips for success] [asking technical questions]
08/24/17
| L2: Functions [slides] [notes] [lab] [lab solution]
08/29/17
| L3: Lists [slides] [notes] [lab] [lab solution] [local copy of standard library documentation] [OUnit documentation]
08/31/17
| L4: Data types [slides] [CS orgs] [notes] [lab] [lab solution]
09/04/17
| No class: Labor Day
09/05/17
| L5: Variants [slides] [notes] [lab] [lab solution]
09/07/17
| L6: Higher-order programming [slides] [notes] [lab] [lab solution] [Google paper on MapReduce]
Modular Programming
09/12/17
| L7: Modules [slides] [notes] [code] [lab] [lab solution]
09/14/17
| L8: Functors [slides] [notes] [code] [lab] [lab solution]
09/19/17
| L9: Abstraction and specification [slides] [notes] [lab] [lab solution]
09/21/17
| L10: Abstraction functions and representation invariants [slides] [notes] [lab] [lab solution]
09/26/17
| L11: Testing [slides] [notes] [lab] [lab solution] [optional lab on randomized testing]
Data Structures
09/28/17
| L12: Streams and laziness [slides] [notes] [lab] [lab solution]
10/03/17
| L13: Balanced trees [slides] [code] [lab] [lab solution] [notes from 2014fa on red-black trees] [notes from an external source on 2-3 trees]
10/05/17
| L14: Mutable data types [slides] [notes] [lab] [lab solution]
10/10/17
| No class: Fall Break
10/12/17
| Prelim: 5:30–7:00 and 7:30–9:00pm, in Baker Lab 200 (overflow to 219 and 335 as needed)
10/17/17
| L15: Hash tables [slides] [code] [notes] [lab] [lab solution]
Interpreters
10/19/17
| L16: Interpreters [slides] [code] [lab] [lab solution]
10/24/17
| L17: Substitution model [slides] [substitution model semantics of core OCaml] [code] [lab] [lab solution]
10/26/17
| L18: Environment model [slides] [environment model semantics of core OCaml] [code] [lab] [lab solution]
Formal Methods
10/31/17
| L19: Functional programming in Coq [slides] [Coq installation] [code] [notes - html] [notes - Coq] [lab] [lab solution] [Coq reference manual] [Coq standard library]
11/02/17
| L20: Logic in Coq [slides] [code] [notes - html] [notes - Coq] [lab] [lab solution]
11/07/17
| L21: Proofs are programs [slides] [OCaml code] [Coq code] [notes] [lab] [lab solution]
11/09/17
| L22: Induction in Coq [slides] [code] [notes - html] [notes - Coq] [lab] [lab solution]
11/14/17
| L23: Verification in Coq [slides] [code] [lab] [lab solution] [3110 Coq Tactics Cheatsheet]
Advanced Topics
11/16/17
| L24: Futures [slides] [old async notes part 1] [old async notes part 2] [old ivar notes] [lab] [lab solution]
11/21/17
| L25: Monads [slides] [code] [lab] [lab solution - OCaml] [lab solution - Coq]
11/23/17
| No class: Thanksgiving Break
11/28/17
| L26: Objects [slides] [code]
THE END
11/30/17
| L27: Victory lap [slides]
12/06/17
| Final Exam: 9:00–11:30 am, Statler Hall Auditorium (STL 185)
12/07/17
| Final Project due: 4:30 pm, demos held over the next few days

Assignments

The dates above are best estimates, not a commitment. You are cautioned that they may change without warning for assignments that have not yet been released.