Quick Facts

Course B629—Practical Compiling for Modern Machines (Topics in Programming Languages)
Credits 3
Location Lindley Hall 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:

We will attempt to answer these questions in this course.

Goals

This course aims to provide:

Prerequisites

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.

Course-load

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 presentation, selected from a list of topics. There will be no 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. This year, the course will also be restructured to devote more time to advanced topics in compilers, drawn from recent research papers.