CS5863: Introduction to Program Analysis and Compiler Optimization

January 2022 - May 2022



Credits: 3 credits (includes theory as well as lab component)
Prerequisites: CS5863 A grade of "A" in CS3320 and CS3423 for 3rd/4th year B.Techs; Course CS6240 at IITH or its equivalent for M.Techs and PhDs (Primarily 1st years: exceptions allowed. Please get a permission from me.)

Course Description (CS5863)

The objective of this course is to learn basic and program analysis and compiler optimization techniques, either traditional or modern in their scope.

The initial part of the course would be devoted to a collection of traditional and classic compiler analyses and optimizations that are primarily based on control flow and data flow analyses. This would be followed by studying some representations and high-level optimizations that are based on the static single assignment intermediate representation.

The latter part of this course would be devoted to a model named polyhedral compilation where for-loops can be transformed to run efficiently on advanced architectures like multi-core CPUs, or GPUs using rational and integer linear programming techniques. Here, the focus would be on basics of the three phase process of dependence analysis, affine scheduling and code generation.

A large part of this course would be about either reading programm analysis or compiler optimization papers, or studying the implementations of optimizations in a compiler like LLVM, or implementing optimizations with a goal of obtaining performance/scalability improvements.


Lecture Schedule

In Google Drive.

Book References:


Suggested readings:


Grading (Tentative)

Activity Weight
Class Participation 10%
Prog. Assignments 30%
Written Assignments (scribes, paper summaries etc.) 15%
Written Exam 30%
Paper Presentations (in class) 15%