Catalog description //
Recommended texts //
Grading and attendance policy //
Compiler Building and Running //
Late policy //
Third-party libraries //
Class meetings //
Office Hours and Relectures
MIT catalog description
Prereq.: 6.004 and 6.031
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.
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)
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 made on the course Piazza. 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, two quizzes, and
the mini-quizzes at the beginning of every lecture. You
must therefore attend all lectures, in order to take the mini-quizzes and receive a full
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).
We expect you to attend all quizzes and submit the project on time.
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
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
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
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.
Lectures will be held on Mondays through Fridays from 11:00am to 12:00pm in
room 3-370 MWF, and room 4-149 TR. There is not a lecture on every such day; for details, see the
Course mailing list:
If you have questions, you may contact the course staff
Office Hours and Relectures
Tuesday relectures are held on Tuesdays from 5-6 pm in room 2-142 and Thursday relectures are held on Thursdays from 5-6 pm in room 2-135. Email the TAs to schedule a relecture for other class days. Office hours are Tuesdays from 6-7 pm in room 2-142 and Thursdays from 6-7 pm in room 2-135. On Tuesdays and Thursdays that lecture doesn't occur, office hours are scheduled during relecture time, i.e., they are held Tuesdays from 5-7 pm in room 2-142 and Thursdays from 5-7 pm in room 2-135.
We will organize additional office hours before each of the quizzes and leading up to the due dates of class projects.
We will announce the schedule of these office hours during the class.