Final Project
For your final project, the class may choose any topic with which the
instructor agrees. Here are the constraints:
- The project will be undertaken by the entire class, working as a team.
- The team will elect a leader. The leader's job is as follows:
- When the team cannot reach a consensus, the leader should make a final
decision.
- The leader has primary responsibility for the overall design and the
division of labor.
- The leader should organize meetings and set internal deadlines.
- The project must have a graphical user interface.
- The project may use any parts of the Java API or third-party APIs that
are desired.
- All team members will receive the same grade.
Increments
When developing a large program, it is important to divide it into
increments. Each increment should be a partially complete version
of the program that, while incomplete, should compile, run, and correctly
handle a subset of the program's eventual input.
In this project, you will be expected to develop in three increments.
Deadlines
- Wednesday, 11/18:
- 2-3 pages describing your proposed project, including which classes
you will write and the classes from the API you expect to use
- Hand-drawn sketch of its user interface
- Reasonably specific division-of-labor; each student should have a well-defined area of responsibility
- Discussion of how implementation will be broken into three increments
- Friday, 11/20; Monday, 11/23; Monday, 11/30; Wednesday, 12/2; Friday, 12/4; Monday, 12/7:
- In-class code inspections
- Each student should bring some code to class on a USB drive
- The code will be presented to the class on the overhead projector
- Wednesday, 12/2:
- First increment should be complete
- Tuesday, 12/8 from 10-11 am (Reading day)
- Public demonstration of project
- Second increment should be complete
- Monday, December 14, 2:00 pm
- Demonstration of final project during the class finals period.
- All three increments should be complete.
- Accompanying document should describe the final design,
the rationale for the design, the testing that was performed, and
any remaining known bugs.