The Software Engineering Option is available to all students in the Faculty of Engineering (including Architecture), except students in Software Engineering.
This Option is offered jointly by the Faculty of Engineering and the David R. Cheriton School of Computer Science in the Faculty of Mathematics.
For students in the Faculty of Engineering, this Option requires a total of eight courses.
- Three required courses:
- Four additional courses from the topics list below, one of which may be substituted with a course from the data structures and algorithms list.
- One course from List A Complementary Studies Electives for Engineering Students that considers application of computing technology, or an alternative approved by the option co-ordinator.
The courses chosen to satisfy this Option must satisfy four additional constraints:
- They must satisfy Canadian Engineering Accreditation Board (CEAB) requirements.
- They must be approved by the option co-ordinator.
- Five of the courses must be considered elective (that is, not core requirements) in the student's academic plan. For the purposes of this Option, a course that a student could choose to graduate without will be considered elective.
- The student must have earned a minimum average of 75% in the selected courses in order to have earned the Option.
Students may not declare this Option until they have completed both an introductory programming course and a data structures and algorithms course. Students must have a minimum average of 75% in these two courses in order to declare this Option.
The lists below are intended to be the same as for the Computing Option and the Computer Engineering Option. These lists are also intended to include courses that are normally part of the Computing Minor offered by the Cheriton School of Computer Science. Other courses from Computer Science may be used towards this Option with permission of the option co-ordinator. Students may declare at most one of the Computing Option, Computer Engineering Option, or Software Engineering Option. Students may change which of the three Options they declare by contacting the option co-ordinator(s).
Introductory Programming
- AE 121 Computational Methods
- BME 121 Digital Computation
- CHE 120 Computer Literacy and Programming for Chemical Engineers
- CIVE 121 Computational Methods
- CS 115 Introduction to Computer Science 1
- CS 116 Introduction to Computer Science 2
- CS 135 Designing Functional Programs
- CS 145 Designing Functional Programs (Advanced Level)
- ECE 150 Fundamentals of Programming
- ENVE 121 Computational Methods
- GEOE 121 Computational Methods
- ME 101 Introduction to Mechanical Engineering Practice 2
- MSCI 121 Introduction to Computer Programming
- MTE 121 Digital Computation
- NE 111 Introduction to Programming for Engineers
- SYDE 121 Digital Computation
Data Structures and Algorithms
- BME 122 Data Structures and Algorithms
- CS 136 Elementary Algorithm Design and Data Abstraction and CS 136L Tools and Techniques for Software Development (see Note)
- CS 146 Elementary Algorithm Design and Data Abstraction (Advanced Level) and CS 136L Tools and Techniques for Software Development (see Note)
- CS 231 Algorithmic Problem Solving
- CS 234 Data Types and Structures
- ECE 250 Algorithms and Data Structures
- ECE 406 Algorithm Design and Analysis
- MSCI 240 Algorithms and Data Structures
- MTE 140 Algorithms and Data Structures
- SYDE 223 Data Structures and Algorithms
Note: Students who take CS 136 or CS 146 will also be required to enrol in CS 136L which is graded CR/NCR basis. However, passing CS 136L is not a requirement for the option and the course may be coded as NRNA.
Topics List
The following list of topics are organized into specific areas for readability.
Logic
- CS 245 Logic and Computation
- ECE 208 Discrete Mathematics and Logic 2
- SE 212 Logic and Computation
Databases
- CS 338 Computer Applications in Business: Databases
- ECE 356 Database Systems
- MSCI 245 Databases and Software Design
Operating Systems
- ECE 350 Real-Time Operating Systems
- MTE 241 Introduction to Computer Structures & Real-Time Systems
- SE 350 Operating Systems
Computing Systems
Networks
Digital Hardware
- BME 393 Digital Systems
- CS 230 Introduction to Computers and Computer Systems
- ECE 124 Digital Circuits and Systems
- ECE 222 Digital Computers
- ECE 224 Embedded Microprocessor Systems
- ECE 320 Computer Architecture
- ECE 327 Digital Hardware Systems
- ECE 423 Embedded Computer Systems
- ME 262 Introduction to Microprocessors and Digital Logic
- MTE 262 Introduction to Microprocessors and Digital Logic
- MTE 325 Microprocessor Systems and Interfacing for Mechatronics Engineering
- SYDE 192 Digital Systems
Software Engineering
- CS 445/ECE 451 Software Requirements Specification and Analysis
- CS 446/ECE 452 Software Design and Architectures
- CS 447/ECE 453 Software Testing, Quality Assurance and Maintenance
- MSCI 342 Principles of Software Engineering
- SE 463 Software Requirements Specification and Analysis
- SE 464 Software Design and Architectures
- SE 465 Software Testing and Quality Assurance
Human-Computer Interaction
Security and Privacy
Pattern Analysis and Machine Intelligence
Numerical Methods
- BME 411 Optimization and Numerical Methods
- CHE 322 Numerical Methods for Process Analysis and Design
- CIVE 422 Finite Element Analysis
- EARTH 456 Numerical Methods in Hydrogeology
- ECE 204 Numerical Methods
- ECE 204A Numerical Methods 1 and ECE 204B Numerical Methods 2
- ENVE 225 Environmental Modelling
- ME 559 Finite Element Methods
- ME 566 Computational Fluid Dynamics for Engineering Design
- MTE 204 Numerical Methods
- NE 336 Micro and Nanosystem Computer-aided Design
- SYDE 411 Optimization and Numerical Methods
Special topics courses as approved by the option co-ordinator.