In this section we will explain why the SE program at Waterloo exists and what we have learned since then. Both of these inform a discussion of whether we would seek to create such a program today.
In the mid-1990s, the then-Department (now a School) of Computer Science at the University of Waterloo included three core Software Engineering faculty and the Department of Electrical and Computer Engineering included the same number. For context, each unit had about 40 faculty members.
Undergraduate education in Software Engineering at Waterloo first coalesced around an SE Option (comparable to a minor), first offered in 1994. This program was mostly aimed at CS and Computer Engineering (CE) students, and was jointly offered by CS and ECE with a core of three Software Engineering courses:
- Software Requirements Specification and Analysis
- Software Design and Architecture
- Software Testing, Quality Assurance and Maintenance
We will reflect on this core below.
The SE core would build on a set of 8 core technical courses which are essentially core undergraduate computer science (e.g. algorithms, operating systems, etc) generally required of all CS and CE undergraduate students, 3 software-intensive courses, and non-technical electives in communications, societal issues, and business issues.
Four years later, in 1999, a committee proposed a dedicated Bachelor of Software Engineering program at Waterloo, with the rationale that an option wasn't big enough to encompass the field of software engineering. It is this program that we discuss in this paper.
The University of Waterloo offers three programs that are, broadly speaking, in the software area: Computer Science, Software Engineering, and Computer Engineering. While Software Engineering is a large[sizes] program on the Canadian scale, it is small compared to both Computer Science and Computer Engineering. At undergraduate recruitment events, by far the most-often-asked question is what is the difference between these programs; we have printed business cards with QR codes that link to longer descriptions of the differences.
We designed the program as a joint program. SE students belong to both the Faculty of Mathematics and the Faculty of Engineering, and we say that SE students are CS students and simultaneously belong to the ECE department. In practice, they strongly identify with Engineering, yet many students[CS] transfer to Computer Science. SE students satisfy "CS students only" prerequisite requirements for course enrollment purposes.
TODO: include transfer-to-CS stats
TODO: look up stats on Canadian CS program sizes
resources/graduate-counts
https://uwaterloo.ca/software-engineering/future-undergraduate-students/comparing-bse-bcs https://uwaterloo.ca/software-engineering/future-undergraduate-students/comparing-bse-basc-comp-eng
Penn has a similar situation:
https://be.seas.upenn.edu/undergraduate/admissions/bas-or-bse-degree/
The first Software Engineering class, of 102 students, was admitted in September 2001, and 80 of them graduated on schedule in June 2006. Since then, the program has produced 1315 graduates, with a first-year admissions target of 125 students. The mean number of first-year students over the 20-year history is also 124.1, but that obscures the fact that the 2001--2010 average is 113 and the 2011--2021 average is 135. The mean number of graduating-term students is 85 across the 16 graduating classes to date. As of February 2021, there are 582 students enrolled across all years.
In the same time period, CS has granted just under 6000 undergraduate degrees, while ECE has granted 2000 undergraduate degrees.
-
aCCreditation
- ethics and professionalism (see professionalism.md)
-
collaboration
-
cohort
- but no ordering between 3B, 4A, 4B
-
coop
-
sibling programs (NE, TRON, GeoE, BME)