Caml
Power
Power
Schedule
Warning: The schedule may change slightly; refresh your browser every week or so!
Dates | Topic | Notes/Code | Reading | |
---|---|---|---|---|
The Basics | ||||
W Sep 7 | OCaml Introduction | Intro, hello.ml, sum.ml | Functional Basics, Type Checking, Optional: RWO pp 1-10 | |
Sep 8-9 | Precept 1: OCaml Intro | precept1.zip ticket.ml .merlin fizzbuzz.ml (fizzbuzz solution) exercise1.ml | ||
M Sep 12 | Simple Immutable Data: Variables, Tuples, Options | Let, Functions, Tuples | Type-directed Programming; Optional: RWO Chap 2 |
|
Tu Sep 13 | Assign 1 Due | |||
W Sep 14 | Thinking Inductively | Options, Lists, Sort, Java Rant |
Thinking Inductively; Optional: RWO Chap 3 |
|
Sep 15-16 | Precept 2: Lists, Options, Polymorphism | precept2.zip precept2_solutions.zip | ||
M Sep 19 | Poly-HO: Polymorphism and Higher-Order Programming | C rant, map/reduce, Poly HO! | Polymorphism and Higher-order Programming | |
Tu Sep 20 | Assign 2 Due | |||
W Sep 21 | More Data! | Datatypes, gml.ml | Optional: RWO Chapter 6 | |
Sep 22-23 | Precept 3: Assignment 3, Map, Fold and Datatypes | precept3.zip; exercise3_sol.ml | ||
Reasoning About Programs | ||||
M Sep 26 | Building Interpreters | Abstract syntax, Substitution and evaluation | Operational Semantics | |
Tu Sep 27 | Assign 3 Due | |||
W Sep 27 | More Interpreters | Model of OCaml, Assignment 4; simple interpreter code: eval0.ml; with recursive functions: eval3.ml | ||
Sep 28-29 | Precept 4: Assignment 4 and More About Closures | precept4.zip; precept4_sol.zip |
||
M Oct 3 | How OCaml uses memory | Space model (and pruning closures); simple interpreter code: eval0.ml; with recursive functions: eval3.ml | ||
W Oct 5 | Proving Programs Correct | Simple proofs, Induction for naturals, Induction for lists | Equational Reasoning | |
Oct 6-7 | Precept 5: Mutually Recursive Types, Equational Reasoning | theorems.ml; exercise4.ml (#4) (Sample solution, with proofs); exercise5.ml (solution) |
||
M Oct 10 | More Correctness Proofs | Induction for datatypes, Proofs about programming languages | Equational reasoning about data types
Optional Reading: Odd-Order Theorem; Four-Color Theorem |
|
Tu Oct 11 | Assign 4 Due | |||
W Oct 12 | Generalizing your Induction Hypothesis | Generalized induction hypotheses; OCaml as compiled | ||
Oct 13-14 | Precept 6: Tail Recursion and More Equational Reasoning | |||
Oct 17-21 | Fall break | |||
Modularity | ||||
M Oct 24 | ML Modules | Simple modules, Design choices | Optional: RWO Chap 4 (Modules), 9 (Functors) | |
W Oct 26 | Midterm exam Part I (in lecture) | |||
Oct 27-28 | Midterm Exam Part II (in your normally scheduled precept) | |||
M Oct 31 | Modules and Assignment 5 |
Functors, Module evaluation
(continuing the slide deck from last week) |
||
W Nov 2 | Reasoning about Modules | Representation Invariants | Optional: Abstraction and Representation Invariants | |
Nov 3-4 | Precept 8: Modules | precept8.zip ; precept8_sol.zip | ||
M Nov 7 | Module Equivalence | Module Equivalence, Mechanized proofs | ||
Mutation & Laziness | ||||
W Nov 9 | Mutation | Mutable References | Optional: RWO Chapter 8 | |
Nov 10-11 | Precept 9: Reasoning about Modules | range.mli; exercise9.txt (Solution) |
||
M Nov 14 | Effective ML | Guest Lecturer: Yaron Minsky, Jane Street LLC | Optional: Jane St functional programming blog and podcast | |
W Nov 16 | Lazy Evaluation | Laziness and Streams | ||
Nov 17-18 | Precept... | |||
M Nov 21 | Computability | Computability | Optional reading: The Birth of Computer Science at Princeton in the 1930s | |
Tu Nov 22 | Assign 5 Due | |||
Thanksgiving Break | ||||
Type Systems | ||||
M Nov 28 | Type Checking | Type Systems, Type Checking | ||
W Nov 30 | Type Inference | Type inference | Optional: Efficient Type Inference | |
Dec 1-2 | Precept 10: Exam Prep | |||
Parallelism and Concurrency | ||||
Tu Dec 5 | Assign 6 Due | |||
M Dec 59 | Parallel Collections | Parallel Sequences | Parallel Sequences, Optional Reading: MapReduce; NESL | |
W Dec 7 | Parallel Collections II | Parallel Prefix Scan; Assignment 7 | ||
Dec 8-9 | Precept 11: Parallel map/reduce | precept11.zip | ||
Th Dec 15 | Assign 7 Due | |||
Tu Dec 20 | Final Exam (9:00am, Friend 006, 3 hours) |