Catalog description //
Recommended texts //
Grading and attendance policy //
Compiler Building and Running //
Late policy //
Third-party libraries //
Class meetings //
MIT catalog description
Prereq.: 6.004 and 6.031
This subject qualifies as Computer Systems concentration subject.
Studies the design and implementation of modern, dynamic programming languages. Topics include fundamental approaches for parsing, semantics and interpretation, virtual machines, garbage collection, just-in-time machine code generation, and optimization. Course will include a semester-long, multi-person project that delivers a virtual machine that spans all of the above topics.
6.s081 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.
All assignments will be made available on the course calendar. We will make all announcements 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.s081 is based upon four components: your virtual machine
(75%), two quizzes (each worth 10%), and
the mini-quizzes at the beginning of every lecture (5%). You
must therefore attend all lectures, 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).
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
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).
In 6.s081, you build a virtual machine 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 C++ STL must
be approved by the TAs. 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 TAs.
Lectures will be held on Mondays through Fridays from 10:00am to 11:00am in
room E25-111. There is not a lecture on every such day; for details, see the schedule.
Course mailing list:
If you have questions, you may contact the course staff
Office Hours and Relectures
Information on Office Hours Coming Soon.