CPSC 594

CPSC 594

CPSC 594 Software Engineering Project

Fall 2022 to Winter 2023

Software Engineering Project

SAMPLE FINAL PRESENTATION - Fall 2020 to Winter 2021

Watch in Full Screen Mode - 31:51 Min

"... we appreciate your students' drive and versatility, and are grateful for the chance to work with them for the last eight months and also (partly) this summer. Having seen other capstone formats, I applaud your course for providing them with enough time to figure out a complex system".

Martin Berka - Unico Power Corp.



CPSC 594 is a senior undergraduate course offered by the Department of Computer Science at the University of Calgary. It is the capstone course for those students wishing to receive a BSc with a concentration in Software Engineering. The goal of the course is for students to apply their software engineering knowledge in a practical project that is relevant to industry.

How is the course structured?

CPSC 594 is a “full year” course, meaning that it runs through both, the fall and winter semester. For this year, that means the course runs from September 2022 through April 2023. The course enrollment is limited to 25 students. When the class begins in September, the students will form groups of 3 to 5 (depending on the number of students enrolled in the course). Each group will spend the school year working on a project for an industry customer.

How are groups assigned to projects?

Companies that would like to participate in this course are asked to provide a short (2 pages or less) description of the project and the environment within which the completed software must run. These descriptions will be provided to all groups and each group will bid on 2 projects. If a group bids on a project for which it is the only bidder, it is assigned the project. If a project has multiple bidders, the bids are forwarded to the company representative who decides which group will work on the project. This process repeats until all groups have been assigned a project.

How much time will students spend on the project?

It is important to remember that this is not the only course that these students are taking. The typical full course load at the University of Calgary is 5 courses. This means that students will be expected to spend approximately 1/5 of their time on this course. That equates to about 8 hours/week for the duration of the course.

For a group of 5 students, this roughly equates to 40 hours/week which would be the equivalent of a single person over the duration of the course. Expectations about what can be accomplished on this project should be based on what 1 full-time person can accomplish over a 7-8 month period. For evaluation purposes, students will be required to make two presentations and submit a paper about the project. This will affect the amount of time the students can commit to the project at certain times within the school year.

What kind of projects are we looking for?

There are three main criteria to be satisfied:
(i) The project should not be mission critical.The students will have limited time to work on the project, and they are still learning their craft. As such, a mission critical project cannot be guaranteed to be completed successfully or on-time.

(ii) The project must include elements of software development. In this course, we are trying to help the students develop skills surrounding software development (project management, scheduling, analysis, design, implementation, testing, etc.). As such, the projects they work on should provide the basis for the advancement of these skills.

For example:

A business wants to develop a website to help support its customer service business objectives. A website with a series of static HTML pages would not be appropriate for this course. However, if the website delivered dynamic content (generated from al legacy database/system, for example) and the interaction with the website was subject to the enforcement of business rules/constraints such a project would be appropriate for this course.
(iii) The project should not only help develop the student’s software engineering skills but should utilize the skills that the students already process.

Students in a University setting are often exposed to the “latest and greatest” technologies. It is possible that the students will have experience with tools and technologies that persons within your own organization have not yet had the time to explore. If students are given the opportunity to work with these tools and technologies, it is possible that we may transfer skills from the students to your own personnel.

Projects involving the development of a prototype, or trying out some idea that you do not otherwise have the resources to investigate, would be ideal.

What about project scope?

My biggest concern is projects whose scope is too small. Such a project would not challenge the students and would offer them little ability to develop their skills. Similarity one of the main goals of software engineering is that the process be documented well enough that personnel working on the project can be adjusted while the project is being complete.

We recommend that an iterative lifecycle be employed for the development of these projects. Students, in conjunction with their industry counterparts, would initially define the scope of the project. That scope would be prioritized and a subset that could be realistically implemented within the duration of the project would be identified and scheduled. The implemented components should include high-priority elements as well as any architectural components necessary for success of the project. The structure leaves the door open for continued development after the course is completed.

Who owns it, and what resources have to be committed?

Any issue surrounding copyrights, intellectual property rights, and non-disclosure agreements must be identified and documented within the project description before the bid process begins. The standard NDA agreement of the University of Calgary can be downloaded here. It is my preference that these issues generate as little overhead as possible as the focus of the course is to develop the skills of the students and to produce something of value for the customer. The University of Calgary, The Department of Computer Science, and I make no guarantee of the success of these projects.Similarly, students are provided with equipment at the University of Calgary with which they can complete their projects. If a project requires specialized equipment or software, the customer will have to provide it.

Responsibilities and ownership

After the initial project description/assignment phase, industry customers will need to provide their time in two ways:
(1) To answer the occasional question to clarify the project requirement, and
(2) To see two project presentations during the course of the year and provide feedback.
Students are expected to manage their own project.

Ordinarily, I would expect the customer to become the sole owner of the software and other deliverables, in exchange for their time and effort expended.

How can you submit a project for this course?

For companies that would like to participate in CPSC 594, a description of the project and environment within with the project will execute must be provided to the course instructor (Guenther Ruhe) before August 20, 2022. In the event that there will be more projects than groups, there is no guarantee that your project will be assigned to a group.


Instructor: Dr. Guenther Ruhe
Phone: (403) 220-7692
Email: ruhe@ucalgary.ca