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
Campus/Online:
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):
None.
Recommended Text(s):
- 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)