Caml
Power

Schedule

Warning: The schedule may change. Don't get more than a lecture or so ahead of the class. Refresh your browser to see updates!

Note: reading assigments in "RWO" refer to the Real World OCaml book, which is also available online.

Dates Topic Notes/Code Videos Reading
The Basics
W Sep 1 OCaml Introduction Intro, OCaml, Let, Functions, Tuples, hello.ml, sum.ml, Makefile, .merlin 01-02, 02-01, 02-02, 02-03 Functional Basics, Type Checking, Optional RWO: OCaml as Calculator, Functions and Type Inference
Sep 2-3 Precept 1: OCaml Intro precept1.zip ticket.ml .merlin fizzbuzz.ml (fizzbuzz solution) exercise1.ml
M Sep 6 Labor Day
W Sep 8 Simple Immutable Data: Options, Lists Options, Lists, Sort, Map/Reduce, Poly HO! 03-01, 03-02, 03-03, 04-02a, 04-03 Type-directed Programming;
Thinking Inductively;
Optional:variables and functionns, and other bits in RWO Chap 2, 3
Th Sep 9 Assign 1 Due
Sep 9-10 Precept 2: Lists, Options, Polymorphism precept2.zip precept2_solutions.zip
M Sep 13 Poly-HO: Polymorphism, Higher-Order Programming and Datatypes Datatypes, Inductive datatypes; gml.ml 04-02, 04-03, 05-01, 05-02 Polymorphism and Higher-order Programming
W Sep 15 SAT SAT Lecture Optional: RWO Chapter 6
Th Sep 16 Assign 2 Due
Sep 16-17 Precept 3: Assignment 3, Map, Fold and Datatypes precept3.zip; exercise3_sol.ml
Reasoning About Programs
M Sep 20 Building Interpreters Java Rant, C Rant, Abstract syntax, 03-04, 04-01, 06-01 Operational Semantics
W Sep 22 More Interpreters Substitution and evaluation, More features, Model of OCaml; simple interpreter code: eval0.ml; with recursive functions: eval3.ml 06-02, 06-03, 06-04
Sep 23-24 Precept 4: Assignment 4 and More About Closures precept4.zip;
precept4_sol.zip
M Sep 27 Assign 3 Due
M Sep 27 How OCaml uses memory Space model, Compiling OCaml and Garbage Collection, Pruning closures 09-01, 10-02, 11-03
W Sep 29 Proving Programs Correct Simple proofs, Induction for naturals, Induction for lists 08-01, 08-02, 08-03 Equational Reasoning
Sep 30-31 Precept 5: Mutually Recursive Types, Equational Reasoning theorems.ml;
exercise4.ml (#4) (Sample solution, with proofs);
exercise5.ml (solution)
M Oct 4 More Correctness Proofs Induction for datatypes, Proofs about programming languages 08-04, 08-05 Equational reasoning about data types
Optional Reading: Odd-Order Theorem; Four-Color Theorem
W Oct 6 Generalizing your Induction Hypothesis Generalizing your induction hypotheses, 10-01
Oct 7-8 Precept 6: Tail Recursion and More Equational Reasoning
M Oct 11 Type Checking Formal rules, OCaml implementation 17-01, 17-02
W Oct 13 Type Inference Type inference 1, Type inference 2 17-03, 17-04 Optional: Efficient Type Inference
Th Oct 14 Assign 4 Due
Oct 16-24 Midterm break
M Oct 25 Midterm exam review
Oct 26-27 Take home midterm exam
W Oct 27 No class, midterm exam
Oct 28-29 Precept 7: Continuations and Proofs Continuations.pdf
Modularity
M Nov 1 ML Modules Simple modules, Design choices, Functors, Module evaluation 12-01, 12-02, 12-03, 12-04 Optional: RWO Chap 4 (Modules), 9 (Functors)
W Nov 3 Effective ML LIVE Guest Lecturer: Yaron Minsky, Jane St. Optional: Jane St functional programming blog and podcast
Th Nov 4 Assign 5 Due
Nov 4-5 Precept 8: Modules precept8.zip ; precept8_sol.zip
M Nov 8 Reasoning about Modules Representation Invariants, Proving Representation Invariants, 13-01, 13-02 Optional: Abstraction and Representation Invariants
W Nov 10 Reasoning about Modules More Representation Invariants, Module Equivalence 13-03, 13-04
Nov 11-12 Precept 9: More Modules range.mli;
exercise9.txt (Solution)
M Nov 15 Mutation and Laziness Mutable References, Laziness 16-01, 16-02 Optional: RWO Chapter 8
W Nov 17 Functional Parallelism I Parallelism I, Parallel Sequences 18-01, 21-01
Th Nov 18 Assign 6 Due
Nov 18-19 Precept 10: Functional Parallelism Balanced Parentheses problem
M Nov 22 Functional Parallelism II Parallel Prefix Scan 21-02
Nov 23-28 Thanksgiving break
Nov 22-26 No precept this week
M Nov 29 Exam Q and A; Review
Nov 30-Dec 1 Take-home Exam 2
Dec 2-3 No Precept
Dec 6 Incremental Computation Incremental Computation
M Dec 14 Assign 7 Due (Dean's date)