Link to the University of Waterloo home page
2021-2022

The Undergraduate Calendar

 

 

Faculty of Engineering

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

Software Engineering

Over the last few decades, there has been a tremendous growth in information technology and its impact on everyday life. Progress in computer science and accumulated experience with industrial production of software have led to the emergence of software engineering as a separate discipline. The software engineering discipline has been defined as "the application of systematic, disciplined, quantifiable approaches to the development, operation, and maintenance of software"; that is, the application of engineering to software. The software engineer must apply well-defined techniques, methods, and tools to ensure the correctness, reliability, performance, maintainability, and usability of the software systems being developed.

The technical requirements of these software engineers include a strong foundation in mathematics, natural sciences, and computer science; a broad education in software engineering and design; an understanding of computers and networks; a better appreciation for all aspects of the software engineering life cycle; and the use of methodologies and tools.

The curriculum requirements are not all technical. Industry is also asking for graduates who have facility across several disciplines. Software engineering graduates need to have substantial communications, business, and reasoning skills. Graduates should be able to work in groups; make presentations to technical and non-technical audiences; write coherent well-reasoned reports; and assess the social, technical, legal, and commercial implications of the technology they help to create.

The Honours Software Engineering plan leads to a Bachelor of Software Engineering (BSE) degree.

Administrative Structure

Leadership for the Software Engineering (SE) plan is provided by a Software Engineering director, normally a faculty member chosen from either Computer Science or Electrical and Computer Engineering with a joint or cross appointment. The director is responsible for the academic issues associated with the plan's operations, including student liaison and advisement. The associate director of Software Engineering assists the director in managing the day-to-day operations and in advising students.

The Software Engineering board oversees the plan's operation and evolution. This inter-faculty board consults with the two home academic units and reports to the two faculty councils. The chair of the board alternates between the dean of the Faculty of Engineering and the dean of the Faculty of Mathematics. Ex-officio members of the board include the

  • Dean of Engineering
  • Dean of Mathematics
  • Director of the David R. Cheriton School of Computer Science
  • Chair of Electrical and Computer Engineering
  • Director (or Associate Director) of Undergraduate Studies (Computer Science)
  • Associate Chair of Undergraduate Studies (Electrical and Computer Engineering)
  • Software Engineering Director

In addition, the board includes four faculty members, two from Computer Science and two from Electrical and Computer Engineering; and one student from Software Engineering. Faculty members are appointed for two-year, renewable terms; the student member typically serves a two-term appointment.

The Software Engineering Curriculum Committee is responsible for the maintenance and evolution of the curriculum and is chaired by the Software Engineering director. The committee consists of the director and associate director of Software Engineering, six other faculty members (three from Computer Science and three from Electrical and Computer Engineering, including the Electrical and Computer Engineering associate Chair of undergraduate studies and the Computer Science director of undergraduate studies) and one student from Software Engineering. The membership may be drawn from outside of the Board and must include a majority of licensed professional engineers. The Software Engineering Curriculum Committee reports to the Software Engineering Board and consults with both the Computer Science Undergraduate Academic Plans Committee and the Electrical and Computer Engineering Undergraduate Studies Committee.

Admissions

The Software Engineering Board, in consultation with the faculties of Engineering and Mathematics and their admissions committees, determines the admission requirements for Software Engineering.

For details on admission information, see the Admissions section of this Calendar.

Options, Specializations, Minors, and Joint Honours

Software Engineering students are considered as both Mathematics and Engineering students, and can thus take advantage of degree enhancements available to students from either faculty. These enhancements take the form of additional plans such as options, specializations, minors, and joint honours.

Software Engineering students are eligible for either the Artificial Intelligence Option (Engineering) or the Artificial Intelligence Specialization (Computer Science), but cannot graduate with both degree enhancements. See the full list of Computer Science specializations or the full list of Options, Specializations and Electives for Engineering Students.

The following Mathematics Joint Honours plans are also approved as additional plans for BSE students:

