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/2010/23 
Loop
Optimizations 
Code motion,
strength reduction, loop unrolling, loop fusion, loop interchange, loop
tiling 