Spring 2019

General Information

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

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.

Recommended texts

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)
    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.


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).

Late policy

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 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

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.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 Compiler packages.

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.

Class meetings

Lectures will be held on Mondays through Fridays from 1:00pm to 2:00pm in room 24-307. There is not a lecture on every such day; for details, see the schedule.


Michael Carbin  
Teaching assistants
Alexander @Alist List  

Course mailing list:

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

Office Hours and Relectures

Information on Office Hours Coming Soon.

Questions or comments regarding 6.s081? Send e-mail to the TAs at 6.s081-www@mit.edu.

Top // 6.s081 home // Last updated Monday, 04-Feb-2019 13:55:47 EST