BSE students are not eligible to add Joint Computer Science (Bachelor of Mathematics), Joint Bachelor of Computer Science plans, or stand-alone BMath Honours plans from the Faculty of Mathematics. BSE students pursuing a Joint Honours plan are not required to satisfy the Table 2 Faculty Core Courses requirements in the degree requirements for all Mathematics students. These students are still required to fulfil all requirements for the BSE. BSE students may be eligible to add other options, specializations, or minors in Mathematics, Engineering, or other faculties, subject to the approval of the Software Engineering associate director. Students should be aware that adding plans will constrain their choice of electives, and may require additional courses. Thus, it is advisable to start preparing for additional plans in the first and second years. Students should also consider the benefits of not adding plans, in that they are better able to personalize their curriculum if they have more flexibility in choosing their electives.

Software Engineering Awards

Students in the Bachelor of Software Engineering plan are eligible for Awards of Excellence in the Faculty of Mathematics. Students in the Bachelor of Software Engineering plan are eligible for Awards of Excellence in the Faculty of Engineering.

Honours Software Engineering

The Software Engineering plan is offered jointly by the David R. Cheriton School of Computer Science and the Department of Electrical and Computer Engineering; it is only offered in the co-operative 8-stream.

Its curriculum prepares graduates for entry into the software engineering profession. It covers the scientific and mathematical foundations of the discipline, engineering science and engineering design appropriate to the discipline, and exposes students to the ethical and societal issues associated with the discipline. Graduates will be able to apply their knowledge to produce software solutions to specific problems.

Students will be considered members of both the Faculty of Engineering and the Faculty of Mathematics, although for administrative purposes they will be registered officially in a separate unit. Students will be promoted based on the Examination and Promotion rules used in the Faculty of Engineering (see Examinations and Promotions). A non-voting representative from the Faculty of Mathematics will sit on the Engineering Examinations and Promotion Committee, to provide insight into the policies, philosophies, culture, and requirements that pertain to Mathematics students. The Software Engineering plan is also considered an Honours Mathematics plan for purposes of student access to Mathematics courses. The Software Engineering advisor will advise students on how to achieve their academic goals. Students will graduate with a Bachelor of Software Engineering.

Legend

Key Description
S/S Sequence/Stream
F,W,S F=fall term, W=winter term, S=spring term
1,2,3,4 plus A or B Denotes academic year and term
WT Denotes scheduled work terms

Study/Work Sequence

S/S F W S F W S F W S F W S F W
8 1A 1B WT 2A WT 2B WT 3A WT 3B WT 4A WT 4B

Academic Curriculum

Legend for Next Table

Key Description
* One hour seminar per week
** Laboratory is not scheduled and students are expected to find time in open hours to complete their work
+ Number of contact hours for the tutorial or laboratory are unknown; there may be more components than the class (LEC) section
Cls Class, lecture or seminar
Tut Tutorial
Lab Laboratory
0 - 9 Number of hours for Class, Tutorial, Laboratory

The term by term academic component of the curriculum is as follows:

Term Course and Title Cls Tut Lab

1A Fall

CS 137 Programming Principles 3 1 2
ECE 105 Classical Mechanics 3 1 1.25
MATH 115 Linear Algebra for Engineering 3 2 0
MATH 117 Calculus 1 for Engineering 3 2 0
MATH 135 Algebra for Honours Mathematics 3 1 0
SE 101 Introduction to Methods of Software Engineering * 1 0 2

1B Winter

SE 102 Seminar 1 0 0
CS 138 Introduction to Data Abstraction and Implementation 3 1 2
ECE 106 Electricity and Magnetism 3 1 1.25
ECE 124 Digital Circuits and Systems 3 1 1.25
ECE 140 Linear Circuits 3 2 1.25
MATH 119 Calculus 2 for Engineering 3 2 0

2A Fall

SE 201 Seminar 1 0 0
CHE 102 Chemistry for Engineers (see Note 7) 3 2 0
CS 241 Foundations of Sequential Programs 3 1 2
ECE 222 Digital Computers 3 1 1.25
SE 212 Logic and Computation 3 1 0
STAT 206 Statistics for Software Engineering (see Note 5) 3 1 0
Communication Elective (see Note 6) 3 + +

