Spring 2017

General Information

Catalog description // Recommended texts // Communication // Grading and attendance policy // Compiler Building and Running // Late policy // Collaboration // Compiler building and running // Third-party libraries // Class meetings // Staff // Relectures and Office Hours

MIT catalog description

Prereq.: 6.004, and 6.005

Analyzes issues associated with the implementation of higher-level programming languages. Fundamental concepts, functions, and structures of compilers. The interaction of theory and practice. Using tools in building software. Includes a multi-person project on compiler design and implementation. 8 Engineering Design Points.

Recommended texts

6.035 has no officially required textbook. All of the material you need is taught in class, with the exception of the documentation for your implementation language and associated libraries. However, the following books may be helpful in implementing various components of your compiler, and are available from MIT libraries.

  • Modern Compiler Implementation in Java (Tiger Book)
    Andrew W. Appel and Jens Palsberg
    Cambridge University Press, 2002

Many other resources such as technical papers, interesting and useful blog posts, and reference guides are available on the references page.


We will distribute assignments and make all announcements on the course web site. Important announcements will also be e-mailed to the class. We have also set up a page on piazza that you can use to ask questions about the class or the assignments. Since lecture dates are not all finalized at the start of the semester, please pay attention to the schedule.

Grading and attendance policy

Most of your grade (94%) will be determined based on the performance on the projects, with the remaining 6% determined by participation in class and on piazza. The breakdown will be as follows:

  • Assignment 1, Parsing and Lexing: 13%
  • Assignment 2, Recursive Interpreter: 15%
  • Assignment 3, Bytecode Interpreter: 20%
  • Assignment 4, Memory management: 12%
  • Assignment 5, Optimization: 34%

The first two assignments will be individual; the last three will be done in teams of three students each, but will also include a relatively small individual component.

Late policy

We expect you to submit all assignments on time. Any project submitted after the deadline will incur a 5 point penalty for each day of delay. For extensions under extenuating circumstances (e.g., you are sick for a week), we require a letter from one of the student deans to waive the penalties.


Although you may discuss the projects with anybody, you must develop the code yourself or with your approved team members. The first two assignments will be individual assignments. On all subsequent projects, you should work with your team members, but you may not develop or share any code with other teams.

Do not post your lab or homework solutions on publicly accessible web sites or file spaces; this enables cheating for students in future years.

Compiler Building and Running

All projects in the class will be developed in C++. In order to avoid compatibility issues, we have put together a virtual-box virtual machine with the latest version of Ubuntu that you can use to develop your software. We will be using that VM to test your submissions, so it is your responsibility to make sure your code compiles and runs on it. The default password for the VM is "IwillgetanA". (The VM is about 2GB to download and expands to 4GB; if that is too large for you to download, you can also test your code on athena).

Third-party Libraries

In 6.035, you build a compiler almost entirely from scratch. There are a few allowed exceptions: you may use one of the approved parser generators, described in the first project & athena handouts. You may use various language APIs for working with collections and data types.

Any libraries beyond the C++ STL must be approved by the TA. In general, if you are unsure of whether or not you are allowed to use a piece of software, ask the TA.

Class meetings

Lectures will be held on Tuesdays and Thursdays from 11:00am to 12:00pm in rooms 4-237 TR.


Michael Carbin  
Armando Solar-Lezama  
Teaching assistants
Raeez Lorgat  

Course mailing list:

If you have questions, you may contact the course staff at 6.035-staff@mit.edu

Office Hours

We will announce the schedule of these office hours during the class.

Questions or comments regarding 6.035? Send e-mail to the TAs at 6.035-staff@mit.edu.

Top // 6.035 home // Last updated Saturday, 18-Mar-2017 14:44:10 EDT