Caml
Power
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) |