CS 5150
Software Engineering
Fall 2010

Projects


Home

Syllabus

Projects

Books and Readings

Assignments

Tests

Surveys

Academic Integrity


About this site/

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 regular production.

At the beginning 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 will make a series of presentations and reports of the work to the client.

A client can be any person or organization except yourself (e.g., a Cornell department, a local company or other external organization, a member of faculty or staff, 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 many users.

In selecting a project, think broadly. Your project can be an application, system software, or even a toolkit. Software engineering covers everything from cell phones 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 who 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 rarely worked well.

Student organizations

If is possible to do a project for a Cornell student organization, with an officer of the organization as client. If you propose such a project, the course team needs to meet with the client before a definite decision is made.

Entrepreneurship projects

In the past we have had several projects for student entrepreneurs. Some have worked well; others have been less successful. If you propose such a project, the course team needs to meet with the client before a definite decision is made.

Project suggestions

The course team will suggest a number of possible projects.  They will be posted on this web page and discussed during class on Monday, August 30. 

Here are some initial suggestions. Additional project suggestions will be posted here during the first week of class.

If you wish to propose another project or would like to advertise for colleagues to join you on a project, you can make an announcement at the beginning of class.

Deliverables

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

  • The projects are divided into four parts, each of which ends in a milestone. At each milestone, the team submits a written report.
  • After the second, third, and final milestones, the team makes a presentation to the client and the course team.
  • After the first milestone, each project team submits a weekly progress report.

See the Assignments page for more information. 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.

These are group projects, but you will also be rewarded individually for special contributions to the project, or failure to provide a fair share of the effort.  

Technical environment

Most projects will use C++, Java, Python, or Perl, on Unix, Windows, or Macintosh computers, but you are encouraged to use whatever is right for your particular product.

Every project should use a project management system for their documentation and code. This should be chosen in conjunction with the client. One option is the GForge system provided by Computing and Information Science.

Client expectations

The client can expect the following from the students:

  • A careful study of the requirements.
  • A design that meets those requirements.
  • A tested and well documented system that performs as specified. 

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

  • Weekly meetings.
  • Feedback on draft documentation.
  • Attendance at the project presentations.

The client must understand that a semester is a very short period of time to complete a substantial system.  In previous years, about half of all CS 5150 projects have resulted in systems that have gone into production.  However, the client has often 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.  

  • For your software to interface with other programs, the client may provide access to trade secret or other proprietary information.  In this case you may be asked to sign a non-disclosure agreement.
  • As Cornell students you own the copyright in the software that you create.  However, the client needs to be able to use your software and to use it as a basis for future work.  You must either agree to transfer the copyright to the client or to provide the client with an unrestricted license to use it.
  • It is just possible that a project may develop concepts that could be patented.  This is a complex area, with implications for the project team, the university, and the client.  The client may require a statement that covers this possibility.
  • Some projects may be for companies in which members of the Cornell faculty or staff are principals.  In such situations, the university's policy on conflicts of interest must be observed.

[ Home ]


William Y. Arms
(wya@cs.cornell.edu)
Last changed: August 2010