2B Spring

SE 202 Seminar 1 0 0
CS 240 Data Structures and Data Management 3 0 3
CS 247 Software Engineering Principles ** 3 1 3
CS 348 Introduction to Database Management 3 0 1
ECE 192 Engineering Economics and Impact on Society 2 1 0
MATH 239 Introduction to Combinatorics 3 1 0
Elective (see Note 1) 3 + +
WKRPT 200 Work-term Report

3A Winter

SE 301 Seminar 1 0 0
CS 341 Algorithms 3 0 3
CS 349 User Interfaces ** 3 0 1
MATH 213 Signals, Systems, and Differential Equations 3 1 0
SE 350 Operating Systems 3 1 1.25
SE 465 Software Testing and Quality Assurance ** 3 1 3
Elective (see Notes 1 and 2) 3 + +

3B Fall

SE 302 Seminar 1 0 0
CS 343 Concurrent and Parallel Programming 3 0 3
ECE 358 Computer Networks 3 1 1.25
SE 380 Introduction to Feedback Control 3 1 1.25
SE 390 Design Project Planning ** 2 0 2
SE 464 Software Design and Architectures ** 3 1 3
Elective (see Notes 1 and 2) 3 + +
WKRPT 300 Work-term Report

4A Spring

SE 401 Seminar 1 0 0
SE 463 Software Requirements Specification and Analysis ** 3 1 3
SE 490 Design Project 1 ** 2 0 9
Three Electives (see Notes 1 and 3) 3 + +
WKRPT 400 Work-term Report

4B Winter

SE 402 Seminar 1 0 0
SE 491 Design Project 2 ** 2 0 2
Four Electives (see Notes 1 and 3) 3 + +

Advanced Technical Electives (ATE)

The three Advanced Technical Electives comprise fourth-year CS or ECE course offerings. Students are advised to plan ahead when selecting ATEs. Most ATEs are not offered every term, and some ATEs have other ATEs as prerequisites. The academic advisors may approve other courses.

CS List

One of the following CS courses:

  • CS 360 Introduction to the Theory of Computing
  • CS 365 Models of Computation
  • CS 370 Numerical Computation
  • CS 371 Introduction to Computational Mathematics
  • CS 442 Principles of Programming Languages
  • CS 444 Compiler Construction
  • CS 448 Database Systems Implementation
  • CS 449 Human-Computer Interaction
  • CS 450 Computer Architecture
  • CS 451 Data-Intensive Distributed Computing
  • CS 452 Real-time Programming
  • CS 454 Distributed Systems
  • CS 457 System Performance Evaluation
  • CS 458 Computer Security and Privacy
  • CS 462 Formal Languages and Parsing
  • CS 466 Algorithm Design and Analysis
  • CS 479 Neural Networks
  • CS 480 Introduction to Machine Learning
  • CS 484 Computational Vision
  • CS 485 Statistical and Computational Foundations of Machine Learning
  • CS 486 Introduction to Artificial Intelligence
  • CS 487 Introduction to Symbolic Computation
  • CS 488 Introduction to Computer Graphics
  • CS 489 Advanced Topics in Computer Science
ECE List

One of the following ECE courses:

One additional course from the CS and ECE Lists above, or from the Extended List below.

Extended List
  • CO 331 Coding Theory
  • CO 342 Introduction to Graph Theory
  • CO 351 Network Flow Theory
  • CO 353 Computational Discrete Optimization
  • CO 367 Nonlinear Optimization
  • CO 456 Introduction to Game Theory
  • CO 481 Introduction to Quantum Information Processing
  • CO 485 The Mathematics of Public-Key Cryptography
  • CO 487 Applied Cryptography
  • MSCI 343 Human-Computer Interaction
  • MSCI 446 Introduction to Machine Learning
  • MSCI 543 Analytics and User Experience
  • MTE 544 Autonomous Mobile Robots
  • MTE 546 Multi-Sensor Data Fusion
  • SE 498 Advanced Topics in Software Engineering
  • STAT 440 Computational Inference
  • STAT 441 Statistical Learning - Classification
  • STAT 442 Data Visualization
  • STAT 444 Statistical Learning - Advanced Regression
  • SYDE 533 Conflict Resolution
  • SYDE 543 Cognitive Ergonomics
  • SYDE 548 User-Centred Design Methods
  • SYDE 552 Computational Neuroscience
  • SYDE 556 Simulating Neurobiological Systems
  • SYDE 575 Image Processing

