Contents:

Course web site

The course web site is http://www.mit.edu/~6.170/.

Registration Form

All students must run student-setup.pl by 9pm on Wednesday, September 6 (the day of the first lecture), or they will not be able to take the class.

You also must register with the MIT Registrar. You do not need to be in the same recitation as others in your final project group.

Staff

Lecturers Daniel Jackson 32-G704 258-8471 dnj@csail.mit.edu
Martin Rinard 32-G744 258-6922 rinard@csail.mit.edu
TAs Edya Ladan-Mozes 32-G785 253-8116 edya@mit.edu
Giorgos Zacharia E25-201 lysi@mit.edu
Lucy Mendel 32-G708   lmendel@mit.edu
Igor Ginzburg   rogi@csail.mit.edu
Iris WingHei Tang   wingheit@mit.edu
LAs        
       
Course Secretary Maria Rebelo 32-G715 253-1550 mr@csail.mit.edu

Mail sent to 6.170-staff@mit.edu will reach the lecturers, TAs, and LAs.
Mail sent to 6.170-lecturers@mit.edu will reach the lecturers.
Mail sent to 6.170-tas@mit.edu will reach the teaching assistants.
Mail sent to 6.170-las@mit.edu will reach the laboratory assistants.

Staff Hours

TAs will schedule office hours and locations by the end of the first week of class. Please visit your TA (or another TA, if necessary) during their office hours if you have anything you'd like to discuss about the course or course materials. Please see the TA Office Hours for the locations and times of office hours.

LAs will schedule LA hours held in designated clusters. Please feel free to work in the cluster so you can talk to them in person when you have questions about Java or other technical details. Time permitting, they also monitor the forum while on duty, but they give priority to students who visit them in person. Please see the LA Lab hours for an up-to-date list of hours.

The lecturers are available by appointment but do not have fixed office hours.

Whom to Ask

When solving your assignments, the laboratory assistants should be your first resource for problems with your Java code or the Athena environment. For other questions, the LAs may be able to help you with advice or information, but the answer of a TA or lecturer is authoritative. Your TA can answer most questions about the course. The LAs or TAs may choose to escalate your questions to the head TA or the lecturers; you may also do so yourself if you do not receive an answer.

Here are some examples of questions appropriate for various staff members. Naturally, you shouldn't ask a question unless you have first tried to find the answer yourself. When asking a question, be sure to say what you have already tried to do to solve the problem; that way the staff won't waste its time and yours repeating something you already know.

Textbooks

These books are available at Quantum Books and Amazon.com, among other retailers.

Required Texts

The following book is required:

Recommended Texts

The following book is recommended:

Some other excellent books to consider for your reference library on software engineering are:

To help you learn Java, you may want to get a book. Here are some suggestions:

Where and When

Lecture/recitation

6.170 has lectures Monday, Tuesday and Wednesday from 2-3pm in room 32-123, and recitations on Thursday from 2-3pm.

Recitation Section Locations and Times (Thursdays):

The registrar will assign you a recitation. Please attend that recitation.

Recitation section information will be distributed by email and on the web on the evening of Wednesday September 6.

Grading Meetings

Each student will meet personally with his or her teaching assistant for 15 minutes each week to go over the completed problem set. The teaching assistant will have looked briefly at your work in advance, and will make a grading decision after the meeting. The purpose of the meeting itself is to give you a chance to explain your work, to answer questions about it, and to receive feedback. You should not expect to receive written comments in addition. Your teaching assistant will schedule the weekly meeting with you.

The first grading meeting will occur for Problem Set 1. There is no grading meeting for Problem Set 0. Students are required to attend grading meetings, and we reserve the right to penalize a student's problem set grade for missing a meeting.

Policies

Grading policy

Individual Work TA discretion (including recitation participation) 6% 70%
Problem set 0 1%
Problem set 1 8%
Problem set 2 8%
Problem set 3 8%
Problem set 4 8%
Problem set 5 8%
Problem set 6 8%
Reflection 15%
Group Work Final Project 30% 30%

We will make every effort to standardize TA grading policies, but we reserve the right to normalize grades across recitation sections to account for remaining disparities.

Reflection assignment

