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.
| SWE3503 | Systems Analysis, Design and Project Management | 4 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. | ||
| SWE4040 | Software Engineering Design Project | 8 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). | ||
| SWE4103 | Software Quality and Project Management | 4 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)) | ||
| SWE4203 | Software Evolution and Maintenance | 4 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. | ||
| SWE4213 | Web 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. | ||
| SWE4403 | Software 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. | ||
| SWE4503 | Engineering Machine Learning Systems | 4 ch (3C 1T) |
|---|---|---|
Explore what it takes to develop and maintain production ready machine learning (ML) systems. Learn about the phases of the ML Operations cycle, and key elements of the ML pipeline, including Continuous Integration, Continuous Development & Deployment, and Continuous Testing. Investigate testing strategies, ML training and service architectures, and hardware needed for deep learning systems. | ||
| SWE4703 | Software 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 | ||
| SWE4913 | Independent Project | 4 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. | ||