Course Description

As computer architectures become more complex, the design of good optimizing compilers becomes more critical. For high-performance architectures, for parallel architectures (including multi-core processors), and for effectively utilizing GPUs, compilers must also be able to detect and utilize fine-grain and/or coarse-grain parallelism.

Computer languages are also evolving and in many cases, such as scripting languages, they are also becoming more dynamic. Languages that are dynamic tend to have dynamic types and dynamic loading. Both of these features present challenges for the compiler.

Techniques used for optimizing compilers are also commonly used in program understanding tools, software engineering and software verification.

This course is designed to study the important components of such optimizing compilers. The major areas covered include: (1) intermediate representations, (2) flow analysis and optimization, (3) register allocation, and (4) optimizing for object-oriented and dynamic scientific languages.

The course projects will focus on techniques for the dynamic scientific programming language MATLAB. A wide range of projects will be available. Students may also suggest projects in related fields.

The course will provide a background for those students interested in further work in areas such as compiler design, flow analysis, optimization techniques, architecture design, programming language design, software engineering applications such as program understanding, decompilers, obfuscators, slicers or concern tools.

The course consists of lectures on general content by Professor Hendren, one special topic lecture by each student, 3 assignments, and a course project. The assignments combine practical experience with more theoretical development and analysis of compiler optimizations and transformations. The course project allows the students to complete their own small research project in an advanced area. Many possible projects will be suggested, and students are also free to propose their own topic which may apply to their research interests. Students will be expected to give a presentation and prepare a technical report on their selected projects. There are no examinations.

Laurie HENDREN 2016-09-05