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 | |||
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 29 | Mutation and Laziness | Mutable References | Optional: RWO Chapter 8 |
Oct 29-30 | Precept 8: Modules | precept8.zip ; precept8_sol.zip | |
Tu Nov 3 | VOTE! | VOTE! | Brigitte Pientka's lazy notes |
Th Nov 5 | Effective ML | LIVE Guest Lecturer: Yaron Minsky, Jane St. ; | Optional: Jane St functional programming blog and podcast |
Th Nov 5 | Module Equivalence; Laziness; Mechanical Proofs | Pre-recorded: Module Equivalence, Mechanized proofs, Laziness | |
Nov 5-6 | Precept 9: References | range.mli; exercise9.txt (Solution) |
|
M Nov 9 | Assign 5 Due | ||
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 prefix scan | Parallel Sequences, Optional Reading: MapReduce; NESL |
Nov 19-20 | Precept 11: Parallel map/reduce | precept11.zip | |
Tu Nov 24 | Parallel Collections II | Parallelism & Assignment 7; Turing Machine Tape Proof | |
Thanksgiving Break | |||
Dec 1-2 | Be advised: We may move Precept 11 to the beginning of reading period | ||
M Dec 7 | Assign 7 Due | ||
Dec11,5pm - Dec12,5pm | Final Exam (2-3h in this 24h period) |