COMP-361 Software Engineering Project (Prof. Joseph Vybihal)

McGill Logo


Course Outline Fall 2012 Winter 2013


Software Engineering Tools


About COMP-361

This 1-year course will give students the opportunity to develop a considerable software system
following a rigorous software development process. Over two semesters, students will develop
a system that solves a set of requirements of practical relevance. The project will take students
through all the phases of a software’s life cycle, from inception t ‐ o final deployment and
release. Throughout the project, students will follow a defined process involving software
engineering practises from a variety of disciplines, including: preliminary design, requirements
gathering by interacting with a client, requirements modelling and specification, requirements
analysis, software design, implementation, testing, configuration and change management, and
project management. Project deliverables, documentation, presentations and demonstrations.
The students are to select one project from the following three domains: In-House Software
Development Project, Contract Programming Project, Research & Development Project. The
In-House Project is a game, an ideal project for students in the games stream. The Contract
Programming Project will get you to work with a real-world customer in a business context.
The Research & Development Project will give you the opportunity to work with a professor
on one of their research interests (this could be one of the teachers of the course or some other
professor in the university, as long as it meets all the requirements of the course).
Specific Objectives: At the end of the project, students will have learned how to conduct a
software engineering project by following a defined process. They will know and understand
the different activities pertinent to the different phases of the process. They will have acquired
practical software development experience with a significant project and acquired or refined
the following abilities:

• Effective team work and team management;
• Technical communication, both written and oral;
• Interacting with customers for requirement elicitation;
• Analyzing and designing software;
• Testing software for regression and acceptance;
• Working with software engineering tools;
• Managing software change;
• Assuring software quality;
• Task scheduling and effort estimation.

Prof. Joseph Vybihal | Web CT | Email the Prof. | ©2011 Joseph Vybihal