Lecture Topics

DateDescription
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