6.096 Fall 1997
Introduction to Interactive Programming

General Information

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

Course Staff

Professor Lynn Andrea Stein, las@mit.edu, x3-2663, NE43-811, office hours by appointment.
Course Assistants

Contacting Us

We are all individually reachable by email. Some of us read email regularly, others only every few days.  Collectively, we can be reached at 6.096-staff@mit.edu. 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.

Course Materials

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.

Supplemental Reading:   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.

Course Components

Course Meetings

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 http://www-cs101.ai.mit.edu/courses/fall97/handouts/sections.html.  All laboratory sessions are held in 38-344.  See the section on laboratories, below, for further information.

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

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


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 (6.096@mit.edu) 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 Information

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.