Science Course Electives (SCE)

Normally, these courses are in the natural sciences, chosen from the list below. Alternate courses may be chosen in consultation with the SE academic advisors.

Science Course Electives

Two of

Linkage Electives (LE)

Three courses, at least one from each of the areas of Societal Issues, Humanities and Social Sciences, and Communications, as specified below. Students should be aware that these courses may have enrolment limits, or may not fit their schedules.

One course on Societal Issues:

One additional course on Humanities and Social Sciences:

One course on Communications:

Notes

  1. There are 10 electives. These electives must include three Advanced Technical Electives, two Science Course Electives, and three Linkage Electives. For their remaining two electives, students may choose to take additional courses from the elective lists above or any other 0.5 credit course(s) for which they meet the requisites. Advanced Technical Electives may not be taken before the 3A term.
  2. Students must take one elective in third year, but can choose to take it in either 3A or 3B. Students may take electives in both terms if they choose.
  3. Students may choose to take three electives in 4A and four electives in 4B, instead of two in 4A and five in 4B.
  4. Students enrolled in Software Engineering will only be permitted to use the WD and WF (see Grades for descriptions) provisions used in the Faculty of Mathematics to withdraw from extra courses taken above the degree requirements.
  5. Students may replace STAT 206 and one of their unrestricted electives with the combination of STAT 230 and STAT 231.
  6. The linkage elective on communication is normally taken in the 2A term. It must be completed with a grade of at least 60% prior to enrolling in the 3A term.
  7. CHE 102 is treated as an elective for the purpose of reduced load; that is, students may take CHE 102 either before or after their 2A term. Students may take CHEM 120 instead of CHE 102.

Communication Skills Requirement

Strong communication skills are essential to academic, professional, and personal success. As such, Software Engineering students must take a course from the Linkage Elective Communication List in the 2A term. This elective list is intended to include all of Mathematics Communication Skills Requirements List 1, and selections from Mathematics Communication Skills Requirements List 2. Communication skills are further developed and evaluated in three work-term reports (described below) and in SE 101, SE 390, SE 490, and SE 491.

Three Work-term Reports (WKRPT)

Work-term reports are listed as part of the Software Engineering curriculum; they are treated as courses that a BSE student must successfully complete to satisfy the plan requirements. They appear on all grade reports and transcripts, but they are not used in calculating term averages.

Each work-term report requirement is satisfied by earning a grade of satisfactory or better on a work-term report related to the previous term's co-op employment. Each work-term report must be submitted at the beginning of the academic term in which it is listed as a course; it is due seven days after the first official day of lectures. Reports submitted after the due date will receive a failing grade and will be evaluated the following academic term.

Failed work-term reports contribute to a student's accumulated failed-course count. They also appear on a student's transcript. Once a failure has cleared, the original grade will still be listed on the transcript but will be annotated with a credit (CR) in the "sup" field.

Five Professional Development (PD) Courses

Five professional development courses are required as described in the BASc and BSE specific degree requirements section on Work Terms. Two core PD courses are specified for all engineering students: PD 19 and PD 20. Due to the importance of understanding the legal and ethical ramifications of software development, Software Engineering students are also required to take PD 10. This course replaces one of the PD electives, such that Software Engineering students have three core PD courses (PD 10, PD 19, and PD 20) and two PD elective courses. Software Engineering students are automatically enrolled in PD 10, PD 19, and PD 20 but must enrol in the elective PD courses using the normal Quest enrolment process.


Office of the Registrar
University of Waterloo
Ira G. Needles Hall
200 University Avenue West
Waterloo, Ontario, Canada N2L 3G1
519-888-4567