6.030 Fall 1999
Introduction to Interactive Programming

Final Project

The Assignment

For the final project in this course, you will work with a group to write a multi-layered community of communities. This handout contains some specific suggested projects, but you may come up with any project that you wish. Whatever project you choose must meet certain criteria:

You may reuse any of the code that we have given you, except for the Wire class. You may also use other publicly available code under the terms of usage with which that code is supplied, provided that you meet the criteria outlined above. As always, you must acknowledge any sources that you use. Unacknowledged use of others' code is a form of intellectual property theft.

In addition, each teammate is expected to add some original code to your project.

Some suggested projects that are appropriately sized are:

  1. Extend the Scribble project by modifying the underlying ScribbleData to communicate over a network. Make this a multi-user collaborative drawing program. Perhaps add text communication.
  2. Extend the Cat and Mouse game to multiple players and/or significantly enhance the two-player game. Note that you must replace the Wire-based communications with your own network connections.
  3. Build a multi-user chat program with individual log-ons and both private and public communication channels, like personal zephyr and class-wide zephyr.

In addition to these, you are welcome to come up with your own ideas, but you must have your project approved by a course staff member early the week of the 15th.


This project has several interrelated aspects with a variety of due dates. You are responsible for designing, implementing, documenting, and presenting your project to the class. The schedule for this project is summarized below.

Project Stage

Due Date

Notify course staff if you want to be assigned to a team

5pm Thursday 11 November

Registration of team (members and project name)

noon Monday 15 November

Preliminary approval of non-standard projects

submission due noon Mon 11/15

Oral presentation of project idea

in lab Monday 11/15-Wednesday 11/17,
by appointment

Written presentation of project idea

at oral presentation
modifications due Friday 11/19


by appointment

Documented code due

Friday 12/3, in class

Oral project presentation

One of Friday 12/3, Monday 12/6, Wednesday 12/8

Final project writeup, including documented code and user's manual

Thursday 12/9, 5pm, in NE43-812

Team Selection

In this project, you have two choices. You may select a group of teammates yourself, or you may ask us to assign you to a team. A team should be no smaller than 2 and no larger than 4. If you wish us to assign you to a team, you should email such a request, together with your lab day availability, to 6.030-staff by 5pm on Thursday, November 11. Team assignments will be made on Friday, November 12.

Also, if you organize your own team but would like an additional member, please let us know by 5pm on Thursday, November 11 (including your lab day availability) and we will attempt to assign an additional person to your team.

Team Registration

Whether you organize your own team or are assigned to one, you should email the following information to 6.030-staff as soon as possible, but by noon on Monday, 15 November at the latest. We will use this information to set up a shared directory for your project:

Lab Structure

As always, you will need to build and test your software. Keep a careful record of the work you do so that you will be able to include it in your project writeup.

You are free to attend any lab sessions that you wish, or to work on your project entirely outside of scheduled lab hours. The laboratory will be staffed Monday through Thursday 2-5pm during the three weeks of this project (11/15-12/2), except 11/24 and 11/25. Additional staffing may be announced.

A few specific meetings with a course staff member must be arranged. These will all be done by appointment, either by emailing 6.030-staff or through the use of a web form (to be announced).

First Week Lab

You will need to bring to the first week's lab a proposal writeup, described below. You will also need to make an oral presentation, as a team, of your project proposal. This is, in effect, the check-in for your final project, and must be scheduled in advance. There will be appointments from 2pm-5pm on Monday 11/15, Tuesday 11/16, and Wednesday 11/17. Because the scheduling of this meeting may otherwise impose delays, you may begin work on the project prior to this meeting.

Second Week Lab

Sometime during the second week of this project, you should arrange a group appointment with a course staff member to demonstrate the checkpoint that you have established for yourself. (See below.) Because this week includes several Institute Holidays, you should plan ahead and make certain that you have scheduled this appointment. You should expect that it may be held prior to Wednesday.

Third Week Lab

During this week, your team should complete the development of your project, clean up and document your code, and (depending on the timing of your final presentation) begin to prepare your presentation and/or user's manual. At some time during this week, you should meet with a course staff member to demonstrate your project.

Project Proposal

By Wednesday 11/15 at 5pm, you present your project design to a course staff member. This presentation must take place at an appointment, i.e., you must schedule it in advance with your team and the course staff member. Your entire group is expected to be present at this meeting.

Proposal Writeup

