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.
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.
The only exam is an in-class midterm.
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:
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.
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.