ECE 59500 - Introduction to Compilers III: Optimization


This is a 5-week course for fully online students. On-campus student will take ECE 57300.

Course Details

Lecture Hours: 3 Credits: 1

Counts as:

Normally Offered:

Each Fall


Online only

Requisites by Topic:

Must have completed the first and second courses in this series: 1) Intro to Compilers, Compiler Basics and 2) Intro to Compilers, Code Generation. Comfort with programming, especially data structures and recursion. Experience with object-oriented programming is also beneficial.

Catalog Description:

This course covers advanced topics in compiler optimization: dataflow analysis and pointer analysis to perform global optimizations, and both low-level loop transformations such as loop-invariant code motion and high-level loop transformations such as loop tiling. The course also explains how compiler generates code for pointers and arrays. Students will build a compiler that performs a basic pointer analysis.

Required Text(s):


Recommended Text(s):

  1. Engineering a Compiler , Second Edition , Cooper, Keith, Linda Torczon , Safari, an O'Reilly Media Company , 2011

Learning Outcomes:

A student who successfully fulfills the course requirements will have demonstrated an ability to:
  1. Explain regular expressions and lexing procedures. [None]
  2. Explain context-free grammars and LL(1) parsing. [None]
  3. Explain semantic actions and AST construction. [None]
  4. Explain how to translate ASTs into executable code. [None]
  5. Build a basic compiler that can translate a program into executable code. [None]
  6. Extend a compiler to add support for pointers and arrays and implement a pointer analysis. [None]

Lecture Outline:

1 Topic
1 Functions
2 Compiling functions
3 Type checking
4 Type checking in compilers
5 Optimization: Peephole
6 Optimization: Common subexpression elimination
7 Optimization: Dead code elimination
8 Local register allocation
9 Global register allocation

Assessment Method:

Problem sets, programming assignments, final exam. (11/2021)