Lecture 
Dates 
Title 
Material covered 
Lecture 
1 
8/218/23 
What
is a compiler? 
Structure
of a compiler (introduction and overview) 

2 
8/258/28 
Scanners
and Finite Automata 
Regular
expressions, finite automata, scanner implementation 

3 
8/309/8 
Parsers
and Contextfree Grammars 
CFGs,
parse trees, LL parsing and LR parsing 

4 
9/119/13 
Semantic
actions for declarations and expressions 
Semantic
routines (building a symbolic table and AST) 

5 
9/15 
Semantic
actions for control structures 
Semantic
routines (for control structures) 

6 
9/159/18 
Functions 
Semantic
routines (for functions) 

7 
9/209/22 
Code
Generation and Local Optimization 
Instruction
selection, peephole optimization, common subexpression elimination, register
allocation 

8 
9/259/29 
Global
Register Allocation 
Register
coloring, spilling, register coalescing 

9 
9/29 
Instruction
Scheduling 
Data dependence
graph, reservation table, heightbased list scheduling 

10 
10/1110/13 
Dataflow
Analysis 
Dataflow
analysis, control flow graph, basic block, symbolic evaluation 

11 
10/1310/16 
Lattice
Theory 
Partially
ordered set, least fixpoint, fixpoint
theorem, lattice 

12 
10/1810/20 
More
Dataflow Analysis 
Liveness
analysis, reachingdef analysis, available expression
analysis, very busy expression analysis 

13 
10/2310/27 
Loop
Optimizations 
Code motion,
strength reduction, loop unrolling, loop fusion, loop interchange, loop
tiling 

14 
10/2711/1 
Dependence
Analysis 
Dependence
analysis, optimistic parallelization 

15 
11/811/15 
Pointsto
Analysis 
Flowsensitive pointsto analysis, flowinsensitive pointsto analysis, Anderson’s algorithm, Steensgaard’s algorithm 

16 
11/1511/20 
Shape
Analysis 
Shape analysis,
ThreeValued Logic Analysis 

17 
11/2011/27 
Operational
Semantics 
BigStep
Operational Semantics, SmallStep Operational Semantics 

18 
11/2912/4 
Axiomatic
Semantics 
Axiomatic
semantics, assertions, Hoaretriples 