Welcome to 6.096!
This handout describes some of the general information that you will
need to know about 6.096. It also includes several course policies
that we will expect you to abide by during this term. You should
read through this handout and make sure that you understand its contents.
You will probably also want to save it for future reference. This
handout -- as well as other course information -- is available on
the web via http://www-cs101.ai.mit.edu/courses/fall97/.
Professor Lynn Andrea
Stein, firstname.lastname@example.org, x3-2663, NE43-811,
office hours by appointment.
Daniele De Francesco, email@example.com, firstname.lastname@example.org
Craig Henderson, email@example.com, x3-5867, NE43-805,
office hours TBA.
Stephanie Hong, firstname.lastname@example.org
Todd Parnell, email@example.com
Luis Sarmenta, firstname.lastname@example.org, x3-5881, NE43-616,
office hours TBA.
Jerrod Wiesman, email@example.com
Henry Wong, firstname.lastname@example.org
We are all individually reachable by email. Some of us read email regularly,
others only every few days. Collectively, we can be reached at email@example.com.
If you have something urgent, this is probably the best way to contact
someone. You can also zephyr us using the class
6.096-staff (i.e., zwrite -c 6.096-staff); it may raise
a staff member even sooner. Be warned, though, that some of us (Lynn
in particular :o) ) look like we're logged in when we're in reality nowhere
near our computers.
Text: There is no textbook for this
course. (We're working on it!) Course notes -- excerpts from the draft
textbook -- will be distributed periodically/made available via the webpage
during the term.
Reference: We recommend
that you acquire a copy of Java
in a Nutshell by David Flanagan (O'Reilly 1997). Be sure that
you get the second edition. This book is an excellent reference on Java
1.1. In the later parts of the term, you will probably want to have
a copy of this book on your desk. It is not, however, required (there are
on-line Java references that serve similar purposes) and is in any case
not important in the first few weeks of the term.
You may also wish to obtain a copy of an introductory Java book. We would
be happy to make some recommendations
Sources: You can
buy Java books (among many other places) at Quantum
Books, the Tech Coop, or from on-line stores such as amazon.com
or bookpool.com. Some publishers
-- like O'Reilly -- also sell their
books directly. Shop around for a good price.
The class meets on Mondays and Wednesdays from 11-12:30 in 66-110. The class
will also meet at the same time in a different room (37-212) on selected Fridays during the term (see attached
schedule). All of these lectures are required and may introduce material
not covered elsewhere.
In addition to lecture, each student will be assigned to a three-hour
weekly laboratory session (one of Monday, Tuesday, Wednesday, or Thursday 2-5 pm).
Please check your section assignment, posted at
All laboratory sessions are held in 38-344.
See the section on laboratories, below, for
Assignments and Grades
During the term, there will be seven regular laboratories,
three written assignments, three examinations, and a final project.
The weighting of these factors is approximately as follows:
Each laboratory: 5% --> 35%
Each written assignment: 5% --> 15%
Each examination: 10% --> 30%
Final project: 15%
The final project grade will include design and implementation as well
as oral and written presentations. Each of these components will be included
in the project grade.
Laboratory sessions are an essential part of the course.
Each week, a laboratory assignment will be distributed to students. This
assignment will generally have three parts: preparatory work, in-lab work,
and post-lab work.
Students are expected to come to their assigned laboratory session
having completed the preparatory work. When you arrive at the
lab, a TA or an LA will check you in. (Typically, this will involve asking you
questions about your preparatory work and/or asking to see your development
plan for the laboratory.) In general, you are not expected to have begun
the programming of the laboratory assignment before coming to lab; however,
you are expected to have spent time outlining the program that you intend
to write and to have planned the various steps that you will take during
your three hour lab. Students who do not prepare adequately for lab
may be denied admission to the laboratory. Such students will be
permitted, on a space-available basis, to attend a later laboratory session
(provided they successfully complete the check-in procedure on that day).
However, failure to check-in to your assigned lab will be reflected in
your grade for that laboratory.
Each laboratory assignment is designed so that there is a range of work
that might solve the problem. You should begin by implementing a simple
piece or version of the solution. When this works to your satisfaction,
you should build on additional features or behavior. Often, you will be
asked to design test cases as a part of the pre-lab exercises or to share
code and test cases with your classmates.
When you are done with your assignment, or when the lab session is nearing
its end, you should ask a TA or an LA to check you out of lab. Check-out consists
of a discussion between you and the course staff member about your
work. During this discussion, you will probably be asked to show your code
in operation; to discuss how your code works; to display part or all of
your code; to answer some questions about how your code might behave; and
to test some or all of these hypotheses. You may be left with some questions
or issues to think about, including some possible modifications to your
You may leave lab as soon as your work is done and you have been checked
out. Please respect the course staff's schedules and try to ensure
that you are ready to leave when lab ends at 5pm.
After the laboratory session ends, you should write up and turn your completed
assignment on the specified due date. Although the details of the post-lab
writeup will vary from lab to lab (and from student to student), you can
expect that it will generally include: any written or "finger" exercises
from the laboratory assignment; a description of your lab development plan;
a discussion of what you did during the laboratory; a written evaluation
of your lab-work, including a comparison with your development plan; answers
to any questions that may have arisen during lab and check-out; and of
course any additional material indicated in the post-lab section of the
laboratory assignment. You should also include the final version of any
code that you wrote, information about the code running (e.g., transcripts
or empirical description(s)), a brief account of how much time you spent
on which portions of the assignment (including any parts that were particularly
problematic), and a list of any collaboration. (See the course collaboration
policy for details.)
Expectations and Policies
If you will be unable to attend your assigned laboratory session, you may
reschedule in advance with the course staff. Laboratory sessions
are tightly scheduled so as to provide adequate staffing and computational
resources at all times. We understand that sometimes there are unavoidable
conflicts; however, we expect you to take responsibility for anticipating
these and to make adequate advance preparation. We are unable to handle
significant shifts in attendance. The only exceptions to this policy (i.e.,
last-minute or after-the-fact rescheduling) will be in cases of significant
and unanticipatable emergency. In these cases, we request a note from the
Medical Department or the Dean's Office. In addition, we would appreciate
it if you would make an effort to notify the course
staff at the earliest possible opportunity so that we can adjust accordingly.
As a rule, you are not expected to spend any time outside of the laboratory
session at a computer, programming. Of course, you may do so if you would
find it helpful at any point: to try out the programs and environments
that we provide; to test hypotheses; to develop intuition; or just to have
This section details the general course collaboration policy. Certain assignments
require different kinds of, or restrictions on, collaboration. When the
collaboration policy differs from that described here, it will be specified
in the laboratory assignment.
We encourage you to work together on the pre-lab exercises.
They are designed for working in small groups, allowing you to help each other learn and to balance your
knowledge and strengths. Note that collaboration
extends to discussion and problem-solving, but not to writeups. We
expect that any written work you turn in will be your own, though
it may reflect joint preparation.
Laboratory work is a more complex topic. The default assumption for the laboratory
assignments is that they should be programmed independently,
with advice but no actual code input from others. In some cases, we will
explicitly specify ways in which labs can be broken up, so that each person
writes code but no one person writes the whole program. Finally, some of
the labs will indicate explicitly that they may be programmed together,
as a team. Even in this case, it is important that each team member have
an opportunity to independently compose some code. Since the pre-lab will
generally involve designing the code that you are going to write, it is
best to also allocate responsibility for pieces of the code to members
of the team at that time.
In each piece of work that you turn in, you must specify everyone
with whom you have collaborated and each person's role in the collaboration
(e.g., pre-lab, post-lab discussion and analysis, in-lab coding (specify
which pieces or how responsibility was distributed), debugging, or advice).
Failure to specify such collaboration will be interpreted as a statement
that you have not collaborated with others in your work. While this is
acceptable under course policy, it is probably ill-advised. (Really.
We want you to work together and to learn from each other!)
Examinations are diagnostic in nature and as a consequence should
represent independent work.
Of course, copying of the work of others is entirely unacceptable.
We also encourage you to make use of the course-wide mailing list (firstname.lastname@example.org)
and zephyr class (zwrite -c 6.096). The course-wide mailing list is archived;
you can read the archives by following the link from the course home page.
Where to Find Additional
The primary source of information for this course is the world-wide web.
The home page for the course is located at http://www-cs101.ai.mit.edu/courses/fall97/.
Course materials will be made available there. Check this page regularly
for news and updates.
This course is a part of Lynn
Andrea Stein's Rethinking
CS101 project at the MIT AI Lab
and the Department of Electrical Engineering
and Computer Science at the Massachusetts
Institute of Technology.
Questions or comments:
Last modified: Mon Aug 25 13:52:58 1997