| Section | Topic | Readings (A=Appel, C=Cooper, D=Dragon, R=rainoftime) |
| Introduction | Course overview | A1 |
| Lexical Analysis | RE, automata, lexer | A2, D3.3, D3.6-3.8 |
| Parsing I | CFG, parse tree | A3.1, D4.2 |
| Parsing II | Top-down parsing | A3.2, D4.3-4 |
| Parsing III | Bottom-up parsing | A3.3, D4.5-7 |
| Abstract Syntax | Semantic action, AST | A3.4, A4, D4.8-9 |
| Semantic Analysis | Symbol table, type checking | A5, D6.1-2, D7.6, Cardelli | Activation Record | Memory layout, stack frame, use of registers | A6, D7.2-4 |
| Translating to Intermediate Code | Overview of IR, translation to IR tree | A7, C5, D8.1 |
| Basic Block and Traces | Lowering of IR tree | A8 |
| Instruction Selection | Maximal munch, dyanmic programming, tree grammars | A9 |
| Liveness Analysis | Overview of compiler optimizations, liveness analysis | A10, D10.6 |
| Register Allocation | Graph coloring | A11, C13.3, C13.5, D9.5-6 |
| Garbage Collection | Mark-and-sweep, reference counting, copy collection | A13, C13.5 |
| Object-oriented Languages | Field layout, method dispatch, membership testing | A14 |
| Loop Optimizations | Dominance, natural loops, induction invarianthoisting | A18 |