28 Dec 2014
Software Engineering vs. Computer Science at the University of Waterloo
I spent a loooooot of time researching this when I was in high school. I imagine a lot of people similarly do. This is a big decision that needs to be made. If you want to end up doing work involving programming you are probably going to be picking one of these two. I ended up choosing computer science, but I will attempt to be unbiased when writing this post.
You will need a higher average to get into Software Engineering, and you will also have to take the “engineering” classes in high school, chem and physics, which may be a struggle for some people. As far as I know the average to get in (with a decent AIF) this year was in the mid 90’s. For computer science, you only need calculus, functions, and English. The average for computer science is something like high 80’s, low 90’s (edit 2016: I heard it was 94 this year, be warned). There are a lot less people that get accepted into software engineering in comparison to computer science. Computer science is a lot easier to get into.
Once you get in, the courseload for SE will be at a completely different level. In my computer science schedule, I had a total of 13 hours of class every week. That’s including tutorials, which aren’t required. I know many engineers who’s schedule was pushing 40 hours. With class running from 8 to 5. The time you are spending on school (both classes and homework), is going to be enormously more.
As for the actual courses, in SE you are going to be taking 6 classes. One of them isn’t a real class, I don’t think you can fail it, but you will be spending time on it. You will be taking algebra and calculus, the same as CS, but at an easier level (less proofs). You will take a similar programming course as CS. But here is what I had problems with: you are required to take ECE courses. Specifically in first year, one that is about physics and another that is about circuits. These are not easy classes. On the other hand, in computer science you take your programming, algebra and calculus, and then you get two electives. These can be as easy or as hard as you choose. I personally chose a couple courses that interested me, and helped fill my required electives; astronomy, and western history pre 17th century.
The programming related courses you take will be pretty similar by the end, there isn’t really a difference in terms of practical vs theoretical. By that I mean both programs have you take the same courses that will be relevant to your future job (an example is algorithms).
Overall you will be taking a very rigid course schedule with SE. You will have to take a lot of engineering courses, which won’t really be very related to your degree. There is a total of 11 “electives”. I say it like that because you don’t have much choice in them. You have strict requirements on what each one must be, so they won’t feel like electives.
In computer science you can take 18 electives. EIGHTEEN! These are all truly electives, not “pick one of these computer science classes”. There are some requirements, such as a couple sciences, a couple social sciences, a couple humanities. But other than that you are free to take whatever you desire. This can give you the option of getting a minor in anything you want, or taking more computer science classes.
There is no debate here. SE is harder on all levels, both time wise and difficulty. It’s your decision on whether or not it’s worth it.
You will be getting the same jobs. People will say that SE has more “prestige” but employers don’t particularly care. In some ways, I think computer science has the advantage, because you have more free time to spend on side projects, leading to better jobs, and a better career. But in software engineering there is the cohort system, which might help you out in terms of making connections. You could end up doing a bit more hardware related stuff in SE, but if that is your goal you should look at CE or ECE. Most schools don’t have both a SE and computer science program, so employers are going to see it as the same thing.
If you get accepted to just regular computer science, don’t think you can transfer into coop. I would consider other schools at that point, because what makes Waterloo great is the coop program.
software engineering has the cohort system, which means you have same classes with the same people for your 5 years. I think this is really great, and is one of the best reasons for picking software engineering. You get connections, and friends, which are both really great. You also end up being an engineer, which is pretty cool.
Unless you are really into getting an engineering degree, or really, really love the whole cohort thing, take Computer Science. You will have a better time in university, and you will end up doing the same work anyway.