CSci 455 Group Project Spring 2004


Introduction

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:

Since software engineering is the discipline of developing large computer systems, a team project is a natural part of that course. Group projects have been used very successfully in CSci 255 over the past decade, and have been introduced in CSci 455 beginning with 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.

Students planning on entering a career in which they will be called upon to define, design, implement, test, and maintain large computer systems are also encouraged to take the software engineering course, CSci 340.

Last modified: Feb. 18, 2004


Schedule

(tentative)


Required Documents

The software engineering process is generally very formal. In contrast to the development of a limited-use, short program written by one user, a software engineering project generally involves a number of individuals working over a long period on a product that is expected to be used for a considerable time. Part of the formality of this process is seen in the documents developed as the project progresses. Assessment of documents will include (but is not limited to) the following criteria:

Final copies of documents will be collected into a bound document (for example, flashback binding, available at the print shop) with a printed cover, title page, and table of contents. If you keep the table of contents current for individual documents, you can simply list the documents included and use tabs to identify each document. Listings should be printed on standard size paper and included in the document. "Bundles" of documents can not be accepted for full credit.


All documents should have the following features:


Formal Project Proposal

The following is extracted (copied, mostly) from Sommerville, Software Engineering, 6th edition, pages 76 - 77.


Requirements Document

Basic ideas

The requirements document is the starting point for the software engineering process. It can be thought of as a contract between the potential end-user of the system and the system developer. As such, it should be intelligible to both: the end-user should be satisfied that a system satisfying the conditions set out in the document will meet their needs, and the software developer should be satisfied that the requirements are complete, consistent, and sufficiently detailed that a system can be developed from them.

The following outline presents only a part of what would be a complete requirements document, but it should be sufficient for our purposes.

Document Outline

Please use the following outline for your requirements document for the CSci 455 group project, adding to it as you feel appropriate.


Design Document

Basic ideas

The design document for a program consists of an outline for the program. In the case of an information system we need to define a database structure together with the necessary forms, reports, and an occasional program to do something that forms and reports can not do.

In the following, seven issues of design are addressed (two of these may be considered managerial issues, but we will put them in the design document):

In the following, several items are marked (using an asterisk) as sections to be provided in a preliminary design document. The remaining items are to be included in the full design document.

Document Outline

Please use the following outline for your design document for the CSci 255 group project, adding to it as you feel appropriate.

Sections marked with an asterisk (*) are to be included in the preliminary design document.

Please note that the content of these documents may change during the development of the project - you are not restricted to decisions you make now. In a more rigorous project, you would need, however, to log any changes you make.


User's Document

Basic ideas

Document Outline

For this document, the outline is very much up to you. Begin with an introduction to the system, a tutorial if possible, followed possibly by a reference section.


Source Code

Basic ideas

You will probably generate more source code than you think that you will for this project. Although you may not have any SQL code embedded in a C program, you will generate PL/SQL code for forms and (possibly) for reports, and this is also the place for descriptions of forms and reports. Note that you might also have some Java code if you use the Oracle JDBC

Document Outline

Maintenance Document

Basic ideas

An important note: You should have sequential files with test data in them instead of planning on typing in all of your test data via your data entry screens. This is to avoid a substantial amount of work if some part of your system fails in development and your files are lost. In addition, you should have a series of control scripts available for reloading your test data. For our purposes, this, together with a description of the files in your system, will comprise the maintenance document.

Document Outline

Please use the following outline for your maintenance document for the CSci 455 group project, adding to it as you feel appropriate.


Evaluation Document

This is the most free format of all the documents, and may be only a page or two. Describe in some detail how much of your original project you have implemented. For those areas that were not completely implemented, say why you think they did not get done ("ran out of time" may be a reasonable response), and list the ways in which your project could be extended.


Journal

You are asked to keep a journal throughout the project. What I would prefer is a bound or spiral notebook, though a journal kept on a computer and printed out would also be very acceptable. If you keep your journal on individual scraps of paper, make sure that these can be bound together in some fashion in a binder to turn in periodically. What the journal should contain:

Date (wk beginning)

Meetings

Reading

Design

Implement

Test

Write

2/18

2/25

3/4

3/11

3/18

3/25

4/1

4/8

4/15

4/22

4/29

5/6


Evaluation

The group project will account for 20% of your grade. Generally every one in the group will receive the same grade, although adjustments will be made only in exceptional cases. Your project will be evaluated against the following criteria (modified from SWE project assessment, University of Wales/Aberystwyth):

Total: 100 points


The following presents a rough idea of the standards against which projects will be evaluated (subject to the constraints given above):

It is expected that, over the long term (several semesters), the majority of projects will be in the 80% - 95% range (C and B), with

as the marking scale for group projects.


Projects:

Group Projects Spring 2004

Groups projects Spring 2002:

 

 


Order of group presentations:

The order of group presentations for Spring 2004 will be:

The first four presentations should be scheduled for Monday, the last three for Wednesday to allow time for return of Exam #3 and for a brief word about the final exam.