Senior Project

The Senior Software Engineering Project at the University of Colorado Boulder is taught as a two semester sequence in which student teams complete a substantial "real world" project provided by sponsors drawn from both industry and research organizations.

These projects are developed under the direction of the course instructor and members of the sponsoring organization. The course has been offered yearly since its inception in 1987.

Each year during the summer, the instructor solicits project proposals before classes begin the following fall. Proposals are very brief descriptions of ideas for projects provided by industry. Once classes begin, these proposals are given to the students, who then form teams, select projects, and begin their development.

There are a number of outcomes that the department has defined for the course. Upon completion of this class, students should possess:

  • An understanding of a wide variety of software lifecycle paradigms.
  • An ability to perform software requirements analysis, along with the ability to create an associated written requirements specification.
  • An ability to complete both high-level and detailed software design, along with the ability to create an associated written design specification.
  • An ability to correctly implement and integrate components of a larger software system, following practices appropriate for the development environment.
  • An ability to perform testing -- including unit testing, integration testing and system validation -- along with the ability to create an associated written test plan.
  • An ability to produce user documentation for the targeted end users of the software.
  • An ability to create a software product release, along with the ability to create associated written release notes.
  • An ability to communicate (both written and oral) effectively with a wide variety of audiences, including other developers, management, customers and end users.

The projects typically use an agile approach structured around a series of short, two-week software development iterations beginning immediately after project selection and continuing through completion of the project at the end of the spring semester.

Development

Each development iteration includes planning, development, and release. Throughout the project, the students themselves are responsible for organizing, scheduling, and completing their tasks; however, a very important aspect of each iteration is that the sponsor is closely involved in reviewing the project and providing feedback and direction.

Documentation

Several papers are developed as part of these iterations over the course of the year, including requirements, design, a test plan and documentation for both end users and future developers.

Presentations

Several presentations are also given by the student teams over the course of the project: an overview presentation in class early in the project, a "state of the project" presentation at the sponsor site at the end of the fall and a final demo (again at the sponsor site) at the completion of the project in the spring.

Sponsoring a Software Engineering Project

Requests for project proposals are usually sent to potential sponsors during the summer and early fall. For more information, click here. Contact Judith Stafford to be placed on the distribution list for the annual request for proposals.