The Course at a Glance | ||||||||||||||||
| ||||||||||||||||
Course Objectives | ||||||||||||||||
This course explores the foundations and practical aspects of modern optimizing compilers. The course begins with the fundamentals of compiler optimization as currently practiced, and will then build upon these fundamentals to address issues in state-of-the-art commercial and research machines. Topics include: intermediate representations, basic blocks and flow graphs, data flow analysis, partial evaluation and redundancy elimination, loop optimizations, register allocation, instruction scheduling, interprocedural analysis, memory hierarchy optimizations, extracting parallelism, dynamic optimizations, and run-time. Students will design, implement, and evaluate significant optimizations within the framework of a realistic compiler. | ||||||||||||||||
Prerequisites | ||||||||||||||||
This course is not intended to be your first course on compiler construction or computer architecture. It is design for students who have already completed undergraduate-level courses on these topics. If you have not taken compiler and architecture courses already, it is still possible to take this course provided that you are willing to spend some additional time catching up on your own. It will also be helpful if you have some familiarity with the features of modern processor architectures (e.g., the memory hierarchy, pipelining, branch prediction, and instruction issue mechanisms) as well as strong programming proficiency in either Standard ML, Java, or Objective CAML. If you feel uncertain about whether you are adequately prepared to take this class, please discuss this with the instructor. | ||||||||||||||||
If You Are Not a CS or ECE Ph.D. Student | ||||||||||||||||
If you are not a graduate student in either the CS or ECE Ph.D. program, you need permission to take this class. If you have not already done so, send a message to the instructor stating your status, why you want to take the class, and if you want to take the class for credit or as an auditor. At the moment, all such students are on the course waiting list. The waiting list will be cleared upon receipt of your email. | ||||||||||||||||
Placing Out | ||||||||||||||||
Students who have already taken a graduate-level course in compiler optimization may find that some of this course material is familiar. It is likely that the focus and style of this course will be different from what you have experienced before, and that the pace will be fast enough that you will not be bored. However, if you feel strongly that you should be able to "place out" of all or part of this course, please discuss this with the instructor. | ||||||||||||||||
Course Work | ||||||||||||||||
Grades will be based on implementation tasks, a research project, a take-home worksheet, and class participation.
| ||||||||||||||||
Grading Policy | ||||||||||||||||
This is a (very) tentative breakdown of the grading for this course.
Late assignments will not be accepted without prior arrangement. | ||||||||||||||||
Course Schedule | ||||||||||||||||
Please see the course schedule here. |