Date | Description |
---|---|
March 29 |
Overview & Racket intro slides, demo transcript |
March 31 |
Racket intro; Lists Racket basics (notes), function defs, demo1 transcript, demo2 transcript |
April 2 |
Lists and functions code, diagrams |
April 5 |
Lists, functions, let code, diagrams |
April 7 |
let, let*; tail recursion; function parameters; higher-order functions (map, filter) code, Recursion patterns (notes) |
April 9 |
tail recursion (cont), functions as parameters, map, filter code |
April 12 |
Higher-order functions; intro to environments and execution code, diagrams |
April 14 |
Closures and environments code, diagrams: simple let, simple lambda, nested lambda |
April 16 |
Closures and environments (trace) code, diagrams: currying, tail recursion |
April 19 |
Map environment example; Mutation in Racket slides, notes, lazy.rkt code, map diagram |
April 21 | Thunks, eager vs lazy evaluation, promises (same code and notes as Monday) |
April 23 |
Streams and memos (concl.) fib3 diagram |
April 26 |
Racket structs; interpreters slides, code |
April 28 | Interpreters, MUPL/hw5 |
April 30 |
interpreters (concl.), MUPL/hw5 mupl demo |
May 3 |
More MUPL; Ruby intro slides, code: silly.rb, Rat.rb |
May 5 |
Ruby intro (concl.) terminal output |
May 7 |
Ruby containers, blocks, and procs slides, terminal output |
May 10 |
Ruby duck typing, inheritance, mixins, and modules slides; code: Points.rb inherit.rb |
May 12 |
Parsers, scanners, grammars, and derivations slides |
May 14 | Regular expressions and scanners |
May 17 |
Scanners (concl.) DFA examples |
May 19 |
Grammars and parsing slides |
May 21 | Grammars, ambiguity |
May 24 |
LL grammars and top-down parsing; grammar hacking slides |
May 26 |
Memory management, garbage collection slides, diagrams: ref counting, cycles |
May 28 | Memory management (concl.) |
June 2 |
Java implementation slides, sample code |
June 4 |
JavaScript and Dynamic Languages; Course wrapup slides: dynamic, wrapup |