You should bring to this meeting a (single) project proposal document. This document must contain the following information:

  1. Your team members' names and email addresses.
  2. Your project title.
  3. A description of your project, specifying in some detail what the scope of the project will be.
    1. This includes the minimal functionality that you will certainly build, which should in your estimation be doable in approximately one week.
    2. It should also include additional functionality that you will add -- in steps, testing each one as you go, always maintaining a copy of the last working version -- that you will add as time permits.
  4. A development plan and timetable.
    1. What are the various stages that you will implement, and by when will you complete them?
    2. How will you divide the work to be done? What role(s) will each of the team members play?
    3. You will need to specify an intermediate checkpoint to be demonstrated 11/21-11/23 (or at another time that week by special arrangement).
    4. Don't forget to allow time for testing, debugging, code cleanup, documentation, and preparation of the presentation and user's manual.
  5. If your project is not one of the suggested projects, you will first need to describe it and then explain how you will build it, etc., as above. Remember that any non-standard project ideas must be submitted by Monday, 11/15, at noon.

Your writeup should be between one and two pages in length. Only one proposal writeup is due per team, but the writeup should reflect a collaborative effort.

Note: It is highly likely that the resolution of the projection display supplied during the presentation will be significantly lower than the monitors in the laboratory. You should design your program so that it will work even on a display whose resolution is only 800x600 pixels, though we hope to have a better projector than that available.

Oral Proposal

You will also need to describe your project in person to a course staff member. This description should be a team effort. It is, in effect, the check-in for the final project, although you do not need to complete this step before beginning any work. Check-in criteria include a solid understanding of your project and the components involved, a sensible development plan, and a reasonable division of labor. Each of your team members should be prepared to answer questions during the project presentation.

Also at this meeting, you should agree upon an intermediate checkpoint to be demonstrated during the second week of lab and schedule an appointment to do so.

If there are concerns raised at this presentation meeting, you may be asked to revise your (written) project proposal. Otherwise, you should turn in your project proposal document at this time.

Code Due

Your fully documented code should be complete by Friday, 12/3, so that you will have time to work on your presentation and writeup. You will need to turn this documented code in with your final project.

Note: If you are scheduled for a 12/3 presentation, we may be able to make arrangements for your code to be further documented, etc., after 12/3 as you will obviously need to prepare the presentation earlier.

Demonstration and Presentation

During the week of 12/6 (and perhaps during class on 12/3), your team will give a 5-minute presentation and demonstration of your project, followed by a brief question and answer period. This presentation should include a demonstration of the major features of your project and highlights of its functionality. You can think of this project as a marketing presentation, though it is fine to go into technical details.

We will provide a video projector so that you can display your project in action. We will also provide an overhead projector so that you can show any other materials (e.g., an overview of the design of your software), or you may project these off of the computer as well. You may also bring copies of anything you wish to hand out during your presentation. (If you would like us to copy something for you, you will need to make prior arrangements and to supply it at least one business day in advance.)

We expect that these presentations will be prepared, rehearsed, and polished performances. Expect to spend several hours putting together the presentation and any accompanying materials. Practice your presentation for your teammates and friends, or perhaps in front of a mirror.

All teammates should participate in the presentation, though you do not need to give each teammate an equal amount of airtime.

Presentations will be evaluated by your classmates as well as by the course staff. You are responsible for attending and evaluating your classmate's presentation.

What you should turn in

Your project writeup is due at 5pm on Thursday 12/10 in NE43-812. It should include a complete (documented) code listing and a standard writeup including information about what you did in lab, who did what, how the code works, etc. You should also document any difficulties you encountered, any interesting features or experiences, etc. Also indicate credit for any code that you may have used but did not write. In addition to the code, your writeup should be between two and five pages. Only one writeup is due per team; however, the roles of each team member should be clearly indicated in the writeup.

In addition to these standard writeup features, the final project material should include a user's manual. The user's manual should be designed for someone who does not know or need to know how your project works inside; instead, it should contain enough information to enable others to successfully run your software. This manual should be at least one and no more than ten pages long, depending on the number of illustrations, the novelty of the application, etc. Again, only one user's manual is necessary per team, but include authorship information and division of labor. Although it is not required, you may wish to bring copies of your user's manual to your project presentation.

You should also include a self-assessment checksheet for each member of the group. See http://www-cs101.ai.mit.edu/courses/current/handouts/eval.html.

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: