- Learn to design, build, and validate a (reasonably) complex software project from start to finish.
- Demonstrate your ability to apply ideas from this course to developing a software system.
- Gain experience working in a team.
- Hopefully, build some useful software that both you and other people will actually want to use.
The project has several deliverables spread over the remainder of the semester, leading to presentations and demos on the last day of class. Details on some of the deliverables are below (more details on the first three deliverables are included in this document below).
- Project Team Requests: 11:59pm Friday 29 October
- Project Idea Proposals: in class, Tuesday, 2 November
- Project Design Document: beginning of class, Tuesday, 9 November
- Design Reviews: November 10-17 (scheduled by team)
- Project Progress Reports: in class, Tuesday, 30 November
- Project Demos/Presentations: Tuesday, 7 December (last class)
- Project Final Reports and Teammate Assessments: 11:59pm, Friday, 10 December
For this project you will work in teams. Most teams should be three or four students, but in you have a good reason you can have a smaller or larger team.
If you have formed a team, your team should send me a single email message containing the names of all team members and cc:ing all of the team members in the message. If you have not formed a team, you should send me a message with any preferences you have about who you do or do not want to work with. The team requests should be received before 11:59pm on Friday, October 29.
Working in Teams
You should divide work among your group members in an efficient and fair way. It is not necessary for everyone in the group to work together on all parts of the assignment, but every student should contribute equally to the work.
At the end of the project, each member of a team will be expected to submit a teammate assessment form, rating all of the team members’ individual efforts and contributions. In most cases, all team members will receive the same grade. Team members may receive different grades if it seems clear that they did not contribute equally to the project.
Your project can be anything you want as long as it is small enough for you to complete by the end of the semester, and complex enough that your successful implementation will demonstrate your understanding and ability to apply key concepts from cs2220 including procedural abstraction, specification, data abstraction, inheritance, modular design, and systematic testing. You may implement your project using any languages and tools you want, but if you do not use Java you should have a convincing argument for why you selected a different language.
Ideally, your team will develop and idea for your project that will be (1) something that all teammates agree is an interesting project to work on, and (2) lead to a software system that you and others will find useful enough to want to keep using (and developing) after the class is over.
Some of you might consider developing a web application, an application that integrates with some other web application (e.g., a Facebook application), or an application for a mobile device (e.g., Android).
Project Idea Description
On Tuesday, 2 November, bring to class a short description of your project idea. It should describe what you plan to build from a user’s viewpoint — what will your program do, and why someone would want to use it. You should also have some preliminary thoughts on how you will build it and what the main challenges will be. Each team will present their idea to the class for discussion.
Project Design Document
On Tuesday, 9 November each team should turn in a project design document. It should contain:
- A description of your project: what it will do and why it is useful, fun, or interesting.
- A high-level description of your design, including a module dependency diagram showing the most important modules.
- A description of your implementation and testing strategy including:
- how you will divide the work amongst your team
- how you will order the work to support incremental development
- how you will do unit testing and integration testing
- a list of milestones and a schedule for achieving them, leading to a completed project on December 7
- A list of questions and concerns