CSE 788.12: Compile-Time Program Analysis and Transformations, Autumn 2010

Schedule and Notes

Assignments

Projects

Academic Integrity

Basic Information

Prerequisites

The prerequisites for this course are (1) CSE 755 or CSE 756, and (2) basic knowledge of C, C++, or Java. Instructor permission can always override these — speak with me if you are not sure whether you have the necessary background.

Course Overview

The goal of this course is to introduce students to basic foundations and current advances in the area of static (compile-time) program analysis as well as some related program transformations. Static program analyses are traditionally used in compilers for performance optimizations, as well as in software engineering tools for software understanding, evolution, debugging, and testing. The material will be useful for students working in compilers, systems, software engineering, and programming languages. Some of the topics to be covered include control-flow analysis, dataflow analysis, SSA form, type analysis, pointer/alias analysis, side-effect analysis, and program slicing. These topics apply both to imperative languages and object-oriented languages.

Course Organization

The course will have the following parts:

Lectures by the Instructor

I will present an overview of some basic static analyses and the related program transformations. The goal of these lectures is to establish some background for the project. No previous knowledge of program analysis is expected. I will start from scratch and will cover both a number of specific analyses/transformations as well as the corresponding theoretical foundations.

Homeworks

There will be several homeworks with small problems related to the material presented in the lectures.

Projects

Each student will complete two projects. The default project will be done by everyone. It will require the implementation of some foundational compile-time analysis algorithms. The individualized project is specific to each student and will be tailored to her/his ongoing and future research.

Grading

Homeworks 20%, default project 40%, individualized project 40%

Students with Disabilities

Any student who feels he or she may need an accommodation based on the impact of a disability should contact me privately to discuss his or her specific needs. Please contact the Office of Disability Services at (614) 292-3307, or visit 150 Pomerene Hall, to coordinate reasonable accommodations for students with documented disabilities.

Religious Obligations

I will do my best to accommodate any religious obligations you may have. Please contact me privately, at least a week in advance, to work out any relevant details.