CS 4120 Fall 2011 Course Schedule

All dates for exams and lectures are provisional. Prelim dates are only approximate.

Lecture Date Lecture topic Readings Assignments
Parsing
1 Aug 24 Course overview Course overview, Dragon 1-1.4  
2 26 Lexical analysis and regular expressions Appel 1, Dragon 3–3.3 PS1 out
3 29 Automating lexical analysis Appel 2.1–2.5, Dragon 3.4-3.10 [JFlex example] PA1 out
4 31 Grammars and parsing Appel 3.1, Dragon 4–4.3  
5 Sep 2 Top-down (LL) parsing Appel 3.2, Dragon 4.4 PS1 due, PS2 out
Sep 5 Labor Day
6 7 Bottom-up parsing Appel 3.3, Dragon 4.5 PA1 due, PA2 out
7 9 LR parsing and parser generators Appel 3.4, 4.1–4.2, Dragon 4.6-4.8 [example]  
Static semantics
8 12 Semantic analysis and symbol tables Appel 5 PS2 due, PS3 out
9 14 Types Dragon 6.5  
10 16 Type systems   (add deadline)
11 19 Subtyping   PA2 due, PA3 out
12 21 Modules, type representation, visitors [notes|slides] Appel 4.3  
Code generation
13 23 Intermediate code (Wenzel Jakob) Appel 7.1, Dragon 6.1–2 PS3 due
14 26 Syntax-directed translation Appel 7.2–3  
15 28 IR lowering Appel 8.1 PS4 out 9/27
16 30 PA2 recap and ABI specification ABI specification  
17 Oct 3 Trace covering and abstract assembly Appel 8.2 PA3 due, PA4 out
18 5 Tiles and instruction selection Appel 9.1–2  
19 7 Finishing code generation Appel 9.3 PS4 due
Oct 10 Fall Break
Optimization and program analysis
20 12 Introduction to optimization Muchnick 11,Dragon 9.1  
21 14 Live variable analysis Appel 10, Dragon 9.2.5, C&T 9.2–9.2.3 (drop deadline)
22 17 Dataflow analysis Dragon 9.2, Muchnick 8.2  
23 19 Dataflow analysis frameworks Dragon 9.3, Muchnick 8.3–8.4 PA4 due, PA5 out
24 21 Register allocation Appel 11.1–3, Dragon 8.8.4, Poletto/Sarkar  
25 24 Reaching definitions, webs, SSA Appel 19, Muchnick 8.1, 8.10–8.11, C&T 9.3  
Oct 25 Prelim 1: 7:30pm, Phillips 219 (covers material in lectures 1–24)
Oct 26 No class (post-exam recovery)
26 28 Control flow analysis Appel 17.2,18.1  
27 31 Induction variables and loop optimizations Appel 18.2–3, Muchnick 14.1  
28 Nov 2 More loop optimizations, value numbering Appel 18.4–5, Muchnick 14.2, Muchnick 12.4, C&T 8.3.2  
29 4 Redundancy elimination Appel 17.2–3, Muchnick 12.4,13.1, Dragon 9.4-5  
30 7 Pointer/alias analysis Appel 17.5, Muchnick 10, Dragon 12.4 PA5 due
31 9 Interprocedural analysis, iterative fixed-point algorithms Appel 20.1–3 PA6 out
Supporting advanced language features
32 11 Object layout and method dispatch Appel 14 PS5 out
33 14 Multiple inheritance [slides|notes]    
34 16 More object features, first-class functions    
35 18 Functional language features Appel 15  
36 21 Linking and shared libraries   PS5 due
Nov 23 Thanksgiving break
Nov 25 Thanksgiving break
37 28 Memory management Appel 13 PA6 due 11/23, PA7 out 11/23
38 30 Parametric polymorphism Appel 16  
Dec 1 Prelim 2: 7:30pm, Bard 140
39 Dec 2 Exceptions and beyond    
Dec 14 Final project demos and PA7 due: December 14–16