Caml
Power

Schedule

Warning: The schedule is under construction and will change.


Dates Topic Notes/Code Reading
The Basics
Tu Sep 2 IF YOU READ THIS, SET UP YOUR CODING ENVIRONMENT! SEE HERE
W Sep 3 OCaml Introduction hello.ml, sum.ml Reading: OCaml Basics: 2.1-2.8
Sep 4-5 Precept 1: OCaml Intro precept1.zip
M Sep 8 Simple Immutable Data: Variables, Tuples, Records, Options Reading: Data and Types: 3.4, 3.6, 3.7
Tu Sep 9 Assign 1 Due
W Sep 10 Thinking Inductively: Lists Reading: Lists: 3.1, 3.8 Optional: Testing with OUnit
Sep 11-12 Precept 2: Lists, Options precept2.zip
M Sep 15 Poly-HO: Polymorphism and Higher-Order Programming Reading: Higher-order Programming: 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7
Tu Sep 16 Assign 2 Due
W Sep 17 More Data! gml.ml Reading: ML Data types: 3.2, 3.5, 3.9, 3.10, 3.11, 3.12
Sep 18-19 Precept 3: Assignment 3, Map, Fold and Datatypes precept3.zip
Reasoning About Programs
M Sep 22 Building Interpreters Abstract syntax, Substitution and evaluation Operational Semantics
Tu Sep 23 Assign 3 Due
W Sep 24 More Interpreters Model of OCaml, Assignment 4; simple interpreter code: eval0.ml; with recursive functions: eval3.ml
Sep 25-26 Precept 4: Assignment 4 and More About Closures Space model (and pruning closures); precept4.zip;
precept4_sol.zip
M Sep 29 In-class Test 1 Functional programming and debugging.
W Oct 1 Proving Programs Correct Simple proofs, Induction for naturals, Induction for lists Equational Reasoning
Oct 2-3 Proofs by Induction; Questions about Space Model theorems.ml;
exercise4.ml (#4)
exercise5.ml Space model (and pruning closures)
M Oct 6 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 8 Generalizing your Induction Hypothesis Generalized induction hypotheses; OCaml as compiled
Oct 9-10 No formal precept; Optional Assignment 4 Help
Fr Oct 10 Assign 4 Due
Oct 11-19 Fall break
Effects
M Oct 20 Refs and Lazy Evaluation
W Oct 22 Probabilistic Functional Programmng Dice Optional: Dice
Oct 23-24 Precept 6: Mutually Recursive types, tail recursion and More Equational Reasoning theorems.ml;
exercise4.ml (#4) (Sample solution, with proofs);
exercise5.ml (solution)
Modularity
M Oct 27 Modules and Interfaces Simple modules, Design choices Optional: RWO Chap 4 (Modules), 9 (Functors)
Tu Oct 28 Assign 5 Due (Theory)
W Oct 29 Functors Functors, Module evaluation
Oct 30-31 Precept 6: Mutually Recursive types, tail recursion and More Equational Reasoning theorems.ml;
exercise4.ml (#4) (Sample solution, with proofs);
exercise5.ml (solution)
M Nov 3 Reasoning about Modules and Abstract Types Representation Invariants Optional: Abstraction and Representation Invariants
Tu Nov 4 Assign 6 Due
W Nov 5 Module Equivalence Module Equivalence, Mechanized proofs
Nov 6-7 Precept 8: Modules precept8.zip ; precept8_sol.zip
Cool Stuff
M Nov 10 In-class Test 2
W Nov 12 Type Systems
Nov 13-14 Precept 9
M Nov 17 Type Inference
Tu Nov 18 Final Assignment Proposal Due
Thanksgiving Break
M Nov 24 Natural Deduction and Curry-Howard Isomorphism
Parallelism and Concurrency
W Nov 26 Parallelism: Futures
Nov 27-28
M Dec 1 Parallel Collections Parallel Sequences Parallel Sequences, Optional Reading: MapReduce; NESL
W Dec 3 Parallel Collections Parallel Prefix Scan
Dec 4-5 Precept 11: Parallel map/reduce precept11.zip
Final Assessment Day for COS 326 (Dec 13-19) Final Assignment Report Due