Notice: For the latest information and guidance on Purdue's response to COVID-19 please visit:

Intro to Compilers: Optimization


Credit Hours:


Learning Objective:

After completing this course, you will be able to:
  • Explain how programs handle pointers, and how compilers generate code for them
  • Explain how compilers generate code for arrays
  • Explain dataflow analysis, including specific instances: liveness and available expressions
  • Explain pointer analysis and how to implement it
  • Explain loop optimizations and why they are useful
  • Extend a compiler to add support for pointers and arrays and implement a pointer analysis


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 generate code for pointers and arrays. Students will build a compiler that performs a basic pointer analysis.
Fall 2021 Syllabus

Topics Covered:

Code generation
Loop optimization
Dataflow analysis
Pointer analysis


Comfort with programming, especially data structures and recursion. Experience with object oriented programming will also be beneficial. To enroll in this course, students must have completed the first course in this series, Introduction to Compilers: Compiler Basics

Applied / Theory:

50 / 50


2 problem sets


Students will extend a C-to-RiscV compiler to support pointers and perform a pointer analysis.


1 exam


There is no required text for this class. However, students may find the book Engineering a Compiler, by Cooper and Torczon (2nd edition, Morgan Kauffman, ISBN: 978-0120884780) helpful.

Computer Requirements:

A computer that can install and run the latest versions of Java and a Git client.

Other Requirements:

Students will be asked to install versions of ANTLR ( and will be required to access GitHub through a suitable Git client.

ProEd Minimum Requirements: