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
Tu Sep 1 OCaml Introduction Intro, OCaml, hello.ml, sum.ml, 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 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 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 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 17-18 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 24-25 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: Odd-Order Theorem; Four-Color Theorem
Oct 1-2 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 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
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 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 19 Effective ML
Oct 19-20 Precept 8: Modules range.mli ; exercise8.txt ; range.ml implementation(s) ; proofs for LoHiPairRange
M Nov 2 Assign 5 Due
Tu Nov 3 Mutation and Laziness Mutable References Optional: RWO Chapter 8
Th Nov 5 COS 510 Preview;
Infinite Streams and Lazy Evaluation
Mechanized proofs, Laziness Brigitte Pientka's lazy notes
Nov 5-6 Precept 9: References range.mli;
exercise9.txt (Solution)
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 Sequences, Optional Reading: MapReduce; NESL
Nov 19-20 Precept 11: Parallel map/reduce helloTest.ml to "translate" ; Mergesort Scaffolding; HelloWorld++ Solution; Mergesort Solution
Tu Nov 24 Parallel Collections II Parallelism & Assignment 7
Thanksgiving Break
Dec 1-2 Be advised: We may move Precept 11 to the beginning of reading period
M Dec 7 Assign 7 Due
Dec 12? Final Exam