Optimizing Compilers

CS 771 - Fall 2005

Tuesday/Thursday 2:00-3:15PM, Olsson 005


Course Overview

The theme of this course is the use of program analysis and transformation to improve an application's performance. We will cover the design and implementation of a compiler back-end, including many of the steps required to convert an intermediate representation to the final executable. We will focus on both machine-independent and machine-dependent optimizations.

Prerequisites

A strong background in programming, a solid understanding of data structures and algorithms, and a basic knowledge of compiler design. While it is generally assumed that you have had an undergraduate-level compilers course, you should be able to survive without it.

Instructor

Kim Hazelwood
Olsson 209, 434-982-2228
hazelwood+cs771@cs.virginia.edu
Office hours: Tuesdays 3:15-4:15 or by appointment

Grading

Homework Assignments

3-4 homework sets will be assigned. The primary purpose of these homework assignments is to re-enforce the concepts discussed in lecture. The homework assignments also provide you with hands-on experience with sophisticated optimization tools. You may elect to use a subset of these tools in your term project.

Examinations

The only exam is an in-class midterm.

Term Project

Instead of a final exam, there is a term project. You may work in groups of 2-3. You may implement and demonstrate a significant optimization algorithm, or propose another interesting, relevant project. Project ideas will be posted on the course website. Your project grade will be determined as follows:

Reading

Required Text (This book is not yet published - draft chapters will be available in class)

A. Aho, R. Sethi, J. Ullman, and M. Lam. 21st Century Compilers, Addison-Wesley, Boston, MA, 2005.

Optional Supplemental Texts

A. Aho, R. Sethi, and J. Ullman. Compilers Principles, Techniques, and Tools, Addison-Wesley, Reading, MA, 1986.

A. Appel. Modern Compiler Implementation in C, Cambridge University Press, Cambridge, United Kingdom, 1997.

K. Cooper and L. Torczon. Engineering a Compiler, Morgan Kaufmann, San Francisco, CA, 2003.

S. Muchnick. Advanced Compiler Design and Implementation, Morgan Kaufmann, San Francisco, CA, 1997.

Cooperation

Please feel free to talk with other class members about the homework assignments, but always turn in only your own work (e.g., never copy someone else's code!). It is in your best interest to attend the lectures and to read the assigned papers. For the term project, again feel free to talk with other class members.