Course Meeting Times
Lectures: Four sessions / week, 1 hour / session
Recitations: One session / week, 1 hour / session
MIT course 6.170 and proficiency in Java®
The lectures, problem sets and exams of 6.035 are structured around the compiler project, which is divided into five segments. Each segment addresses a separate aspect of compiler construction. Each segment (except the first) consists of a series of lectures, a programming assignment and a problem set or an in-class quiz.
At the beginning of a segment, the programming assignment will be given. Next, a series of lectures will introduce the material. The remaining time of the segment will be devoted to the project, thus no classes will be held. Each group should schedule a weekly “project review” meeting with your TA to discuss the design decisions, project progress and group status. A segment comes to an end on the due date of the project assignment. The calendar outlines the schedule and Handout 4 “Project Overview” expands on the project details. In addition to the projects, there will be three in-class quizzes and four paper assignments, which will include a one-on-one paper discussion with a staff member.
The main course work of 6.035 is the design and implementation of a compiler. In each segment of the course, a part of the compiler will be constructed. The five segments are the scanner and parser, semantic checker, code generator, data-flow optimizer, and instruction optimizer. All the five assignments are group projects.
As in previous years, we are offering two versions of this compiler project, an 18-unit version and a 12-unit version. All members of a project group should register for the same number of units. All students should register for 6.035 (12 units). Those wishing to do the more ambitious project should also register for 6.907 (6 units) by Add Date. A professor’s signature is not required on an Add form for 6.907. The grade for the six extra units will be based solely on the project.
The 12-unit version of the project is for the health-conscious: You will be served Decaf to get a hands-on experience of building a simple yet complete compiler. In the 18-unit version of the project, you will be served a strong, steaming Espresso to enable you to also experience some of the real world problems that arise in building industrial-strength compilers.
We offer the more difficult project and the six extra units to provide interested students with an opportunity to gain a deeper understanding of the issues involved in building a compiler. This should be seen as the reason for undertaking the 18-unit version of the course, not simply to get extra six units.
The due dates will be the same for both versions of the project.
Each group needs to schedule a weekly meeting with the TA to discuss the project status. This is a critical meeting where the students have a chance to clarify the implementation details of the project. Student participation will provide the TA’s feedback on the competency and contribution of each student.
TA Office Hours
The TA will set his own office hours and will spend those hours each week in his office. This will provide additional “face time” with the TA. These hours will be announced later. If you wish to see the TA at some other time, call or send e-mail to arrange a meeting.
- No make-up quizzes will be given. If you are unable to take a quiz for a legitimate reason, talk to one of the instructors before the quiz.
- Hand in the project write-up which is due before evening. For late project assignments a penalty of 10% will be imposed. However, the project has to be completed before the due date of the next project.
- For each project assignment, all the members of a group will get the same grade. However, if we feel that a particular member of a group is contributing above and beyond his or her share or not carrying the weight we will adjust his or her grade accordingly. Therefore it is important that you keep your TA updated with the progress of your group and your contributions to the project.
The overall grade for the class will be assigned using the following weights:
|Paper Discussion (3% each)||12%|
|In-class Quizzes (10% each)||30%|
Make sure you understand how your final grade will be calculated. Additional details about how the project grade is calculated are available in the projects section.
Reading and Discussing Papers
One of the new features of 6.035 this year is that we will be expecting you to read papers we hand out, then come and discuss the paper one-on-one with one of the professors or TAs. This section will describe what we are expecting to accomplish with this new feature and what we are expecting from you when you read the paper and discuss it with us.
What we are expecting to accomplish: Papers are the primary means of communicating current research results. Unlike standard instructional materials such as textbooks, papers are usually written by the person or group doing the research, and often only a short period of time after the research has been completed. Papers therefore tend to reflect the perspective of the person doing the research, and this perspective may differ from the perspective of others in the field. If the paper was written soon after the research was completed, the impact of the research and the full structure of the field may not yet be known. The paper may be missing key concepts that others will later find crucial to understanding the paper in its proper context.
Some of the papers we will give you to read will be perspective papers written specifically to present the perspective of a researcher about research performed years earlier. Here the emphasis is not on new results, but on understanding the importance of the research in the overall context of a field that may have developed significantly since the research was performed.
We therefore believe that when you read a paper, it is important to keep your own perspective in mind and interpret the results in light of your knowledge of how the field has developed after the paper was published. And appreciate any of the author’s insights that come through in the paper!
What we are expecting from you: Basically, we expect you to read the paper and be prepared for two areas of discussion: the facts and your opinion of the research. Many papers present a technique for doing something (in this course, typically some aspect of compiler construction or programming languages) and then some experimental results the authors obtained by trying the technique out in some experimental setting. Together, the technique and the experimental results are the objective facts of the paper. We expect you to know the facts experimental results are the objective facts of the paper. We expect you to know the facts and be able to present them.
Once you understand the facts, you need to develop an opinion of the research and be able to discuss and potentially defend that opinion. Here are some questions that may help you form your opinion:
Do you like the research? Did you find the techniques presented fun and interesting?
What is the context of the research? What was the state of the art in the field before the research was performed, and how did the research change things?
Did anything surprise you about the paper? Are there any insights you obtained from reading the paper that you can generalize or apply in other areas?
Do the experimental results allow you to evaluate the proposed technique? Would you have liked to see different data or a redesigned experiment? What constraints or goals shaped the experiments that the authors did perform?
Do the authors understand the wider ramifications of their research? What is their perspective on the research, and do you have a different perspective?
How have things changed since the paper was written? Has the research become more interesting and relevant over time? Have others built on the research, or was the entire effort rendered irrelevant by future developments?
How important will the research be in the future?
Finally, write a 150 to 200 word summary of the paper to prepare for the one-on-one meeting.
Incompletes are only given in unusual circumstances, and only when work has been completed satisfactorily up to the point when the incomplete was requested. Quoted from the MIT Course Catalog: “The grade of I is to be used only for subjects for which a minor portion of the work required has not been completed, and when a passing grade is expected when completed.”
Policy on Collaborative Work
The “Department Guidelines Relating to Academic Honesty” require that we inform you of our expectations regarding academic conduct. For homework assignments and the first project assignment, you are permitted to discuss the problem requirements and background material with anyone. However, the actual solutions you hand in should be your own individual work. For rest of the project assignments, you may discuss background material, problem requirements, approaches to problems, and design with anyone, but you may not view any code written for 6.035 by anyone, including past students. The actual coding should be the work of your group only. All exams are to be done individually. In the past, many academic misconduct cases have come about because of poor judgment on the part of students who find themselves in the position of starting an assignment late or feel that they are incapable of completing an assignment. Please bear in mind that the long-term consequences of an academic misconduct case will do much more damage to your career than the worst possible grade you can get in 6.035. Please think through the issues now so that don’t lose perspective if you find yourself temporarily tired, stressed, desperate, and tempted to violate the policy on collaborative work during the semester. Dealing with academic misconduct cases requires an enormous amount of nonproductive effort for the course staff. We will not be happy if we have to deal with one of these cases this semester, and we will prosecute to the fullest extent provided for by the University relations.