| 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 |