The reflection assignment assesses the extent to which you have absorbed the fundamental ideas of the course and applied them in your weekly assignments and final project. You will be asked to give a series of annotated examples, showing fragments of design, code or analysis, with an accompanying explanation of how you applied a particular technique, and a candid evaluation of the extent to which the technique helped. For example, you might show the rep invariant of some datatype, and explain how it helped you organize, analyze or test the code.

This assignment will be much easier to do if you have collected fragments in advance, so you should have this in mind as you work throughout the term. Negative examples ("this didn't work because...") are acceptable too, but boilerplate text that just regurgitates material from the lectures or textbook will receive no credit.

Reflection guidelines

The reflection assignment asks for a series of “annotated examples.” Each one should be focused on a particular concept or technique taught in class. Each one should be succinct and follow a standard structure:

Keep the writing formal, not personal. This should be a structured argument, not a story.

Excluding the artifacts, each example should be at most a page of writing. Including the artifacts interspersed in the text, each example should be no more than two pages total. You should turn in 3 to 5 of these “annotated examples”.

Reflection topics

Below are some possible topics. You can find many more in the lecture slides.

Late/missing work

Collaborative work

The Departmental Guidelines Relating to Academic Honesty require that we inform you of our expectations regarding permissible academic conduct.

It is our intention that each student gains the full benefit of 6.170 and achieves a full understanding of the course material. However, we recognize that some students benefit from discussions with other students. Therefore, we permit limited collaboration on 6.170 assignments.

It is your responsibility to satisfy both the letter and the spirit of the rules. If any part of this policy is not clear, or if you have any questions or concerns, ask a member of the course staff for clarification. Violating the collaboration policy may result in failing the class and/or other penalties. We will use technological and other means to detect cheating.

Problem sets

For the individual problem sets in the first half of term, you must write up all solutions on your own. However, you are permitted to discuss 6.170 assignments with other people. No materials you bring to or take away from such meetings may be turned in as (part of) your solution. Your solution must list all other people with whom you discussed solving the assignment.

You may not view anyone else's solutions (from this semester or previous semesters), refer to code or specifications in materials from previous offerings of 6.170 ("bibles"), or transcribe a solution from another source. No other 6.170 student may view your solutions; this includes your writing, code, tests, documentation, etc. It is a violation of the collaboration policy to send more than 5 lines of code to the forum, zephyr instance, or other location accessible to other students -- you are better off talking to an LA in person anyway -- or to give anyone besides the 6.170 staff and yourself read-access to your ~/6.170 directory or any other location where you keep 6.170 code.

As an exception to the prohibition against viewing another student's problem set, you are permitted to assist another student with tool-related problems (such as difficulty using Eclipse or CVS), even if such assistance results in incidental viewing of snippets of code.

Final project

For the final project, you are encouraged to collaborate with your teammates on all aspects of the work, although every member of the team is expected to contribute a roughly equal share to the design and implementation.

Using libraries and other external material

You are welcome to use libraries in your problem sets or final project, so long as they are in the public domain, or offered for your use by the 6.170 staff. In particular, you encouraged to take advantage of the standard Java libraries.

You may use conceptual material that you obtain from textbooks, the Internet, previous offerings of 6.170, and other sources. For instance, Introduction to Algorithms by Cormen, Leiserson, Rivest, and Stein is an excellent resource for looking up algorithms. If you use any material from an external source, you must credit it clearly in your documentation.

Procedures

Handouts

Handouts will be distributed on the class web site. Announcements will be posted as Messages of the Day on the class website and will be emailed to all students.

How to Submit Assignments

Students in 6.170 are required to submit the implementation part of the problem sets electronically, as the problem sets will specify. See the Problem Set Submission document for details about the procedure for turning in a problem set.

Your documentation must clearly indicate any shortcomings of your program. If your code does not compile, or if certain functionality is missing, and your documentation does not clearly and prominently indicate as such, then you will lose points for the omissions, as well as for the defect itself.

Diagrams which you turn in must be readable. While we will not be grading on artistic merit, if it is not easy to see what is happening, then you have not successfully conveyed the relevant information, and you will be graded accordingly.

Problem set hints

To complete assignments as efficiently as possible, and to derive the most benefit, we recommend that you: