Current assignment: None
Current project milestone: [prototype]
Functional Programming
01/25/18
| L1: Introduction to 3110 [slides] [notes] [OCaml installation] [local copy of OCaml manual] [lab] [lab solution] [syllabus] [tips for success] [asking technical questions]
01/30/18
| L2: Functions [slides] [notes] [lab] [lab solution]
02/01/18
| L3: Lists [slides] [notes] [lab] [lab solution] [local copy of standard library documentation] [OUnit documentation]
02/06/18
| L4: Data types (Guest Lecture: Andrew Myers) [slides] [notes] [lab] [lab solution]
02/08/18
| L5: More Variants [slides] [notes] [lab] [lab solution]
02/13/18
| L6: Higher-order programming [slides] [notes] [lab] [lab solution] [Google paper on MapReduce]
Modular Programming
02/15/18
| L7: Modules (Guest Lecture: Steffen Smolka) [slides] [notes] [code] [lab] [lab solution]
02/20/18
| No class: February Break
02/22/18
| L8: Functors [slides] [notes] [code] [lab] [lab solution]
02/27/18
| L9: Abstraction and specification (Guest lecture: Dietrich Geisler) [slides] [notes] [lab] [lab solution]
03/01/18
| L10: Abstraction functions and representation invariants (Guest lecture: Greg Morrisett) [slides] [notes] [lab] [lab solution]
03/06/18
| L11: Testing [slides] [notes] [lab] [lab solution] [optional lab on randomized testing]
Data Structures
03/08/18
| L12: Streams and laziness [slides] [notes] [lab] [lab solution]
03/13/18
| Prelim I
03/13/18
| L13: Balanced trees [slides] [code] [lab] [lab solution] [notes from 2014fa on red-black trees]
03/15/18
| L14: Mutable data types [slides] [notes] [lab] [lab solution]
03/20/18
| L15: Hashtables [slides] [notes] [lab] [lab solution]
Interpreters
03/22/18
| L16: Interpreters [slides] [code] [lab] [lab solution]
03/27/18
| L17: Substitution model [slides] [substitution model semantics of core OCaml] [code] [lab] [lab solution]
03/29/18
| L18: Environment model [slides] [environment model semantics of core OCaml] [code] [lab] [lab solution]
Spring Break
04/03/18
| No class: Spring Break
04/05/18
| No class: Spring Break
Formal Methods
04/10/18
| L19: Functional programming in Coq [slides] [Coq installation] [code] [notes - html] [notes - Coq] [lab] [lab solution] [Coq reference manual] [Coq standard library]
04/12/18
| L20: Logic in Coq [slides] [code] [notes - html] [notes - Coq] [lab] [lab solution]
04/17/18
| L21: Proofs are programs [slides] [OCaml code] [Coq code] [notes] [lab] [lab solution]
04/19/18
| L22: Induction in Coq [slides] [code] [notes - html] [notes - Coq] [lab] [lab solution]
04/24/18
| Prelim II
04/24/18
| L23: Verification in Coq
Advanced Topics
04/26/18
| L24: Futures
05/01/18
| L25: Monads
Software Ethics
05/03/18
| L26: Ethical Issues in CS
THE END
05/08/18
| L27: Victory lap
05/15/18
| Final Project due: 4:30 pm, demos held over the next few days
05/17/18
| Final Exam

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.