This project writeup is a dynamic document. It will evolve frequently in response to how the class determines it should go about the project. It is expected that it will be supplemented by links to other documentation the class assembles online.
Now that the class has decided to use the BlackBoard system to communicate, this document will likely only cover major issues, and may be made irrelevant.
All teams (or lone individual implementers) are expected to submit code plus sufficient documentation to enable the reader to be able to run it. For teams, just one member of the team needs to submit the project (but make sure one of you does!).
For teams, also, please include a statement in your documentation as to WHO is on the team, and WHAT each of the persons was responsible for implementing. Give me an idea of what each person contributed.
To submit: submit cs491n proj <list of files>
Due date: Sun 12 Dec.
For the class project, the class will design and build an interesting client/server system.
To the extent possible, the students will design the requirements for the project, with the instructor retaining the right to override decisions if necessary.
Individual grades for this project will be awarded based on the success of the teams' implementations and overall individual contributions.
The class project will have four phases: (the schedule and dates will change as the project design evolves)
| Phase | Who | What | % of Grade | Schedule |
|---|---|---|---|---|
| Proposal | Individual | Written proposal for overall purpose of project | 10% | Mon 25 Oct (1 week) discuss in class Tue 26 Oct |
| Design | Class | Detailed design documentation for the project, to be shared | 30% | ~ Tue 9 Nov (<2 weeks) |
| Implementation | Team | Independent implementation of the design | 30% | ~ Tue 30 Nov (3 weeks, after Thanksgiving) |
| Testing | Team/Class | Round of testing and fixes for compatibility | 30% | ~ Wed 8 Dec (1 week) |
There will be bonus credit available to students who contribute extra work to the class/team effort, such as an excellent proposal, handling extra work on the design or documentation for the class, provide interesting tools or techniques for testing, etc.
Class time will be available for discussions about the project. But out-of-class discussion in teams and groups of teams will likely be required. Managing this sharing of information is one of the challenges to be overcome.
All students will submit their own proposal. The proposals will be shared with the class and one or more will be used as the basis for the rest of the phases.
Each proposal should offer:
The overall purpose should encompass a task requiring a network of automated servers and user-driven clients that allows some form of user-to-user communication.
The proposals are due at 6pm on Mon 25 Oct. This will give the instructor time to organize them online for everyone to see and discuss during class the next day.
$ submit cs491n proj <proposal file>
The Submitted Proposals:
Additional proposals will be considered IF: the proposal is properly submitted BEFORE class on Tuesday, AND: you bring a hardcopy with you to class for discussion. (If both steps are done properly, you can earn a portion of the 10%)
The class will settle on a design as a group. Volunteers will be responsible for writing it up and posting on the web, as well as keeping it updated in the event of changes.
The design should also specify details on how the design information and code will be managed and shared between teams, particularly for the testing phase.
Some time in class will be devoted to discussing the design.
Teams will implement their own independent version of all necessary client/server code for fulfill the design. Implementation language and many other details will be team-driven.
Suggested team size is 2 students. This is negotiable.
The teams will cooperate in this phase to test their systems against each other to ensure compatibility.
Out-of-class time is likely required for the teams to meet and cooperatively test and debug.
Teams that finish implementation early can begin cooperative testing early.
This project will require a lot of communication between students to succeed. Suggestions for how to best achieve this will be needed early.
A goal of this project is that it have an element of cooperation (design and testing) as well as competition (implementation). The design should allow for some flexibility as to details of client and server operation (level of features). Things like the user interface for a client and the management features for a server should be left somewhat flexible.