ECE 59500 - Introduction to Compilers III: Optimization

Note:

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

Course Details

Lecture Hours: 3 Credits: 1

Areas of Specialization:

  • Computer Engineering

Counts as:

Normally Offered:

Each Fall

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):

None.

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:

  • Explain regular expressions and lexing procedures
  • Explain context-free grammars and LL(1) parsing
  • Explain semantic actions and AST construction
  • Explain how to translate ASTs into executable code
  • Build a basic compiler that can translate a program into executable code
  • Extend a compiler to add support for pointers and arrays and implement a pointer analysis

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)