Senior Project

Collage of photos of team members and their projects
Collage of photos of team members and their projects

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, research organizations, and university faculty.

These projects are developed under the direction of the course instructors 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 during the spring and creates a list of available projects before classes begin the following fall. Proposals are very brief descriptions of ideas for projects that are optionally accompanies by a short video description. Once classes begin, students are given access to these proposals, a "Project Fair" is held, and students submit their project preferences, which are then used by the instructors to select projects and form teams.

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

  • An understanding of a wide variety of software lifecycle model.
  • An ability to be a contributing member of a software development team.
  • An ability to choose the model most appropriate to their project and using the model as a guide for the teamwork.
  • An ability to analyze and document software requirements.
  • An ability to complete both high-level and detailed software design, along with the ability to create associated written documentation.
  • An ability to reason about tradeoffs among design options.
  • An ability to perform risk evaluation and develop mitigation strategies.
  • An ability to set and meet both short and long-term goals.
  • An ability to use state-of-the-art collaborative software engineering tools and methods.
  • 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.

Beginning immediately after project selection, teams weigh pros and cons of applying the various lifecycle options to their particular project.  Many project teams will use an agile approach structured around a series of short, two-week software development iterations after a short initial planning stage while others might spend more up front time evaluating project requirements and planning their approach to developement.

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 documentation artifacts 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. The nature of documentation for a specific project is detailed by the project sponsor.

Presentations

Several presentations are also given by the student teams over the course of the project, which culminates in a poster/demo presentation during the Computer Science Expo during the last week of classes, 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 sent to potential sponsors during March each year. For more information, click here. Contact Judith Stafford to be placed on the distribution list for the annual request for proposals.