For each project below, your team should submit one version of all project materials that represent the team's effort electronically, using the directions available here, by the end of the due date (i.e., 11:59:59pm). Your team is responsible for ensuring that all files are turned in on time. Your team may submit its project electronically as many times as necessary, but only the files included in the last submission will be graded. Thus, you should always submit all your project files --- even if they have not changed since a previous submission.
Developing software is about more than just the code that makes the program run. Thus for each project you submit, you must submit the following additional materials:
- README file (described below)
- test code that thoroughly verifies the correctness of your non-GUI code
- project artifact that describes and justifies the project's design
- test report from a sample user, i.e., someone not in the class (only for the Team and Final Projects)
In general, the code for each project must
- follow a consistent set of conventions: it is more important that your code be internally consistent, than
which set of conventions you choose to follow.
If you feel you must violate the conventions of the team, you must document the reason within your code. - be able to generate HTML documentation for each public package, class, function, and constant within your project using a tool such as Javadoc.
For each component of your system, you should describe its purpose, interface, invariants, dependencies, and any other details users of the component should know.
In addition to the team's submission, each student must submit an individual project analysis after submitting the final version of the project that represents your personal reflections on the project.
Refactoring Projects
These projects are to be competed in pairs and focus on improving and debugging an existing program.
- Bins
Find out which team you are on here- Refactoring, due Thursday, January 21
- Testing, due Sunday, January 24
- Analysis, due Tuesday, January 26
- Arithmetica
Find out which team you are on here- Refactoring, due Saturday, January 30
- Final Version, due Saturday, February 6
- Analysis, due Monday, February 8
- Jotto
Find out which team you are on here- Refactoring, due Saturday, February 13
- Final Version, due Friday, February 19
- Analysis, due Saturday, February 20
For each project, although a "complete" project should be submitted (documentation, testing, and working code), the deadlines represent three different parts to the programming process:
- Refactoring means focusing on improving the code's design without adding functionality (but knowing what functionality may come next)
- Final means adding new functionality (which may still require more refactoring), but think of it as a test of whether the refactoring was correct
- Analysis means writing a document after the project is finish in which you reflect on the project experience and what you can improve in the future
Team Projects
These projects are to be completed in teams of three or four and focus on developing clearly defined modules.
- PICASSA (Pretty Intriguing Creations And Stimulating Synthetic Art)
Find out which team you are on here- Design, due Monday, March 1
- Final Version, due Friday, March 5
- Analysis, due Tuesday, March 16
- GEDIVA (Generally Extendable Data Import and Visualization Architecture)
Find out which team you are on here- API Design, due Monday, March 22
- Final Version, due Sunday, March 28
- Analysis, due Tuesday, March 30
Final Project
This project is to be completed by the entire class working together in teams of three.
- VOOGA (Video Object-Oriented Game Arcade)
Find out which team you are on here
README
Each project submitted must be accompanied by a README file that includes:
- Your name, possibly including the names of your team mates
- The date you started the assignment, the date you completed the assignment, and an estimate of the number of hours you worked on it
- your estimate should include how long you thought it would take and how long it actually did take, as well as a short evaluation of how good your estimate was
- A list of the students with whom you discussed the assignment.
- Note any books, papers, or online resources that you used in developing your solution
- Description of the files used to start your project and test your project
- Description of any data or resource files required by your project
- Your impressions of the assignment to help improve it in the future