Date | Description |
---|---|
March 28 |
Welcome to 341! Course mechanics; Trefoil v1 use and implementation Whiteboards Video Demo code |
March 30 |
OCaml intro: top-level variables, functions, recursion Demo code Video |
April 1 |
More OCaml intro: let expressions, lists, tuples, and options Video Demo code |
April 4 |
OCaml wrapup; flat syntax versus nested syntax; syntax as trees Whiteboards Video Demo code |
April 6 |
ASTs; the dynamic environment; evaluation; careful description of OCaml; S-expresions; tokenization; two-stage parsing Whiteboards Video |
April 8 |
Using Trefoil v2: old ideas in new clothes; Implementing Trefoil v2: ASTs in Java; careful description of Trefoil v2; implementing the dynamic envornment Whiteboards Video Demo code |
April 11 |
Trefoil v2: phases of errors, let expressions, untyped pairs, functions; OCaml: records Whiteboards Video Demo code |
April 13 |
Trefoil: test bindings, implementing functions; OCaml: variants Video Demo code |
April 15 |
Trefoil: implementing recursive functions; OCaml: pattern matching Whiteboards Video |
April 18 |
OCaml: more pattern matching and nested patterns Video Demo code slash notes |
April 20 |
OCaml: Tail recursion Video Demo code |
April 22 |
OCaml: tuple patterns in function arguments, exceptions; Trefoil: intro to structs Video Demo code |
April 25 |
Trefoil: structs for variant types, careful description of structs, cond expressions; OCaml: ASTs, dynamic environments, association lists Video Demo code |
April 27 |
Careful description of Trefoil v3 pattern matching Video Demo code |
April 29 |
OCaml: first-class functions: higher-order, polymorphic, and anonymous Video Demo code |
May 2 |
Unit, if-without-else, ignore, structural equality; anonymous functions, returning functions, our own higher-order functions Video Demo code |
May 4 |
Lexical scope and closures Video Demo code |
May 6 |
Closure idioms Video Demo code |
May 9 |
OCaml: More closure idioms; Mutation Video Demo code |
May 11 |
Trefoil: first-class functions; thunks and streams Video Demo code(also we updated the lecture 19 code with more explanation) |
May 13 |
Trefoil: more streams; understanding streams via closure semantics Video Demo code |
May 16 |
Trefoil: Side effects, References, and Promises Video Demo code |
May 18 |
Trefoil: Two new ways to extend the language: by "expanding in the parser" and by representing Trefoil programs as data in Trefoil Video Demo code |
May 20 |
Macros Whiteboards Video Demo code |
May 23 |
Objects, pure OO Whiteboards Video Demo code (same link as last time, we just added a bit to the bottom) |
May 25 |
The 341 2x2 matrix; Static vs Dynamic typing Whiteboards Video |
May 27 | Dynamic dispatch precisely; Implementing objects |
June 1 | TBD |
June 3 | Victory lap |