Caml
Power
Power
Schedule
Warning: The schedule below is only approximate. It will almost certainly change — we make no promises. Amended lectures notes that better reflect the content of the lecture may be posted after class.
Note: reading assigments in "RWO" refer to the Real World OCaml book, which is also available online.
Dates  Topic  Notes/Code  Reading 

The Basics  
W Sep 13  OCaml Introduction  OCaml Intro, hello.ml, sum.ml, Makefile, .merlin  Functional Basics, Type Checking, Optional: RWO pp 110 
Th Sep 14  Precept 1: OCaml Intro  assert.ml ticket.ml .merlin fizzbuzz.ml (solution) exercise1.ml (Dropbox)  
M Sep 18  Simple Immutable Data: Variables, Tuples, Options  Type Checking Basics; Let, Tuples, Unit;  Typedirected Programming; Optional: RWO Chap 2 
W Sep 20  Thinking Inductively  Induction, Lists and Nats 
Thinking Inductively; Optional: RWO Chap 3 
W Sep 20  Assign 1 Due  
Th Sep 21  Precept 2: Lists, Options, Polymorphism  kthdup.ml Solutions merge.ml (Solution) exercise2.ml (Dropbox)  
M Sep 25  PolyHO: Polymorphism and HigherOrder Programming  Inductive programming with the Naturals; PolyHO  Polymorphism and Higherorder Programming 
W Sep 27  More Data!  Combinators and Datatypes; pipeline.ml  Optional: RWO Chapter 6 
W Sep 27  Assign 2 Due  
Th Sep 28  Precept 3: Assignment 3, Map, Fold and Datatypes  examples; sat.ml; exercise3.ml (Dropbox)  
Reasoning About Programs  
M Oct 2  Datatypes and Interpreters  Datatype Design; Implementing OCaml in OCaml 
Optional: Blog on F#, Error Processing and Functional Design; Optional: RWO Chapter 7; Operational Semantics 
W Oct 4  More Interpreters  OCaml Interpreters, Part 2; simple interpreter code: eval0.ml; with recursive functions: eval3.ml  Equational Reasoning 
W Oct 4  Assign 3 Due  
Th Oct 5  Precept 4: Assignment 4 and More About Closures  exercise4.ml (#13) (Dropbox)  
M Oct 9  Proving Programs Correct  Proofs about Programs  
W Oct 11  More reasoning: Data types + Space  Proofs about Datatypes; Space Model  Equational reasoning about data types
Optional Reading: OddOrder Theorem; FourColor Theorem 
Th Oct 12  Precept 5: Mutually Recursive Types, Equational Reasoning  types.ml (reduce version); theorems.ml; exercise4.ml (#4) (Sample solution, with proofs); exercise5.ml (solution) 

M Oct 16  ContinuationPassing Style  Continuationpassing Style  treeincrementcps.ml 
W Oct 18  More ContinuationPassing  More CPS and More Proofs; Type Checking  
W Oct 18  Assign 4 Due  
Th Oct 19  Precept 6: Tail Recursion and More Equational Reasoning  Map CPS Proof Example; exercise6.ml (Solution: code, proofs)  
M Oct 23  Type Inference  Type Inference  
W Oct 25  Midterm Exam  
Fall Break  
Modularity  
M Nov 6  Effective ML  Guest Lecture: Yaron Minsky, Jane St 

W Nov 8  Modules  ML Modules  Optional: RWO Chap 4 (Modules), 9 (Functors) 
Th Nov 9  Precept 7: Midterm recap  Solutions  
M Nov 13  Reasoning about Modules  Representation Invariants and Abstraction Functions  Optional: Abstraction and Representation Invariants 
W Nov 15  More Modules and References  More Modules; Reference Types;  Optional: RWO Chapter 8 
Th Nov 16  Precept 8: Modules  range.mli ; exercise8.txt ; range.ml implementation(s) ; proofs for LoHiPairRange  
Parallelism and Concurrency  
M Nov 20  Infinite Streams and Lazy Evaluation  Laziness  
W Nov 22  Assign 5 Due  
Thanksgiving Break  
M Nov 27  Introduction to Formal Methods  Guest Lecture: Prof Andrew Appel 

M Nov 27  Parallelism Intro  Parallelism and Threads  Using threads and futures 
W Nov 29  Parallel Complexity  More Threads and Futures  Parallel Complexity Models, Parallel Scheduling 
Th Nov 30  Precept 9: References and Futures  range.mli; exercise9.txt 

M Dec 4  Parallel Collections  Parallel Collections  Parallel Sequences, Optional Reading: NESL 
W Dec 6  F#  F#!  Optional: Computation Expression Series, F# Parallel and Concurrent Programming 
Th Dec 7  Assign 6 Due  
Th Dec 7  Precept 10: FSharp  hello.ml to "translate" ; IDE Links ; Mergesort Scaffolding  F# lecture notes 
M Dec 11  Liquid Types  Guest Lecture: Prof Zak Kincaid 
Optional Reading: Learn you a Haskell for Great Good 
W Dec 13  Functional Networking  Functional Networking  Optional Reading: Frenetic: A Network Programming Language 
Th Dec 14  Precept 11: Exam Prep  2015 Final, Problems 4 and 5  
Winter Break  
Tu Jan 16  Dean's Date: Assign 7 Due at 4:59pm  
F Jan 26  Final Exam. 1:30pm in McCosh 46 