Software Engineering

NOTE: A minimum grade of C or CR is required for all prerequisites for SWE courses. 
NOTE: See the beginning of Section H for abbreviations, course numbers and coding.
L* - Laboratory periods on alternate weeks. 
Consult Department as to availability of courses from year to year.
SWE3503Systems Analysis, Design and Project Management4 ch (3C 1T) (W)

Learn about the life cycle of information systems. Explore techniques and tools used in systems analysis and project management. Develop communication skills, both written and oral, as well as team skills.

Prerequisites: CS 1543 and 60 ch. 

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

Establish requirements and design a product to meet them, taking into consideration a broad range of constraints including non-functional elements as well as health and safety, sustainable development, and environmental stewardship. Document architecture and feature specifications and build the product incrementally, including testing as an integral part of this process.  Manage the project professionally, present designs orally, and formally demonstrate that the product meets its requirements.

Prerequisites: ((CS 3503 or SWE 3503 or at least 2 terms of co-op) and 100 ch in the software engineering program). 

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

Review software development processes, quality models, and quality standards Learn about software process and product metrics and monitoring Explore factors influencing team productivity and product quality Survey ways that AI is influencing software quality practices Use automated testing and continuous integration in a software project environment which also includes manual exploratory and acceptance testings. Practice software project tracking, planning, and scheduling, along with organizing and managing software development teams, performing risk analyses, and planning for change. 

Prerequisite: ((CS 2043 or ECE 4403) and *(CS 2613 or CS 3503 or SWE 3503))

SWE4203Software Evolution and Maintenance4 ch (3C 3L*)

Learn about pproaches to maintenance and long-term software development. Explore key practices for maintainability including change management, impact analysis, release and configuration management and regression testing. Learn how reengineering and reverse engineering enhance reusability.

PrerequisiteCS 2043 or ECE 4403

SWE4213Web Development, Deployment and Operations 4 ch (3C 2L*) (P)

Explore behind the scenes configuration required for web applications to achieve scalability as well as robust and maintainable performance in production environments. Design and configure local and hybrid infrastructure to deploy web applications using modern practices that bridge the gap between traditional development and operations management. 

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

Develop a deep understanding of software architecture and design patterns and strengthen skills to design, evaluate, and improve software architectures using industry best practices. Apply object-oriented programming principles to create reusable and maintainable software. Practice using creational, structural, and behavioral design patterns to design flexible, scalable, and maintainable software solutions. Analyze architectural quality attributes and design tactics to balance trade-offs between performance, scalability, maintainability, security, and other key system properties. Assess and reconstruct software architectures, evaluate software product lines, and develop effective documentation to communicate architectural decisions. 

Prerequisite: CS 2043.

SWE4503Engineering Machine Learning Systems 4 ch (3C 1T)

Explore what it takes to develop and maintain production ready machine learning (ML) systemsLearn about the phases of the ML Operations cycle, and key elements of the ML pipeline, including Continuous Integration, Continuous Development & Deployment, and Continuous TestingInvestigate testing strategies, ML training and service architectures, and hardware needed for deep learning systems.

Prerequisites: (CS 1093 or CS 2613), (CS 2263 or ECE 3221), and STAT 2593 
SWE4703Software Defined Energy Systems 4 ch (3C 3L*)

Explore how full-stack software development improves the efficiency and awareness of energy systems. Learn about software-driven paradigms in the energy sector, including transactive energy, peer to peer energy trading, and the internet of energy. Leverage distributed software technologies to work on a team research project addressing energy sustainability. Practice designing software architecture for complex energy requirements and prototyping novel solutions in energy systems. Build skills in sustainable and ethical software development, problem-solving, and teamwork

Prerequisites: CS 2043 or ECE 4403 or SWE 3503
SWE4913Independent Project4 ch (W)

Find a faculty member to act as a supervisor and complete an independent project or literature survey under their guidance. Deliverables include a comprehensive report detailing the work.

Prerequisite: Successful completion of 100 ch in an undergraduate program in the Faculty of Engineering or Faculty of Computer Science.