Schedule

March
MondayTuesdayWednesdayThursdayFriday
29
10:30-11:20 Lecture
zoom link
Overview & Racket intro
slides, demo transcript
30 31 01 02
10:30-11:20 Lecture
zoom link
Lists and functions
code, diagrams

April
MondayTuesdayWednesdayThursdayFriday
05
10:30-11:20 Lecture
zoom link
Lists, functions, let
code, diagrams
06
23:00 HW1 due (sample solution) (Racket warmup)
07
10:30-11:20 Lecture
zoom link
let, let*; tail recursion; function parameters; higher-order functions (map, filter)
code, Recursion patterns (notes)
08 09
10:30-11:20 Lecture
zoom link
tail recursion (cont), functions as parameters, map, filter
code
12
10:30-11:20 Lecture
zoom link
Higher-order functions; intro to environments and execution
code, diagrams
13
23:00 HW2 due (sample solution) (More Racket)
14
10:30-11:20 Lecture
zoom link
Closures and environments
code, diagrams: simple let, simple lambda, nested lambda
15 16
10:30-11:20 Lecture
zoom link
Closures and environments (trace)
code, diagrams: currying, tail recursion
19
10:30-11:20 Lecture
zoom link
Map environment example; Mutation in Racket
slides, notes, lazy.rkt code, map diagram
20
23:00 HW3 due (Racket programming & testing)
21
10:30-11:20 Lecture
zoom link
Thunks, eager vs lazy evaluation, promises (same code and notes as Monday)
22 23
10:30-11:20 Lecture
zoom link
Streams and memos (concl.)
fib3 diagram
26
10:30-11:20 Lecture
zoom link
Racket structs; interpreters
slides, code
27
23:00 HW4 due (sample solution) (Streams and things)
28
10:30-11:20 Lecture
zoom link
Interpreters, MUPL/hw5
29 30
10:30-11:20 Lecture
zoom link
interpreters (concl.), MUPL/hw5
mupl demo

May
MondayTuesdayWednesdayThursdayFriday
03
10:30-11:20 Lecture
zoom link
More MUPL; Ruby intro
slides, code: silly.rb, Rat.rb
04 05
10:30-11:20 Lecture
zoom link
Ruby intro (concl.)
terminal output
06 07
10:30-11:20 Lecture
zoom link
Ruby containers, blocks, and procs
slides, terminal output
10
10:30-11:20 Lecture
zoom link
Ruby duck typing, inheritance, mixins, and modules
slides; code: Points.rb inherit.rb
11
23:00 HW5 due (mupl interpreter); starter code: hw5.rkt; starter tests: hw5tests.rkt
12
10:30-11:20 Lecture
zoom link
Parsers, scanners, grammars, and derivations
slides
13 14
10:30-11:20 Lecture
zoom link
Regular expressions and scanners
17
10:30-11:20 Lecture
zoom link
Scanners (concl.)
DFA examples
18
23:00 HW6 due (Ruby warmup)
19
10:30-11:20 Lecture
zoom link
Grammars and parsing
slides
20 21
10:30-11:20 Lecture
zoom link
Grammars, ambiguity
24
10:30-11:20 Lecture
zoom link
LL grammars and top-down parsing; grammar hacking
slides
25
23:00 HW7 due (calculator grammar) (part I sample solution) (Regular exps. and scanners)
26
10:30-11:20 Lecture
zoom link
Memory management, garbage collection
slides, diagrams: ref counting, cycles
27 28
10:30-11:20 Lecture
zoom link
Memory management (concl.)
31
Memorial Day
01 02
10:30-11:20 Lecture
zoom link
Java implementation
slides, sample code
03
23:00 HW8 due (part I sample solution) (Grammars and parser/ interpreter)
04
10:30-11:20 Lecture
zoom link
JavaScript and Dynamic Languages; Course wrapup
slides: dynamic, wrapup