ECE 57300: Lecture Schedule


 

Lecture
Number

Dates

Title

Material covered

Lecture
notes

1

8/21-8/23

What is a compiler?

Structure of a compiler (introduction and overview)

Lecture notes #1

2

8/25-8/28

Scanners and Finite Automata

Regular expressions, finite automata, scanner implementation

Lecture notes #2

3

8/30-9/8

Parsers and Context-free Grammars

CFGs, parse trees, LL parsing and LR parsing

Lecture notes #3

4

9/11-9/13

Semantic actions for declarations and expressions

Semantic routines (building a symbolic table and AST)

Lecture notes #4

5

9/15

Semantic actions for control structures

Semantic routines (for control structures)

Lecture notes #5

6

9/15-9/18

Functions

Semantic routines (for functions)

Lecture notes #6

7

9/20-9/22

Code Generation and Local Optimization

Instruction selection, peephole optimization, common subexpression elimination, register allocation

Lecture notes #7

8

9/25-9/29

Global Register Allocation

Register coloring, spilling, register coalescing

Lecture notes #8

9

9/29

Instruction Scheduling

Data dependence graph, reservation table, height-based list scheduling

Lecture notes #9

10

10/11-10/13

Dataflow Analysis

Dataflow analysis, control flow graph, basic block, symbolic evaluation

Lecture notes #10

11

10/13-10/16

Lattice Theory

Partially ordered set, least fixpoint, fixpoint theorem, lattice

Lecture notes #11

12

10/18-10/20

More Dataflow Analysis

Liveness analysis, reaching-def analysis, available expression analysis, very busy expression analysis

Lecture notes #12

13

10/20-10/23

Loop Optimizations

Code motion, strength reduction, loop unrolling, loop fusion, loop interchange, loop tiling

Lecture notes #13