CSci 340 Group Project


The group project in CSci 340 will account for nearly half (45%) of your grade for the course. It will involve the specification, design, and implementation of a small project . Group projects are an integral part of several courses in Computer Science. While they have been used upon occasion in nearly every computer science course, they are almost always a part of the following three courses:

And, of course, the new capstone course in many Computer Science contracts.

Since software engineering is the discipline of developing large computer systems, a team project is always a part of this course. Group projects have been used very successfully in CSci 255 over the past decade, and have been introduced in CSci 455 beginning during the 1988 - 89 academic year.

Group projects give the students a chance to learn to work on a substantial software development project as a member of a programming team. While this is the norm for software development in industry, it is generally not the way students are taught to work in a University environment, since student work is normally evaluated with the expectation that the student has submitted the result of an individual effort. Group projects also give students the opportunity to work on much larger programs than would otherwise be possible.

In addition to the development of technical skills, group projects also give students the opportunity to further develop skills in oral and written communication. Students are required to write at each stage of the software development process, to report on progress throughout the term, and to make a final formal presentation to the class (and to interested faculty members in addition to the teacher).

Group projects also give students an opportunity to fail. While groups are usually successful, some groups do fail. These failures, when they occur, can sometimes be attributed to over ambitious projects, but can be attributed perhaps more frequently to individuals in the group who do not complete assigned work (thus increasing the load on colleagues), or to individuals who try to take on all the work themselves (and, being therefore greatly over committed, fail spectacularly). While this is never a pleasant experience, we try to build in enough safeguards that such disasters do not cause the failure of the efforts of the rest of the team. When disaster strikes, the original project can generally be restructured to salvage the work that has been done into a more limited project. Of course, this works only if the teacher monitors the progress of a team very closely - which is one reason for requiring progress reports and written documents at significant milestones in the project throughout the term. While we make every effort to avoid these disasters, they can be a very important learning experience for the students involved. Furthermore (and fortunately), failure in a classroom environment has a substantially less long- term career impact on an individual student than a similar failure in industry would have. In any case, although significant difficulties with the term project would probably have an impact on the final grade, difficulties with the final project no not necessarily imply failure in the course.

Written and oral communication are substantial components of the group project. In addition to enforcing standards of good programming style (including internal documentation), students are required to clearly explain how their programs work and how they can be used. These explanations involve both written documents and formal oral presentations, and are directed to both technical and non-technical audiences.

One of the primary differences between group projects such as the one in this course and programming exercises in other classes is that the process of software engineering is a formal process involving not only the delivery of a final product but also the timely delivery of a variety of documents and a formal final presentation. Although the precise form and number of the documents to be produced vary from project to project (depending on the type of project and the software development model used), there are several documents that are required for all projects (please note that these are adapted from current requirements for the senior project as well). All of these documents (with the exception of the project logs and journals) should be considered public documents, and will be shared with your colleagues in the class via a group web page



Outlines for these required documents will be made available as we need them.

You should decide on some form of configuration control for the documents produced by your team. Each document should include a revision history indicating the changes made to the document and the reasons for them. When configuration control begins depends on the document. For the proposal and requirements documents, configuration control begins when the client has approved the initial document, and any changes should be made with the client's approval. With the remaining documents, configuration control should begin when the document goes into use (as, for example, the design document).



Schedule

To view the schedule (under development) click here.



Evaluation Criteria

Projects will be evaluated according to the following scheme:



Possible Projects




Some Resources

Here are some resources which may help, including details of document requirements in other courses.





Return to the course home page