Welcome! CMU 15-745 Spring 2008, "Optimizing Compilers for Modern Architectures."

Basic Information

The course is being taught by Professor Seth Copen Goldstein. The teaching assistant is David Koes. The course administrator is Marilyn Walgora. For office hours, locations, email, etc. see the general information page.

Lectures are Tuesday and Thursday at 10:30 a.m. - 11:50 a.m in Wean 5409. There are no regular recitations scheduled.

New Information
The exam will be Thursday, April 10. Two exams from previous years are available here and here.


The compiler is the programmer's most important tool. It gives the programmer the freedom to write practical programs in a high-level programming language while still achieving good execution times and efficient use of space. In fact, compilers are so important that new computer architectures are developed in tandem with new compiler technology. It is only slightly overstating the case to say that much of today's advances in computer architecture are driven by compilers. Furthermore, new architectures are never sold without a companion compiler. This means that for just about every computer architecture company, one of the most effective ways to increase sales is to produce a better optimizing compiler, thereby increasing the claimed performance of the new processor architecture.

In this course, we will study the fundamentals of compiler optimization, and will 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, dependence analysis, partial evaluation and redundancy elimination, loop optimizations, register allocation, instruction scheduling, interprocedural analysis, memory hierarchy optimizations, extracting parallelism, and dynamic optimizations. Students will implement significant optimizations within the framework of a modern research compiler.

Top General Info Schedule Projects Assignments Papers Useful Info