Spring 2013

General Information

Catalog description // Recommended texts // Communication // Grading and attendance policy // Late policy // Collaboration // Third-party libraries // Class meetings // Staff // TA office hours

MIT catalog description

Prereq.: 6.004, and 6.005
U
4-4-4
8 EDP

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.

Communication

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.

For the first project (scanner / parser), where you work alone, you receive a full letter grade off of that project for each day it is late. Days begin counting immediately from the deadline and are rounded up, e.g. five minutes past the deadline is one day late.

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. Days are counted as they are for the first project. Do not assume that late hours are counted at a smaller granularity than hours. 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.

Collaboration

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.

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 (not more advanced libraries, such as the PackratParsers package) must be approvide by the TAs. 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 Thursdays from 11:00am to 12:00pm in 36-156. There is not a lecture on every such day; for details, see the schedule.

Staff

Lectures
Martin Rinard  
 
Teaching assistants
Cam Tenny  
Michael Carbin  
Russell Cohen  

Course mailing list:

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

TA office hours

After the second week, the first hour of office hours is devoted (if necessary) to relectures. The second hour is devoted to Q & A, project help, etc.

Russell Cohen: Monday, 5-7 PM, Stata 7th floor Gates
Michael Carbin: Tuesday, 4-6 PM, Stata, 7th floor Gates
Cam Tenny: Wednesday, 7-9 PM, Stata 7th floor Gates

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