Software Engineering vs Computer Science at uWaterloo

How do the Software Engineering and Computer Science programs at the University of Waterloo compare from your own experience?

I received this question a few weeks ago when I made a post about answering any/all questions about the University of Waterloo due to them cancelling their open house.

My answer:

I’m not the first person to answer this question, and there are some good answers floating online. Check this and this. However, you asked for my perspective as a student and aspiring software engineer so I’ll answer anyways.

From my own perspective, there is not much of a difference. I sometimes refer to the SE program as “CS but with extra steps”. What I mean by that is that SE and CS share almost identical core CS courses. However in order for SE to be an accredited engineering program, SE students have to take a bunch of engineering focused courses. This can be good or bad depending on your preferences. An example of an engineering focused course that I didn’t like was MATH 213 (Signals, Systems, Differential Equations). I feel like there was no point – I got a 95 in MATH 213 but yet I still can’t tell you what it’ll be useful for in my career or what I learned. You also have to take a bunch of courses like physics and chemistry – which again may not be useful to you. 

Software engineers are also part of ECE, so this means that they have to take hardware and circuit courses. I also didn’t like this part of the program, so that made me switch into CS where I could take purely CS courses. However, if you’re the type of person who’s into circuits and low level hardware stuff, SE is a better choice than CS. CS students cannot be enrolled in ECE courses by default (however, advisors can override you into a course and there’s a digital hardware option), while SE students are considered both CS and ECE students, so they can take them as they wish.

Oh and an important note – I personally think it’s much easier to make friends in SE than in CS. This is because SE is a cohort program. Essentially the people you meet in first year are the people you’ll see every day for the next 5 years. Everybody is on the same co-op schedule, and has the same mandatory courses. Whereas in CS, you may never see your 1st year friends again since the co-op schedules differ and are more flexible. There’s also more flexibility in course selection, so you’re not always in the same room as the people you met in first year.

So to reiterate, here’s a list of pros/cons if you were to choose SE over CS:

pros:

  • cohort system which makes it easy to make friends and maintain friendships
  • accredited engineering program if you want to become a PEO (in the field of software it’s pretty useless)
  • more selection of hardware and engineering courses

cons:

  • less term/co-op flexibility. If you fail a term, you have to drop a year down. If you get a co-op offer for the a wrong term, you basically can’t accept it
  • less course selection freedom
  • much more mandatory non-CS courses which you may not enjoy

Follow up:

How does the quality of the co-op compare? Would you say any particular program generally gets better co-op opportunities with big tech companies (maybe faster as well)?

In terms of co-op there’s not much of a difference between CS and SE in my opinion. You may see more SE kids getting good jobs, but that’s just because it’s a smaller and (at the time I first got into Waterloo) more competitive program.

Because of the cohort system you might also hear more about it and be motivated to get better jobs? But from an employers perspective they don’t have a preference for program IMO – or if there is a preference, it’s tiny compared to things like work experience and side projects.