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 facility across several disciplines. Our software engineering option graduates need to have substantial communications, business, and reasoning skills. Our graduates should 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 BASc or 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 those faculties. This option description is found in the calendar chapters for each faculty (the Faculty of Engineering and the Faculty of Mathematics). The interested reader is directed to the appropriate portion of the calendar.
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 chapter, and Mathematics students must satisfy the BCS requirements specified in the Faculty of Mathematics chapter. 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. It should be noted that the degree requirements must be met. 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.
ECE 103 Discrete Mathematics for Engineers
ECE 222 Digital Computers
ECE 223 Digital Circuits and Systems
ECE 250 Algorithms and Data Structures
ECE 251 Programming Languages and Translators
ECE 204 Numerical Methods
ECE 324 Microprocessor Systems and Interfacing
ECE 354 Real-Time Operating Systems
ECE 380 Analog Control Systems
ECE 456 Database 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 Software Abstraction and Specification
CS 251 Computer Organization and Design
CS 341 Algorithms
CS 350 Operating Systems
CS 448 Introduction to Database Management
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 Architecture
ECE 453/CS 447 Software Testing, Quality Assurance and Maintenance
Applications
Two of the following courses are required for the option.
ECE 428 |
Computer Networks and Security |
ECE 429 |
Computer Structures |
ECE 454 |
Distributed and Network Computing |
ECE 457 |
Applied Artificial Intelligence |
ECE 484 |
Digital Control Applications |
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 his or her 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, 121W, HRM 200, MSCI 211, 311, 454, MTHEL 400 |
Societal Issues |
CS 492, ME 401, GENE 411, PHIL 215, 315, STV 100, 202, 302, 400 |
Reasoning Methodologies |
PHIL 145, 200J, 243, 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, 140R, 209, 210E, 210F, 210G, 219, 309E, 376R, 392A, 392B, SPCOM 223, 224, 225, 323, 324. Students should be aware that these courses may have enrollment limits, or may not fit their schedules.