Projects Home Page
This is the home page for the team programming projects of Object-Oriented Software Engineering.Project Features
Features of the project include
- The project is a group project, and improving your team programming skills is a primary course objective. Project groups will consist of 3-5 students in each group.
- There are no bounds on the topic of the project.
- Innovate! Your project must include significant original ideas. Feel free to borrow cool ideas from others, but give them credit and make your idea better. You learn to innovate by doing it.
- One of the key evaluation criteria will be: is your product useful to people? (note, having fun counts as useful!)
- You must use a high-level programming language. The recommended choice is Java and several project requirements are stated in terms of Java; if you are not using Java, re-interpret them as the analogue in your chosen language.
- In order to produce a good project by the deadline, use of
frameworks, tools, and libraries is critical
if you are using Java, here is a list of technologies to consider »
- Large software is very dificult to produce without organization
and discipline; all groups will follow a common methodology so we are all
(mostly) on the same page. You will write
- Initial requirements in the form of use-cases;
- A written design proposal;
- Iteration plans proposing what will get done by when.
- Communication and critiquing is an important element of team programming. There will be several class sessions devoted to individual team work and discussion with professor and TA's. There will also be several presentations (see below) to allow for critiquing of your project by the whole class.
- Initial project proposals will be reviewed, and if your project seems non-innovative or too simple, you will either be encouraged to switch topics or to make very significant changes. If your project appears too complex you will be encouraged to implement a scaled-down version.
- You should use Eclipse, JUnit, JavaDoc, and Subversion (or CVS) in your project. "use" means integrated use throughout development.
Frequently Asked Questions about the projects »
Iterations
Project development is broken down into a sequence of six two-week iterations. Certain milestones need to be hit by each iteration. Starting with the coding in interation 3, you need to turn in an iteration report describing what was accomplished compared to what you planned to do, and your plans for the next iteration.- Iteration 0: group formation
- Declare who will be in your project group and propose an initial idea for a topic. When you have your group, email the head TA a single email with all of your names, emails, 321 or 421, and a brief description of where you stand in terms of the idea for your project -- list general area(s) or specific topic(s).
- Iteration 1: Requirements
- Give an analysis of the requirements your project must meet for it to fulfill its intended function. The main thing you will need to produce is use-cases, English descriptions of what functionality the program should have.
- Iteration 2: Design Proposal
- Give a design proposal, including the core use-cases you want to implement, and the core classes and responsibilities written in Javadoc.
- Iteration 3: Initial Code
- Core functionalty is coded, and at
least a few tests written using
JUnit. Javadoc is used to document the class structure. - Iteration 4: Core Working
- Some core functionality of the project is working, with a good set of tests for that core.
- Iteration 5: alpha
- Alpha release: the project generally works but has some bugs and is missing some desired features.
- Iteration 6: Final project
- Beta release: Submission of all code and documentation, and demonstations by each group of their final project.
Presentations
Being a good software developer also means being able to communicate what you did and will do to clients, management, and your peers. The oral presentation component of the projects helps to give you practice in this arena.
There will be two presentations: each group will present an overview of their project in early November, and there will be a code review presentation in early December. The Presentations page provides the details of how these will run.
Examples
Some project webpages from past years are very helpful to see what a good scope of a project is, and what must be done for the first two iterations. Note the project requirements have changed over the years so the most recent examples are the best ones to look at.- Group 1 from 2008: The Adventures of Jeff
- Group 2 from 2008: College Chef
- Group 4 from 2008: RHIMS: Remote Health Information Monitoring System
- Group 3 from 2006: Cellphone games
- Group 8 from 2004: MuseBox
- Group 4 from 2006: File Sharing
Potential Topics
We are not now providing a list of potential topics; the above examples show some successful topics of past years. One thing to consider is you could simultaneously compete in the Imagine Cup, a contest to design software that meets the United Nations Millenium goals: End Poverty and Hunger, Universal Education, Gender Equality, Child Health, Maternal Heath, Combat HIV/AIDS, Environmental Sustainability, Global Partnership. You will need to use the Microsoft platform to compete in this competition.