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