Software Engineering

NOTE: See the beginning of Section H for abbreviations, course numbers and coding.
*L - Laboratory periods on alternate weeks. 
* - Engineering electives. Not all offered every year. 
Consult Department as to availability of courses from year to year.

All courses must be passed with a grade of C or better.

SWE4040Software Engineering Design Project8 ch (2C 4L) [W]

A software design and implementation experience involving a medium to large group. Students prepare requirements, specification, analysis and design documents as a team toward development of a useful software product and use the documentation to implement and test the product. The development process should consider a broad range of constraints including non-functional requirements to the software product, health and safety, sustainable development and environmental stewardship. Students manage their projects professionally, present their design work orally, and demonstrate formally that the product meets its requirements.

Prerequisites: CS 3503 or at least 2 terms of co-op and 100 ch in the software engineering program or permission from the instructor. 

SWE4103Software Quality and Project Management4 ch (3C 3*L) [W]

Software Quality: Emphasizes testing, verification and validation techniques. Introduces formal specification languages, statistical software reliability engineering, software development process monitoring and maturity models, and process and product metrics. Software Project Management: Emphasizes software project tracking, planning and scheduling, organizing and managing software development teams, introduces factors influencing productivity and success, risk analysis and planning for change.

Prerequisite: CS 2613 or CS 3503ECE 4403 or CS 2043 or permission from the instructor.

SWE4403Software Architecture and Design Patterns (Cross-Listed: CS 4015)4 ch (3C 2*L) [P]

This course introduces concepts of software design patterns and architecture. The course covers principles of reuseable object-oriented programming, as well as creational, structural, and behavioural patterns. The course also covers software quality attributes, architectural tactics and patterns, designing and documenting software architecture, architecture reconstruction, architecture evaluation, and software product lines. Students will practice applying and implementing design patterns and software architecture design and evaluation in course work by developing various software systems.

Prerequisite: CS 2043 or permission from the instructor.