Fall 2014

General Information

Catalog description // Recommended texts // Communication // Grading and attendance policy // Compiler Building and Running // Late policy // Collaboration // 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. Since lecture dates are not all finalized at the start of the semester, please pay attention to the schedule.

Grading and attendance policy

Your grade in 6.035 is based upon four components: your compiler (60%), three quizzes each worth 8%, class participation worth 6%, and the mini-quizzes at the beginning of every lecture, each worth 0.5%. You must therefore attend all lectures, and attend relectures for each lecture you miss, in order to take the mini-quizzes and receive a full grade.

For more information on the way the compiler project is graded, see the projects overview handout from the first recitation (available on the schedule page).

Late policy

6.035 follows a late policy similar to 6.828.

The first project (scanner / parser), where you work alone, is not officially graded. However, you should finish this project by the due date, as it will be used to match group members for the remaining projects. For more details about the project's submission, see the project description document.

For the remaining projects, each group has 72 late hours that they may divide up among the lab assignments however they'd like, without asking or telling us. However, no late hours may be used on the final optimizer project deadline. Each day late in excess of 72 hours will incur a full letter grade penalty on the entire group project component of your overall grade.

Late hours begin counting immediately from the deadline and are rounded up, e.g. five minutes past the deadline is one day hour. These late hours are intended for cases where you fall behind due to illness, job interviews, MIT athletic events, deadlines in other classes, etc. For extensions under extenuating circumstances (e.g., you are sick for a week), we require a letter from one of the student deans.


Although you may discuss the projects with anybody, you must develop the code yourself. For the scanner/parser project, you must develop your code alone. On all subsequent projects, you should work with your team members, but you may not develop or share any code with other teams.

You may collaborate on the mini-quizzes, but you may not collaborate with anybody on the full quizzes; doing so will result in a failing grade.

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

We will use the software provided by the Athena infrastructure to evaluate each group project. The project skeletons contain the scripts that will automatically build and run your projects.

The submitted project should be self-contained. With the exception of the languages and libraries provided by the Athena infrastructure, all code and libraries (when applicable; see the next section) should be contained within the submitted archive.

Make sure to build and run your compiler on the Athena infrastructure before submitting it for evaluation. If we are not able to automatically build or run your compiler using the scripts provided with the project skeletons, it will incur a 25% penalty on the number of points for this project.

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. However, there are some restrictions on that. For example, users of Haskell may not use Haskell's Data.Graph or Compiler packages.

Any libraries beyond the Java API or basic Scala libraries must be approved by the TA. We will not allow more advanced libraries, such as the PackratParsers package. 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 Mondays through Thursdays from 11:00am to 12:00pm in 36-156. There is not a lecture on every such day; for details, see the schedule.


Martin Rinard  
Teaching assistant
Sasa Misailovic  

Course mailing list:

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

Relectures and Office Hours

After the third week, we will start providing relectures for the students who missed the original lecture slot.

We will organize relectures that will review one original lecture from the previous week. The relectures will be by appointment -- the students will need to request the relecture (see below). We will alternate in giving relectures: if Martin delivered the original lecture, then Sasa will do the relecture; if Sasa delivered the original lecture, then Martin will do the relecture. Typically, Sasa will do relectures on Wednesday evenings, from 5 to 7.

To schedule a relecture, send the email to the course staff with the lecture title by Monday afternoon. The professor or the TA will respond with the available time slot.

We will organize office hours before each of the quizzes. We will announce the schedule of these office hours during the class.

We will not organize office hours related to the class projects.

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:03 EDT