Course:F05CPSC594 Industry

From Craig

Table of contents

Contact Information

Instructor: Craig Schock

Phone: (403) 210-8483

Email: schock@cpsc.ucalgary.ca

Websites: University (http://www.cpsc.ucalgary.ca/~schock)


What is CPSC 594?

CPSC 594 is a senior undergraduate course in 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 way which 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 semesters. For this year, that means the course runs from September 12, 2005 through April 28, 2006. The course enrollment is limited at 25 students. When the class begins on September 12, 2005, the students will form groups of 4 or 5 (depending on the final enrollment numbers). Each group will spend the school year working on a project for an industry customer.


How are groups assigned to projects?

Companies which 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 approx 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 an 7-8 month period. For evaluation purposes, students will be required to make 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 you looking for?

There are three main guidelines which I think are appropriate:

  • The project must not be mission critical
  • The project must include elements of software development
  • The project should not only help develop the student's software engineering skills but should utilize the skills which the students already possess.

Not Mission Critical

For obvious reasons, the project should not be mission critical. Because of the limited time that the students are going to have for the project coupled with the fact that they are still learning their craft, a mission critical project would add a lot of pressure which would distract the team from its main purpose.

Elements of Software Development

In this course, we are trying to help the students develop skills surrounding software development (project managament, 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 a legacy database/system, for example) and the interaction with the website was subject to the enforcement of business rules/constraints, that would be appropriate for this course.

Utilizing student's existing skills

Students in a University setting are often exposed to the "latest and greatest" technologies. It's 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.


What about project scope?

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

I would recommend that an iterative lifecycle is 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 which 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 the success of the project. This structure leaves the door open for continued development after the course is completed.

Closing thoughts

Any issues surrounding copyrights, intellectual property rights, and non-disclosure agreements must be identified and documented within the project description before the bid process begins. It is my preference that these issues generate as little overhead as possible as the focus of this course is to develop the skills of the students and to produce something of value for the customer. The University of Calgary and The Department of Computer Science 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 the customer will have to provide that equipment.


How can I submit a project for this course?

For companies which would like to participate in CPSC 594, a description of the project and the environment within with the project will execute must be provided to Craig Schock before August 31, 2005. In the likely case that there will be more projects than groups, there is no guarantee that your project will be assigned to a group.