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.
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.
- General project information including project scope, the expected end-product, an overall architecture of the system, and an outline of the technologies involved in the project. Note that at this stage, it may not be entirely clear what the exact technologies will be needed, the system architecture will likely change. This is fine. The proposal should reflect the fact that the student has seriously considered the proposed system and has done necessary investigation to assess the complexity and the outcome of the system. Discussion with other students, the instructor, and the project client is encouraged.
- Reasons to pursue the project including interests in the project, relevant knowledge about the project, experiences in a similar project, learning the technology required by the project, among others. Please be as specific as possible. The student needs to convince the reader that he/she fits the project well.
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,
- Current status of the project;
- Team plan for the rest of the semester;
- Any successful stories or difficulties during the past weeks;
- Reflections of the team.
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.
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.