CS 501
Software Engineering
Spring 2002

Projects


General

A major component of the course is a software development project. The objective is to develop a software product for an actual client who intends to use it in a production application.

For this purpose, during the first two weeks of the course, you will form project teams with 5 to 7 members. During the semester, the project team will work together through the full development cycle, from understanding the requirements to delivering a functioning product, and making a series of presentation of the work to the client.

Projects

A client can be any person or organization except yourself (e.g., a member of faculty or staff, a Cornell department, a local company or other external organization, a student body, etc.). Some potential projects and clients will be suggested but you are encouraged to identify your own.  There should be a firm intention by the client to use the software in production. Aim for a minimum of a three-year production life with at least 100 users, preferably many more.

In selecting a project, think broadly. Your project can be an application, system software, or even a toolkit. Software engineering covers everything from Palm Pilots to supercomputers. The only conditions are that there must be a real client and real users.

Because of the need for the client to attend presentations, we discourage clients that are not based in the Ithaca area.  In the past, there have been successful projects with clients from Syracuse, but projects for more distant clients have not worked well.

Deliverables

Since every software project is different, there is no set list of deliverables that every project must to meet these criteria. Part of your task is to decide what is needed for this specific project. Typical deliverables include working code, documentation, training materials, etc.

Four assignments during the course are based on the project.  These are group projects, but you will be given individual grades for parts of some assignments.  

  1. Feasibility study and plan (report)
  2. Requirements (presentation and documentation)
  3. Design (presentation and documentation)
  4. Final delivery (presentation and documentation)

The three primary criteria for a successful project are: satisfying the client's needs, usability of the product  and maintainability over the life of the product.

Technical environment

Most projects will use C++, Java or Perl for Unix or Windows.  Permission is required to use other environments, but you are encouraged to use whatever is right for your particular product.

Expectations from the client

The client can expect the following from the students:

In return, the student can expect the following from the client:

The client must understand that, one semester is a very short period of time to complete a substantial system.  In previous years, about half of all CS 501 projects have resulted in systems that have gone into production,.  However, usually the client has found it necessary to continue work after the semester to add extra functionality.  Sometimes, members of the project team have continued work the following semester, as an independent project.

Business considerations

A number of business considerations surround any practical software product.  As part of the Feasibility Study and Plan, every project must describe how it will handle these considerations.  

Project suggestions

If you wish to propose another project or would like to advertise for colleagues to join you on a project, send a message to the CS 501 Teaching Assistants and they will post it on this web site.


[CS 501 Home Page]

William Y. Arms

(wya@cs.cornell.edu)
Last changed: January 22, 2002