Enrollment: see here for information about enrolling in the course or swapping recitation sections.
Current assignment: A1 [writeup] [release code]
Current project milestone: [charter]
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
02/27/18
| L9: Abstraction and specification
03/01/18
| L10: Abstraction functions and representation invariants
03/06/18
| L11: Testing
Data Structures
03/08/18
| L12: Streams and laziness
03/13/18
| Prelim I
03/13/18
| L13: Balanced trees
03/15/18
| L14: Mutable data types
Interpreters
03/20/18
| L15: Interpreters
03/22/18
| L16: Substitution model
03/27/18
| L17: Environment model
Software Ethics I
03/29/18
| L18: Software Ethics in CS I
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
04/12/18
| L20: Logic in Coq
04/17/18
| L21: Proofs are programs
04/19/18
| L22: Induction in Coq
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 II
05/03/18
| L26: Ethical Issues in CS II
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.