Warning: The schedule may change slightly; refresh your browser every week or so!

Note: reading assigments in "RWO" refer to the Real World OCaml book, which is also available online.

Dates Topic Notes/Code Reading
The Basics
Tu Sep 1 OCaml Introduction Intro, OCaml,,, Makefile, .merlin Functional Basics, Type Checking, Optional: RWO pp 1-10
Th Sep 3 Simple Immutable Data: Variables, Tuples, Options Let, Functions, Tuples Type-directed Programming;
Optional: RWO Chap 2
Sep 3-4 Precept 1: OCaml Intro .merlin (fizzbuzz solution) (TigerFile)
M Sep 7 Assign 1 Due
Tu Sep 8 Thinking Inductively Options, Lists, Sort, Java Rant Thinking Inductively;
Optional: RWO Chap 3
Th Sep 10 Poly-HO: Polymorphism and Higher-Order Programming C rant, Map/Reduce, Poly HO! Polymorphism and Higher-order Programming
Sep 10-11 Precept 2: Lists, Options, Polymorphism (TigerFile)
M Sep 14 Assign 2 Due
Tu Sep 15 More Data! Datatypes, Inductive datatypes; Optional: RWO Chapter 6
Th Sep 17 Building Interpreters Abstract syntax, Substitution and evaluation Operational Semantics
Sep 17-18 Precept 3: Assignment 3, Map, Fold and Datatypes; (TigerFile)
Reasoning About Programs
M Sep 21 Assign 3 Due
Tu Sep 22 More Interpreters More features, Model of OCaml; simple interpreter code:; with recursive functions:
Th Sep 24 How OCaml uses memory Space model, Pruning closures; simple interpreter code:; with recursive functions:
Th Sep 24-25 Precept 4: Assignment 4 and More About Closures;
Tu Sep 29 Proving Programs Correct Simple proofs, Induction for naturals, Induction for lists Equational Reasoning
Th Oct 1 More Correctness Proofs Induction for datatypes, Proofs about programming languages Equational reasoning about data types
Optional Reading: Odd-Order Theorem; Four-Color Theorem
Oct 1-2 Precept 5: Mutually Recursive Types, Equational Reasoning; (#4) (Sample solution, with proofs); (solution)
M Oct 5 Assign 4 Due
Tu Oct 6 Generalizing your Induction Hypothesis Generalized induction hypotheses, OCaml as compiled
Th Oct 8 Computability Computability, Uncomputability Optional reading: The Birth of Computer Science at Princeton in the 1930s
Oct 8-9 Precept 6: Tail Recursion and More Equational Reasoning
Tu Oct 13 Midterm break
Th Oct 15 Midterm exam
Oct 15-16 No precept this week
Tu Oct 20 ML Modules Simple modules, Design choices Optional: RWO Chap 4 (Modules), 9 (Functors)
Th Oct 22 Modules and Assignment 5 Functors, Module evaluation
Oct 22-23 Precept 7: Midterm recap
Tu Oct 27 Reasoning about Modules Representation Invariants, Proving Representation Invariants, More Representation Invariants Optional: Abstraction and Representation Invariants
Th Oct 29 Mutation and Laziness Mutable References Optional: RWO Chapter 8
Oct 29-30 Precept 8: Modules ;
Tu Nov 3 VOTE! VOTE! Brigitte Pientka's lazy notes
Th Nov 5 Effective ML LIVE Guest Lecturer: Yaron Minsky, Jane St. ; Optional: Jane St functional programming blog and podcast
Th Nov 5 Module Equivalence; Laziness; Mechanical Proofs Pre-recorded: Module Equivalence, Mechanized proofs, Laziness
Nov 5-6 Precept 9: References range.mli;
exercise9.txt (Solution)
M Nov 9 Assign 5 Due
Tu Nov 10 Type Checking Formal rules, OCaml implementation
Th Nov 12 Type Inference Type inference 1, Type inference 2 Optional: Efficient Type Inference
Nov 12-13 Precept 10: Exam Prep 2015 Final, Problems 4 and 5
Parallelism and Concurrency
M Nov 16 Assign 6 Due
Tu Nov 17 Threads and Futures Threads and Futures Using threads and futures
Th Nov 19 Parallel Collections Parallel Collections; Parallel prefix scan Parallel Sequences, Optional Reading: MapReduce; NESL
Nov 19-20 Precept 11: Parallel map/reduce
Tu Nov 24 Parallel Collections II Parallelism & Assignment 7; Turing Machine Tape Proof
Thanksgiving Break
Dec 1-2 Be advised: We may move Precept 11 to the beginning of reading period
M Dec 7 Assign 7 Due
Dec11,5pm - Dec12,5pm Final Exam (2-3h in this 24h period)