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 must have a user interface, preferably a graphical user interface.
You may use any of the GUI classes built in to Java or those that we have
introduced during the semester.
- You must have (at least) two separate entities running in two separate
spaces. For most of you, this will mean applications running on (at
least) two separate computers, perhaps using a centralized server
architecture. Two or more applications running on a single computer or
even two or more applets running on the same page would be acceptable
- You must explicitly build the connection between these entities, e.g.,
using Sockets or other Java standard classes. In particular, you may not
use the ClientWire and ServerWire classes to establish a connection
between these entities, although you may use ServerDialog and
ClientDialog to facilitate runtime collection of connection
- It must be possible to complete the project that you have selected in
the time allotted. Final judgement on whether your project is viable
rests with the course staff. If you plan to do a project other than one
that we have suggested, you should talk with a course staff member about
your plans as soon as possible.
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
In addition, each teammate is expected to add some original code to your
Some suggested projects that are appropriately sized are:
- 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.
- 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.
- Build a multi-user chat program with individual log-ons and both
private and public communication channels, like personal zephyr and
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
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
in lab Monday 11/15-Wednesday 11/17,
Written presentation of
at oral presentation
modifications due Friday 11/19
Documented code due
Friday 12/3, in class
One of Friday 12/3, Monday 12/6, Wednesday
Final project writeup, including documented code and
Thursday 12/9, 5pm, in NE43-812
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
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:
- The names and email addresses of your team members.
- The name of your project. This will be used as a group directory
- Whether you plan to do one of the suggested projects (or a minor
variant thereof), in which case you do not need preapproval, or what your
alternate project idea is, if you wish to do a different project.
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
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
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.
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.
You should bring to this meeting a (single) project proposal document.
This document must contain the following information:
- Your team members' names and email addresses.
- Your project title.
- A description of your project, specifying in some detail what
the scope of the project will be.
- This includes the minimal functionality that you will certainly
build, which should in your estimation be doable in approximately one
- 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.
- A development plan and timetable.
- What are the various stages that you will implement, and by when
will you complete them?
- How will you divide the work to be done? What role(s) will each of
the team members play?
- You will need to specify an intermediate checkpoint to be
demonstrated 11/21-11/23 (or at another time that week by special
- Don't forget to allow time for testing, debugging, code cleanup,
documentation, and preparation of the presentation and user's
- 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
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.
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
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
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.
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
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
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
This course is a part of Lynn Andrea Stein's
CS101 project at the MIT
AI Lab and the Department of Electrical Engineering and
Computer Science at the Massachusetts Institute of
Questions or comments:
Last modified: Tue Nov 9 13:01:20 1999