Notes
The lectures are broken into 9 units, as shown below, which are available online and in PDF form. Sometimes we will use slides for class, which will also be posted here. These pages are also reachable from the calendar.
- Unit 1: Programming Language Basics (Classes 1–2)
Course overview, Classifying programming languages, Steps of compilation - Unit 2: Scheme Basics (Classes 3–5)
Lists, Evaluation, Functions, Symbols, Let - Unit 3: Advanced Scheme (Classes 6–9)
Lambda, Side effects, Mutation, Tail recursion - Unit 4: Scanning and Parsing (Classes 10–13)
Scanning, Top-down parsing, Recursive descent, Shift-reduce, CFSMs, SLR - Unit 5: Semantic Analysis (Classes 14–15)
Abstract Syntax Trees, Static Type Checking - Unit 6: Names and scopes (Classes 16–18)
Lifetimes, Nested scopes, Declaration order, Function calls, Lexical scope, Closures - Unit 7: Functions (Classes 19–20)
Parameters, Polymorphism, Macros, Lazy evaluation, Built-ins - Unit 8: Implementation issues (Classes 21–26)
Garbage collection, Intermediate Representations, Optimization, Virtual Machines - Unit 9: Control (Classes 27–28)
For loops, iterators, generators, go-to, generics