Caml
Power
Power
Schedule
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, hello.ml, sum.ml, Makefile, .merlin  Functional Basics, Type Checking, Optional: RWO pp 110 
Th Sep 3  Simple Immutable Data: Variables, Tuples, Options  Let, Functions, Tuples  Typedirected Programming; Optional: RWO Chap 2 
Sep 34  Precept 1: OCaml Intro  precept1.zip ticket.ml .merlin fizzbuzz.ml (fizzbuzz solution) exercise1.ml (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  PolyHO: Polymorphism and HigherOrder Programming  C rant, Map/Reduce, Poly HO!  Polymorphism and Higherorder Programming 
Sep 1011  Precept 2: Lists, Options, Polymorphism  precept2.zip (TigerFile) precept2_solutions.zip  
M Sep 14  Assign 2 Due  
Tu Sep 15  More Data!  Datatypes, Inductive datatypes; gml.ml  Optional: RWO Chapter 6 
Th Sep 17  Building Interpreters  Abstract syntax, Substitution and evaluation  Operational Semantics 
Sep 1718  Precept 3: Assignment 3, Map, Fold and Datatypes  precept3.zip; exercise3_sol.ml (TigerFile)  
Reasoning About Programs  
M Sep 21  Assign 3 Due  
Tu Sep 22  More Interpreters  More features, Model of OCaml; simple interpreter code: eval0.ml; with recursive functions: eval3.ml  
Th Sep 24  How OCaml uses memory  Space model, Pruning closures; simple interpreter code: eval0.ml; with recursive functions: eval3.ml  
Th Sep 2425  Precept 4: Assignment 4 and More About Closures  precept4.zip; precept4_sol.zip 

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: OddOrder Theorem; FourColor Theorem 
Oct 12  Precept 5: Mutually Recursive Types, Equational Reasoning  theorems.ml; exercise4.ml (#4) (Sample solution, with proofs); exercise5.ml (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 89  Precept 6: Tail Recursion and More Equational Reasoning  
Tu Oct 13  Midterm break  
Th Oct 15  Midterm exam  
Oct 1516  No precept this week  
Modularity  
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 2223  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 2930  Precept 8: Modules  precept8.zip ; precept8_sol.zip  
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  Prerecorded: Module Equivalence, Mechanized proofs, Laziness  
Nov 56  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 1213  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 1920  Precept 11: Parallel map/reduce  precept11.zip  
Tu Nov 24  Parallel Collections II  Parallelism & Assignment 7; Turing Machine Tape Proof  
Thanksgiving Break  
Dec 12  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 (23h in this 24h period) 