Quick Facts

Course B629—Practical Compiling for Modern Machines (Topics in Programming Languages)
Credits 3
Location Informatics (E) 122
Times Mon & Wed, 2:30 PM-3:45 PM 11:15 AM-12:30 PM
Instructor Arun Chauhan
Office Hours By appointment
Textbook Keith Cooper and Linda Torczon, Engineering a Compiler. Morgan Kaufmann Publishers, 2003.

About the course

We did not regard language design as a difficult problem, merely a simple prelude to the real problem: designing a compiler that could produce efficient programs.

John Backus, the “Father of Fortran”

Consider this:

We will attempt to answer these questions in this course.


This course aims to provide:


You are expected to know at least two programming languages and be fluent in at least one of those (meaning, you should have written multiple non-trivial programs in that language). You are not required to have any prior background in compilers, but prior knowledge of the fundamentals of programming languages and compilation will certainly help. Familiarity with Unix / Linux is highly recommended.


There will be 3-4 programming assignments, the last of which may be a project. Project topics will be chosen based, partly, on their potential to spawn research papers. There will be one mid-term exam and one final exam. The course will assume no background in compilers.

An important recent addition to the course is discussion of scripting languages that are rapidly becoming popular, virtual machines—the execution mechanism used by most modern scripting languages, and the role of compilers in these languages.