Faculty of Mathematics and Faculty of Engineering
There have been growing and increasingly visible demands from industry and governments for graduates with stronger software engineering qualifications. These demands include better appreciation for all aspects of the software engineering life cycle, better appreciation of software process, better use of methodologies and tools.
However, these demands have not been all technical. Industry is also asking for graduates who have aptitude across several disciplines. Our Software Engineering Option graduates need to have substantial communications, business, and reasoning skills. Our graduates must be able to make presentations to technical and non-technical audiences, write coherent well-reasoned reports, work in groups, and assess the social, technical, legal, and commercial implications of the technology they help to create.
Thus, the Software Engineering Option has been designed jointly by the Department of Electrical and Computer Engineering and the David R. Cheriton School of Computer Science to meet these demands.
The Option is meant to be part of either a Bachelor of Applied Science (BASc) or Bachelor of Computer Science (BCS) degree and is offered jointly by the faculties of Engineering and Mathematics. Given that the Option involves two faculties, it has slightly different realizations in each of those Faculties. This option description is found in the Calendar sections for the Faculty of Engineering and the Faculty of Mathematics.
It should be noted that this description is for an option in addition to a degree. This option does not replace any of the normal degree requirements. Engineering students must satisfy the BASc degree requirements as specified in the Faculty of Engineering section, and Mathematics students must satisfy the BCS requirements specified in the Faculty of Mathematics section. In most cases, courses which satisfy the Software Engineering Option requirements can be selected to also satisfy some component of the degree.
Software Engineering Components
Software engineering is comprised of several related components. These components involve both the technical aspect of the discipline as well as aspects that link the practitioner to the environment of software development.
The technical component consists of three sub categories: the central concepts of the discipline, the foundations of software engineering, and the applications for which software engineering techniques are to be used. The table below summarizes the technical aspects of software engineering as they relate to Engineering and Mathematics students.
The second component of this discipline is linkage. It is clearly important for the software professional to be able to adapt to the environment often associated with software engineering. As a result of this need, four areas of study have been included in the requirements: societal issues, business issues, reasoning methodologies, and communications. The first three areas of study can be satisfied by taking courses from the lists of courses in the linkage summary. Communication skills, both written and verbal, are very important aspects of software engineering, and are a significant component of the foundation technical courses as well as some of the linkage courses. Each student will have different needs in this area, and students are encouraged to consider taking courses from the suggested list of communications courses below.
Technical Summary
The technical component of this Option consists of courses in three categories: central concepts, foundations, and applications. In many cases the Software Engineering Option courses may satisfy some portion of the degree requirements.
The courses in each category applicable to the two degrees are listed below.
Central Concepts
All of the following courses are required for students enrolled in a BASc degree.
CS 245 Logic and Computation or SE 212 Logic and Computation
ECE 222 Digital Computers
ECE 250 Algorithms and Data Structures
ECE 254 Operating Systems and Systems Programming
ECE 351 Compilers
ECE 356 Database Systems
ECE 380 Analog Control Systems
All of the following courses are required for students enrolled in a BCS degree.
CS 240 Data Structures and Data Management
CS 241 Foundations of Sequential Programs
CS 246 Object-Oriented Software Development
CS 251 Computer Organization and Design
CS 341 Algorithms
CS 350 Operating Systems
CS 448 Database Systems Implementation
Foundation Courses
The following courses are required for both degrees.
ECE 451/CS 445 Software Requirements Specification and Analysis
ECE 452/CS 446 Software Design and Architectures
ECE 453/CS 447 Software Testing, Quality Assurance and Maintenance
Applications
Two of the following courses are required for the Option.
ECE 358 Computer Networks
ECE 429 Computer Architecture
ECE 454 Distributed Computing
ECE 457A Cooperative and Adaptive Algorithms or ECE 457B Fundamentals of Computational Intelligence
ECE 458 Computer Security or ECE 409 Cryptography and System Security
ECE 459 Programming for Performance
ECE 481 Digital Control Systems
CS 444 Compiler Construction
CS 452 Real-time Programming
CS 454 Distributed Systems
CS 457 System Performance Evaluation
CS 466 Algorithm Design and Analysis
CS 486 Introduction to Artificial Intelligence
CS 488 Introduction to Computer Graphics
Linkage Summary
The student must take four courses from the following lists, with at least one course selected from each list. If a student wishes to improve their communication skills by taking a course from the Suggested Communication Courses list (or some other communications course that has been approved by the student's undergraduate advisor), then only three linkage courses (one from each list) are required.
Linkage Area |
Courses |
Business Issues |
BUS 111W, BUS 121W (see University Calendar), HRM 200, MSCI 211, MSCI 311, MSCI 454, COMM 400 |
Societal Issues |
CS 492, ME 401, PHIL 215, PHIL 315, STV 100, STV 202, STV 302, STV 400 |
Reasoning Methodologies |
PHIL 145, PHIL 200J, PMATH 330 |
Suggested Communications Courses
Given that the foundations courses require a high level of proficiency in both written and oral communication skills, students should consider how they can upgrade these skills. The following list of courses is intended for students wishing to improve their communication skills. If one of these courses is taken, then only three of the linkage courses listed above (one from each list) is required. Students interested in pursuing this alternative should discuss their selection with their student advisor. Suggested communications courses: ENGL 109, ENGL 140R, ENGL 210E, ENGL 210F, ENGL 309E, ENGL 376R, ENGL 392A, ENGL 392B, SPCOM 100, SPCOM 223, SPCOM 225, SPCOM 323, SPCOM 324. Students should be aware that these courses may have enrolment limits, or may not fit their schedules.