COL729 : Compiler Optimizations : About

Course Staff

Instructor: Sorav Bansal.

Teaching Assistants (TAs):

Lectures: Mon, Thu. 8-9.30 (Slot A), SIT 006

Pre-requisites

This course will briefly sketch the fundamentals of compiler design and will quickly move to the primary focus of the course: compiler optimizations. We recommend that you should have done a compiler-design course beforehand. However if you have not taken that course but are very interested in taking this course, please write to me with your CV/resume and I can guide you based on your background. You should have at least done a UG course on logic and/or programming languages.

The official pre-requisites are (see courses of study):

or equivalent.

Why study compiler optimization?

How compiler optimizations are central to further progress in computer science: Compilers bridge the gap between what humans find easy to understand and what machines find easy to execute. There is perhaps no CS area that does not need this important capability in today's research scenario:

Some discussion on compiler optimizations in recent Turing award lectures is available here and here.
My opinion: Perhaps the most important innovations in the next decade in CS will be primarily based on advances in compilation support. See references page for some more pointers.

How it improves your understanding of computer science: Compilers is perhaps the only CS area that combines a rich knowledge of logic, algorithms, theory, and low-level system programming, design and performance optimization. Very commonly, logicians derive research problems from real-world compiler problems; also, system builders and researchers find some of the most intriguing and difficult problems in compiler design.

Course topics

Following are the tentative course topics; the exact topics will evolve as we go along the course

Lab assignments

We will have assignments primarily based on the LLVM IR to supplement the course material. The assignment load is expected to be moderate.