Choosing Between Waterloo SE and CS
“What is the difference between Software Engineering and Computer Science at Waterloo? Which one should I pick?”
This is one of the most common questions for prospective undergrad students considering a CS related degree at Waterloo. There are a few123 answers out there already, but I’m going to add my own here. I graduated from SE in 2025, my insight is perhaps more up to date than the answers that came before. For example, it is no longer the case that transferring from SE to CS is easy. On the flip side, if you are reading this far into the future, more recent perspectives might be more relevant to you.
Motivation
This post is motivated largely by my experiences at Waterloo’s Fall Open House. Waterloo frequently hosts these events for prospective students to visit and gain more information about the various programs so they can make an informed decision. I volunteered for the Open House in Fall of 2024, where I manned the Software Engineering booth. Numerous students walked up and ask questions about the program. By far the most common question was about the differences between SE and CS.
Besides that, a number of high school students have also reached out to me individually with the same question. Unfortunately, a nuanced and complete answer is quite the mouthful, to the point that I think it warrants a full article.
For the purposes of this article, I will distinguish between CS, meaning the Computer Science program at Waterloo, and CompSci, referring to the study of computer science as a subject.
Career Outcomes
To be clear, both programs lead to very similar career outcomes. That is, both programs are well-geared towards preparing you for a successful Software Engineering career upon graduation. One program is not meaningfully better than the other in that respect. The Software Engineering cohorts frequently produce a “class profile”4 when they graduate, which shares self reported5 information on where the cohort will be working, and even salary information. It seems that the CS graduating classes also creates class profiles6.
It might be true that the SE curriculum is more focused on practical software engineering skills for industry, but those skills are largely developed through co-op anyways. Both programs have equal access to Waterloo’s co-op job board.
Curriculum
There’s a lot of knowledge overlap between the two programs, but the curriculums are structured quite differently. Broadly speaking, Software Engineering is less flexible, with more breadth of technical knowledge and focus on applied skills (as opposed to theory). The current curriculum for each program is linked below:
- Software Engineering: https://uwaterloo.ca/academic-calendar/undergraduate-studies/catalog#/programs/H1zle10Cs3
- Computer Science: https://cs.uwaterloo.ca/sites/default/files/uploads/documents/2025-2026-bcs.pdf
A useful tool is UWFlow for looking up course codes, their descriptions, and student opinions of the class.
As you can see, the CS curriculum is more of a checklist, while the SE curriculum has a rigid list of courses that you’ll be taking each term. That being said, there is a lot of overlap in program requirements. To name a few examples, both programs require linear algebra, calculus, and stats. Though the software engineering versions are more applied. Think more computation and less proofs. Both programs have communications and sciences requirements, and of course they share a lot of the same CS course requirements. The difference is that you have more flexibility in when you can take them in Computer Science. Approximately, the Computer Science requirements are a subset of the Software Engineering ones when it comes to required course subjects (SE doesn’t have, for example, a depth requirement). For the most part, UWFlow offers a good summary of each course’s content and I can’t offer much on top of the consensus from student reviews. It should be noted that your experience varies wildly depending on which professor is assigned to teach the course (this is generally true in every undergrad program). I’ll add my opinion on some of the Software Engineering exclusive course requirements below, focusing on the non CompSci requirements.
- CHE 102 - Chemistry for Engineers: This does not add much new content on top of twelfth grade chemistry. I thought it was pretty boring but given that chemistry is a prerequisite for SE, it should be easy to do well.
- ECE140 - Linear Circuits: I actually liked circuits, but it certainly didn’t appeal to everyone. Especially not all Software Engineers. That being said, it’s an introductory course and not intended to be difficult.
- ECE192 - Engineering Economics and Impact on Society: Easy half-credit introductory economics.
- ECE105 - Classical Mechanics (or some equivalent): CS has science requirements, but SE specifically requires you to take a newtonian mechanics course. You have exposure to this from your physics class. ECE105 is generally considered quite difficult, I don’t have a good sense of the difficulty of the alternative equivalents (PHYS115 or PHYS121).
- MATH213 - Signals, Systems, and Differential Equations: Heavy calculus, just in case you thought you were done after first year. Generally disliked as a difficult course unimportant to your software engineering endeavours.
- SE380 - Introduction to Feedback Control: A continuation of MATH213, in case you haven’t had enough. More calculus and linear algebra.
One might wonder how these required courses are relevant to software engineering. Answer: they aren’t.
It’s unlikely that every one of these courses will appeal to someone, but the SE student has to take them anyway. Upon reflection, I think the wide breadth has its merits. Linear circuits was practically applicable for a personal project where I designed a PCB. Control theory has some overlap with my current research, which is related to partial differential equations. Of course, if you do have the interest you can pursue similar courses anyways as a CS student.
To be clear, both the Software Engineering and Computer Science programs have a wealth of CompSci course requirements, covering everything that one would expect. The SE curriculum actually has stricter requirements when it comes to CompSci courses as well. For example, SE students must take a databases course, which is optional for CS. Besides the non CompSci requirements, I don’t think the more rigid SE curriculum is that much of a downside, since you’d need to take most of the courses anyways at some point as a CS student, and the extra CompSci requirements (such as databases) are rather important knowledge for any Software Engineer.
The Design Project
This is essentially a large group side project done in your fourth and final year. It’s pretty much what you make of it. Easy to pass with minimal effort, but some groups go all-out on it. UWFlow was a Software Engineering design project.
The Cohort
This is what people cite as one of the main benefits of SE over CS. I generally agree. A side effect of having a rigid curriculum is that you take the same courses as all the other SE students. Some benefits of this:
- You get to know your classmates very well, the SE cohort is generally much more close-knit than the CS one. The SE cohort is also significantly smaller than the CS one.
- It’s easier to form study groups and discuss questions. If an assignment question is confusing (this happens very often), it’s easy to get support from classmates, since usually everyone is taking the same course.
- A lot of your classes will be comprised exclusively of SE students. This essentially allows for collective bargaining. We had “class reps”7 for this purpose. As far as I’m aware, this isn’t really a thing in CS (or it happens to a much lesser extent). Example: An assignment for class A is due on the same day as an assignment for class B. Since everyone in the cohort has these same deadlines, we can try to move the deadline for one assignment to lighten the load without worrying about screwing someone over, who might have a deadline on the new due date.
- Lots of cohort events. One of the more utilitarian examples is resume review, lower-year SE students can get advice from upper-year SEs.
Logistics
SE students are considered part of both the school of Computer Science and Engineering. SE students have a wider selection of classes available to them, they can take the same subjects as CS students, but also have access to numerous ECE courses. This list shows all CompSci courses and their prerequisites. Classes that are marked “Computer Science students only” are also available to SE students. This list, on the other hand, shows the ECE courses and marks the ones that SE students can take, many of which are not open to CS students.
The Software Engineering program is accredited by the PEO8. This means you have a path to obtaining a P.Eng certification after graduation. For most SE grads, this is not really relevant. Most grads are not interested in pursuing this, but it is an option that is not available to CS students.
For some reason, SE students have three lounges, two of which are in the CompSci building (DC). There are no CS lounges.
Academic Exchange
It is true that the rigid SE course requirements makes it more difficult to arrange an exchange semester abroad. That being said, the program admin are extremely accommodating in this regard, making it as easy as possible to pursue exchange while still graduating on time. My cohort had an irregularly large number of students go on exchange, and I don’t know a single person that regretted the experience (myself included).
Research
Another benefit is that SE students are eligible for Undergraduate Research Assistantships (URAs) with professors in both the faculty of engineering and computer science. CS students are not eligible to do URAs with engineering faculty. That being said, the rigid SE curriculum makes it more difficult to explore research interests. It might also be more difficult to achieve high grades, which is a consideration for grad school applications. Although some grade information is reported for the SE cohort, I haven’t been able to find data for CS to verify whether it is higher. My cohort’s averages were already quite high (80s to 90s). If you got into either program, you are already capable of doing well regardless.
According to one year’s worth of class profile data, CS students are more likely to want a Masters or PhD after graduating. 8 students reported planning to pursue further education on the CS 20249 class profile, while 2 students reported the same for SE 2025 (I was one of the two). The CS class is about 3 times larger than the SE class.
Prestige
It’s basically the same. This shouldn’t be a big consideration. Employers largely will not distinguish between them. Hell, even people applying to both programs don’t fully understand the differences going in. That’s why I’m writing this.
What Should I Pick?
I’ve tried my best to comprehensively layout the differences between each program. Some important questions to ask yourself are as follows:
- How much do you value the cohort system?
- How much do you not want to take the mandatory SE courses?
- Do you see yourself pursuing grad school or industry?10
In the past, transferring from SE to CS was an easy process. Frequently, students would go into SE with the intention of transferring to CS if they decide it isn’t their cup of tea. This is no longer to case. Transferring to either program is now very competitive and high grades are required. Unfortunately, this puts more pressure on high school students making their decision. If it helps, I don’t know anyone that graduated from either program that regretted their choice.
-
https://www.reddit.com/r/uwaterloo/comments/2jkijj/comment/clcl2mm/ ↩︎
-
https://havinleung.com/2020/04/29/software-engineering-vs-computer-science-at-uwaterloo/ ↩︎
-
This one is for my year: https://sexxv.github.io/classprofile/ ↩︎
-
The implication being that information will be skewed based on which groups are more likely to self-report their outcomes. It’s not even guaranteed that all respondants are being truthful. Take these stats with a big grain of salt. ↩︎
-
Kevin ↩︎
-
This is probably the reason why there are so many random non-SWE courses in the curriculum. ↩︎
-
I could not find a CS 2025 class profile. ↩︎
-
It should be noted that many people considering grad school end up changing their mind during undergrad. If it’s only a passing interest to you then I don’t think this should be a big factor. ↩︎