Caml
Power

Schedule

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

--> 
Dates Topic Notes/Code Reading
The Basics
W Sep 7 OCaml Introduction Intro, hello.ml, sum.ml Functional Basics, Type Checking, Optional: RWO pp 1-10
Sep 8-9 Precept 1: OCaml Intro precept1.zip ticket.ml .merlin fizzbuzz.ml (fizzbuzz solution) exercise1.ml
M Sep 12 Simple Immutable Data: Variables, Tuples, Options Let, Functions, Tuples Type-directed Programming;
Optional: RWO Chap 2
Tu Sep 13 Assign 1 Due
W Sep 14 Thinking Inductively Options, Lists, Sort, Java Rant Thinking Inductively;
Optional: RWO Chap 3
Sep 15-16 Precept 2: Lists, Options, Polymorphism precept2.zip precept2_solutions.zip
M Sep 19 Poly-HO: Polymorphism and Higher-Order Programming C rant, map/reduce, Poly HO! Polymorphism and Higher-order Programming
Tu Sep 20 Assign 2 Due
W Sep 21 More Data! Datatypes, gml.ml Optional: RWO Chapter 6
Sep 22-23 Precept 3: Assignment 3, Map, Fold and Datatypes precept3.zip; exercise3_sol.ml
Reasoning About Programs
M Sep 26 Building Interpreters Abstract syntax, Substitution and evaluation Operational Semantics
Tu Sep 27 Assign 3 Due
W Sep 27 More Interpreters Model of OCaml, Assignment 4; simple interpreter code: eval0.ml; with recursive functions: eval3.ml
Sep 28-29 Precept 4: Assignment 4 and More About Closures precept4.zip;
precept4_sol.zip
M Oct 3 How OCaml uses memory Space model (and pruning closures); simple interpreter code: eval0.ml; with recursive functions: eval3.ml
W Oct 5 Proving Programs Correct Simple proofs, Induction for naturals, Induction for lists Equational Reasoning
Oct 6-7 Precept 5: Mutually Recursive Types, Equational Reasoning theorems.ml;
exercise4.ml (#4) (Sample solution, with proofs);
exercise5.ml (solution)
M Oct 10 More Correctness Proofs Induction for datatypes, Proofs about programming languages Equational reasoning about data types
Optional Reading: Odd-Order Theorem; Four-Color Theorem
Tu Oct 11 Assign 4 Due
W Oct 12 Generalizing your Induction Hypothesis Generalized induction hypotheses; OCaml as compiled
Oct 13-14 Precept 6: Tail Recursion and More Equational Reasoning
Oct 17-21 Fall break
Modularity
M Oct 24 ML Modules Simple modules, Design choices Optional: RWO Chap 4 (Modules), 9 (Functors)
W Oct 26 Midterm exam Part I (in lecture)
Oct 27-28 Midterm Exam Part II (in your normally scheduled precept)
M Oct 31 Modules and Assignment 5 Functors, Module evaluation
(continuing the slide deck from last week)
W Nov 2 Reasoning about Modules Representation Invariants Optional: Abstraction and Representation Invariants
Nov 3-4 Precept 8: Modules precept8.zip ; precept8_sol.zip
M Nov 7 Module Equivalence Module Equivalence, Mechanized proofs
Mutation & Laziness
W Nov 9 Mutation Mutable References Optional: RWO Chapter 8
Nov 10-11 Precept 9: Reasoning about Modules range.mli;
exercise9.txt (Solution)
M Nov 14 Effective ML Guest Lecturer: Yaron Minsky, Jane Street LLC Optional: Jane St functional programming blog and podcast
W Nov 16 Lazy Evaluation Laziness and Streams
Nov 17-18 Precept...
M Nov 21 Computability Computability Optional reading: The Birth of Computer Science at Princeton in the 1930s
Tu Nov 22 Assign 5 Due
Thanksgiving Break
Type Systems
M Nov 28 Type Checking Type Systems, Type Checking
W Nov 30 Type Inference Type inference Optional: Efficient Type Inference
Dec 1-2 Precept 10: Exam Prep
Parallelism and Concurrency
Tu Dec 5 Assign 6 Due
M Dec 59 Parallel Collections Parallel Sequences Parallel Sequences, Optional Reading: MapReduce; NESL
W Dec 7 Parallel Collections II Parallel Prefix Scan; Assignment 7
Dec 8-9 Precept 11: Parallel map/reduce precept11.zip
Th Dec 15 Assign 7 Due
Tu Dec 20 Final Exam (9:00am, Friend 006, 3 hours)