CS342 Semester Project: Web based Bug Tracking System

CS342 Semester Project: Web based Bug Tracking System

Spring 2005

In this project you will work as an individual to build a web-based bug tracking system web site. You will be required to submit functionality and design documents to complement your project.

The completed project is due last day of class but you will do interim releases roughly every two weeks during the semester. For these releases, you can demo in front of the class if you want, but in general you will demo your project for the instructor.


My goal with this project is to have you produce something interesting and useful that makes you learn about the following:


There are two predefined levels of completion corresponding to C and B letter grades, but I will adjust your grade according to the quality of your project's functionality for those levels. To get an A you must go significantly beyond the B level and will be judged in comparison to other students' projects.

You are to write all functionality unless specified otherwise--you cannot take James or other SMTP code from the web, for example. The only code you may reuse is Resin, StringTemplate, and Lucene. Any code you cut/paste must be attributed to the source. Naturally, you may do "research" on the web by looking at other software, but you must actually implement all code yourself.

Required Functionality

B Level Functionality

Possible A Level Functionality

Here are some suggestions (not requirements and not exhaustive):

These features are deliberately ill-specified. Part of your evaluation will be how well you listen in class to the instructor and the other people concerning feature definition. You are responsible for listening and recording people's ideas and comments. If you have questions, you are encouraged to discuss feature definitions (not actual implementations) with other people and you are encouraged to discuss the project with the instructor. Again, you are responsible for defining the features more precisely.

Recall that the other students are your competitors for A-level work. Your grade will be computed relative to the lead student beyond B-level.


You should expect to generate about 6000 lines of code per project.


To grade your project, I will evaluate your work with you demonstrating it during/after class every two weeks. I will normally ask you to walk me through the code so I can get an idea of your programming style.

You must demonstrate your software running under linux (though you may use a PC browser to access the server). In other words, you will need to be able to compile and run your software with RESIN web server on linux. I will not accept software that only runs on a PC.

You must also submit in printed form at each release a well-written summary of your system features, system design, and database schema. You will update this document as your system progresses. How well and how thoroughly you write this up is a nontrivial part of your grade for the project. If you must, have a native English speaker proofread your summary document and make suggestions.


Projects will be judged against the C and B levels first. Then, if you get beyond B level, your project will be judged in comparison to other projects. The student whose project has few bugs and has the largest subset of the desired features working is the "lead team".

The evaluation of "quality" is necessarily a subjective measure, but I will do my best to quantify what I'm looking for and rate you all according to the same measure. I will have a chart with the list of features down the left and releases across the top. Each feature will be rated at each release (if it is complete).

By definition, there is no late project--your last working release will be considered in lieu of any unfinished project. Missing a release in order to achieve a better result at the next release is acceptable once, but remember missing all releases to turn in a finished project at the end of the semester will yield a poor score.

I will also be evaluating your work in our team meetings.