Link to the University of Waterloo home page Advanced Search or
The Undergraduate Calendar

Bachelor of Applied Science and Bachelor of Software Engineering Specific Degree Requirements

Faculty Options

Option in Software Engineering
Printable Version Printable Version

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. It should be noted that 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.  

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


Two of the following courses are required for the option.

Course Title
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, 121W (see Wilfrid Laurier University calendar), HRM 200, MSCI 211, MSCI 311, MSCI 454COMM 400
Societal Issues CS 492, ME 401GENE 411 or ECE 290, 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.


Office of the Registrar
University of Waterloo
2nd Floor, Needles Hall
200 University Avenue West
Waterloo, Ontario, Canada N2L 3G1
519 888 4567

contact us | UWaterloo home | privacy | powered by InterGlobal Solutions