Welcome to the WWW homepage for CMU 15-745, "Optimizing Compilers for Modern Architectures."

Basic Information

The course is being taught by Professors Seth Copen Goldstein and Tim Callahan.  The course administrator is Marilyn Walgora. For office hours, locations, email, etc. see the staff page.

Lectures are Tuesday and Thursday at 9:00 a.m. -10:20 a.m in Wean 5409.  There are no official Recitations scheduled.

New Information

When necessary, we will place important information here. So check the web pages frequently.

Project proposal details
Project ideas


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 whenever new computer architecture's are developed in tandem with new compiler technology. It is only slightly overstatings the case to say that much of today's advances in computer architecture is 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, 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.