Lecture Topics

DateDescription
March 27 Overview & Racket intro
slides, demo transcript
March 29 Racket intro; Lists
Racket basics (notes), function defs, demo transcript
March 31 Lists and functions
code, diagrams
April 3 Functions and environments
code, diagrams
April 5 let, let*; tail recursion
code, Recursion patterns (notes), diagrams
April 7 higher-order functions, functions as parameters, map, filter
code, diagrams
April 10 Higher-order functions; environments and execution
code, diagrams
April 12 Closures and environments and letrec
code, diagrams
April 14 Closures and environments and map
diagrams (same code from Wed.)
April 17 Mutation in Racket, thunks, eager vs. lazy evaluation.
slides, notes, code, diagram
April 19 Evaluation and promises (same code and notes as Monday)
April 21 Streams and memos (concl.)
fib3 diagram
April 24 Racket structs; interpreters
slides, code
April 26 Interpreters and language implementation
more code
April 28 interpreters (concl.), MUPL/hw5
mupl demo
May 3 Ruby intro
slides, code: silly.rb, Rat.rb, terminal output
May 5 Ruby containers, blocks, and procs
slides, terminal output
May 8 Ruby containers, blocks, and procs
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 15 Regular expressions and scanners
May 17 Scanners (concl.)
May 19 Grammars and parsing
slides
May 22 Ambiguity (concl.); LL grammars and top-down parsing; grammar hacking (start)
slides
May 24 LL grammars and top-down parsing; grammar hacking (concl.); Memory management (start)
slides
May 26 Memory management, garbage collection (concl.)
diagrams
May 31 Java implementation
slides, sample code
June 2 JavaScript and Dynamic Languages; Course wrapup
slides: dynamic, wrapup