Quick Facts

Course B629—Practical Compiling for Modern Machines (Topics in Programming Languages)
Credits 3
Location LH 115
Times Mon & Wed, 2:30 PM-3:45 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:


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.


The course will involve one semester-long project. There will be one mid-term exam and one final exam.

In a departure from the past offerings, there will be no programming assignments. Instead, there will be one semester-long project, with intermediate milestones. The course will assume no background in compilers.

Another important addition to the course this year 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.