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

Basic Information

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

Lectures are Tuesday and Thursday at 12:00 p.m. - 1:20 p.m in 1305 Newell-Simon Hall. There are no regular recitations scheduled.


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