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