Compilers



Home

Details

Schedule

References


Details


Compiler: Practice First

This course is organized in three parts: lectures, paper readings, and labs. The lectures cover basic topics and familiarize you with the main concepts, and the paper readings familiarize you with the latest research progress in current literatures. The lab section forces you to understand the concepts at a deeper level, since you will build a working compiler from the ground up. After the lab, you will understand the internals of a rather complex compiler and the compilation in general.

The compiler you will build, called Tiger, compiles a subset of the Java programming language, to x86-64 instruction set architecture. After finishing the core components of this compiler, you will also have the opportunities to expand the compiler extensively.

The major components of the Tiger compiler that you will be implementing include, but not limited to:

And there will be a final project, in which you are encouraged to propose your own ideas and implement them into your compiler.

For each lab, we will provide skeleton code for you to start with. But you will have to do all the hard work. You will have design freedom for the details of most data structures and algorithms.

At the end of the course, you will be able to find your way around the source code of most compilers, and more generally, be comfortable with compiler software. You will understand many compiler concepts in detail and will be able to use them in other environments. You will also understand the Java programming language, the Java bytecode and general OO programming techniques well.

Staff

Contact

Collaboration

For homework or labs, you may not collaborate with others; you may discuss with your classmates or the staffs, but the final work must be your own.

Do NOT post your solutions to lab or homework on publicly accessible websites or file spaces. Do NOT refer to the similar code on public webs.

Grading Policy