The Team Project

Students in teams will develop a programming project that is sufficiently sophisticated as a culminating project for the BS/BA students in the computer science major.

Student teams may propose their own project, or get project ideas from outside clients and their instructor. The project should be approved by the instructor early in the semester. To facilitate the process, each student is asked to discuss with the instructor as soon as possible and they are asked to submit a project proposal the specified deadline. The individual proposal will help the instructor to form project teams. Once the project team is formed, each team will write a paper and make a presentation about the system architecture and overall project design. The team then will write two progress reports and present them to the class. At the end of the semester, each team will write a final report and make a presentation to the public.

Individual Proposal

Students can choose a project from a pool of projects that fits their interest and strengths. To help students better understand the project and help the instructor form project teams, each student is asked to write a project proposal. The proposal should list two projects in which the student is interested, a primary and a secondary. For each of the two projects, the proposal should consist of two main parts, an outline of the project and an argument why the student would want to pursue this project.

For each of the two projects, please include the following information in the proposal, based on your understanding of the project.

If a student would like a particular set of other students to be his/her teammates, please give names and reasons. It is important to keep in mind that the teams will need to find substantial amount of time to work outside the class time. So schedule compatibility among team members is a factor to consider. Ideally a team should have four members. The final team composition will be decided by the instructor after consulting with the team members.

The length of the proposal should be about 2 to 4 pages, or about 800 to 1,500 words.


We will use an Agile Development process for our system development. In such a process, close collaboration between the developers and the clients is a critical component. Ideally we would like to have the client come to our team meetings once a week. During those meetings, the developing team will consult the client for details of the project and the client can give feedback to the teams for what has been done. If the client cannot meet with the team in person, we'd ask at least the client will be able to provide timely feedback on a weekly basis through other means such as video or audio conferences.

System Architecture and Design

Student teams will present to the class a system architecture. The overall design should include major components of the system, interaction among the major components, snapshots of screens, user interfaces, and other artifacts to show how the system might work together. A written report and an oral presentation are required. The report is expected 5-7 pages (2,000 to 2,500 words). The presentation is expected to be 15 minutes.

The key difference between the system architecture here and an overview of the system at the proposal stage is the level of details. At the proposal stage, little details are needed. In the design stage, the team should provide details of the components and their interaction such as working with external files, accessing internal images, or communicating with entities over the internet. Again the exact architecture and design may evolve, but the team should be clear that they'd need the specified functionality.

Project Progress Reports and Presentations

While we will exchange information about the project at each of our weekly meetings, two formal progress reports and presentations are required during the semester (sometimes during the 5th week and the 10th week). The reports are expected to be 3-5 pages (1,200 to 1,500 words) and presentations about 15 minutes each. Each report should include the following,

Final Project Report and Presentation

Each team will write a final report and make a final presentation about their project on the last Monday of the class. Follow the link for details.

Project Assessment

The projects will be evaluated throughout its development and in multiple aspects, including all the project milestones (see Agile development process), client interaction, written and oral reports, among others. In particular, we will be using the presentation rubric and the writing rubric for the project evaluation.

Team Work Assessment

To assess how teams are working together, we will use a survey to collect data. The goal of the survey is not necessarily to assign grades for each team members. Rather the survey is used to gauge how the team is doing and to see which areas the team can improve. See this page for details. Peer evaluation of individual members will be done using a separate form. See the relevant section.

Currently Available Projects

Follow this link for a collection projects for this semester.

Schedule and Deadlines

Follow the course schedule for various deadlines.