Dec 6, 2015 Note: This post contains stats that are relevant to the time I first published this post, which was in late-2013, with some updates in early 2014. Please take my opinion with a grain of salt.
Also, please note I am just a alumni and am not at all associated with uWaterloo admissions. I CANNOT answer specific admission questions. Please email email@example.com for those questions. Thank you!
This will (hopefully) answer common questions about the Computer Science (CS) and Software Engineering (SE) programs at Waterloo.
For those that got directed from elsewhere, I'm in the Software Engineering class of 2015 (I applied back in 2010), and I'm decided to make this post because this topic comes up quite a bit on StudentAwards, Compsci.ca, and other random forums that I frequently read.
SE vs CS:
When I was in grade 12, I never even thought about SoftEng because I wasn't sure if I really enjoyed the Eng aspect. Back then, I thought the eng aspect meant chem and physics (In reality it meant just physics :p). But anyways, I did really well in Gr 12 Chemistry and started disliking Gr 12 Accounting, making me side away from applying to business programs. I hadn't taken Gr 12 Physics yet, but I still did pretty well in it during Gr 11.
So I applied, did my Admission Information Form (AIF) which had a lot more questions than the CS AIF, got my acceptance after March Break... Then in May, I had to decide between the two. My dad helped me out by looking at the Course Sequencing, telling me that there would be hardware involved. Now I had never took a single Computer Engineering course at the time. Although I -was- a little familiar with soldering for SciCamp wayyyy back. I thought it'd be fine. So I chose SE. Other factors that went into this:
-I was a keener in HS (still am), and so I wanted something challenging than the avg program. Note that my school never had AP and I switched out of my IB school halfway through grade 9 because the people were a little too snobby for me.
Fast track to the now: I don't regret choosing SE over CS, although I HAVE contemplated on switching over a few times (those times being when the workload was just plain killer, or doing terribly on a midterm).
Cut to the chase:
SE is a unique program not found at most schools (not even in the US), and it was introduced to Waterloo about 10 years ago. So it's still fairly new. Things to consider include:
What if I want to take a minor or specialty?
If you are confident that you want to do software development, if you want to work in tech rather than in a different industry, if you have a slight interest in hardware, go for SE. Of course the reasons that I just listed for SE are applicable for CS students too - but what I'm saying is that CS students are able to do a specialty in business or health, or minor in something else. You can do specialties in SE too, but it's a lot more difficult to plan courses and you would likely have to stay for extra school terms to finish up that specialty or take extra courses during your co-op terms. It’s also not very common. For the 2014 graduating class, 6 out of 90 students took a minor.
Do SE and CS students take the same courses?
In the long run, CS students DO take pretty much the same courses as SE students in the end, it's just that SE students get a guideline, and are (most of the time) pre-enrolled into everything. So we never have to worry about enrollment.
In a more detailed view, CS and SE have the same number of math courses, although SE students have 1 less stats course, and 1 more calculus course.
What programming languages are used?
In first year, CS students learn Scheme in 1A, and they start C in 1B. For SE, C is introduced in 1A, and C++ in 1B. Beyond first year, most courses allow you to choose between C++, Java, and Scheme to complete your assignments. CS 246 (taken in 2B for SE and 2A or 2B for CS) teaches C++. Things change as the years go up, but you will (sadly) never be using anything like Python or Ruby. (Python is actually taught to Physics students.)
C# is used to teach Electrical Engineering and Computer Engineering students in their 1A term, and Java in 1B. C++/C#/Java are common languages used in industry, and are great to know before coming to university.
Scheme is a different approach to problem solving, but most co-op jobs don’t ask for Scheme specifically - so I haven’t had the urge to learn it. Scheme was used a bit in some of my CS245/SE212 tutorials to explain the Halting problem, but other than that most of my course throughout 2nd-4th year have been done in C++ or Java.
Is SE 'better' than CS?
I have gone through a lot of my first year with this ideology, it's hard to get rid of when you're with your classmates all of the time. No program is better than the other, I've listed a bunch of benefits already for each program, and it really depends on an individual's needs and goals.
I will however state why I like SE and always end up changing my mind for switching to CS:
You stick with your class for 5 years. You will have the exact same schedule as everyone in your class - it's like middle school again, except you can really take advantage of this as everyone has the same assignments, due dates, exam times, etc. Having one uniform class lets easier prof-student interaction / planning / improvements, more student-to-student interaction and assistance, and class reps are always a fun thing to have.
SE vs ECE (Electrical & Computer Engineering):
It’s a little more difficult to get into SE than ECE since ECE admits about 300 total spots split across 2 streams, while SE goes for about 125. Prospective students who can’t gets into SE can expect to get into CE or CS, instead. There is a significant amount of lab work in the ECE course curriculum, meaning their workload is even heavier than SE. SE and ECE share a lot of the same classes in first and second year. If you aren’t into hardware, choose SE. A handful of CE students I know enjoyed their software development courses more, and wish they chose SE when they first applied.
I was one of the 17 girls that entered SE (out of ~135 students). We actually broke the record for the girl ratio in all of SE for our year, although our underclassmen year ratios are getting much better. The ratio is now 102:11 males:females as of my 4A term.
How I feel about the ratio: It's honestly not that bad. You WILL be stuck with a bunch of guys for most of your day, but it's not difficult to meet girls outside of your class. I have a bunch of girl friends that I met through my suite mates. As you go through your co-op terms, you will realize that guys dominate in the tech world, and getting used to it comes with time.
Overall, Waterloo has a 60:40 guy:girl ratio I believe. Many girls reside in Environment, Arts, Science, and AHS. It just seems like there are a lot of guys if you're in Eng or Math.
Is programming experience required for CS/SE/ECE?
Not for CS and ECE. For ECE, they go at a slower pace than SE. CS students get a choice between 3 1st year CS courses that correspond to their CS skills. 115 is for students with no programming exp, 135 is for students with some programming exp (and most students take this), and 145 is for students who did well on a math contest, so they got a recommendation to take the advanced class.
As for SE, programming experience is required as admissions for the program are getting more competitive. If you take a CS course, that implies programming experience. Otherwise, note down your experience either through course projects or side projects in your AIF so admissions can gauge your CS experience.
Are you enjoying your program so far?
Yup. Labs can be frustrating and doing not-so-great on midterms can be discouraging, but co-op makes up for it, and the classmates I have are awesome, too.
Is the co-op job rate really 96%?
(I made that number up but from what I remember, it was advertised in the high 90s). Anyways - it's great. CS and SE (separately) gets the highest number of job postings compared to any other program, due to the high growing numbers of start-ups, and of course, our school is so well known for our co-op program. It is always tough for first years to get their first job, especially if you really want a dev job. The hard part is getting the interview. If you're a good coder and you're not socially awkward, then getting the job shouldn't be that hard (unless of course, you are expecting Google, MSoft, Apple, etc.)
Please don't expect a Google job as your first co-op. It can happen, but that's only if you're very bright, and have had software development experience in the past (open source projects for example).
How was your experience with co-op & the Jobmine matching system?
Once you get your first job done, getting the 2nd, 3rd, 4th, are not that hard. In first year, I had a total of 2 face to face interviews (no phone), but I was lucky enough to get the job I wanted. I didn't have to go through continuous round.
In 2nd year (last term), I really wanted a developer job (I had a quality assurance job in 1st co-op term), so I upgraded my resume, applied to 50 jobs like I did in first year.. got a ton of interviews (this made midterms killer), and ended up having a hard time doing rankings. Still got the job I wanted though :)
Jobmine is actually a very employer-biased system, despite our school's claims that it is kept equal for both sides. I would much rather prefer applying off of Jobmine, as no one is forcing me to take a job (hasn't happened to me, but has happened to a few of my friends and classmates). I actually highly recommend applying outside of Jobmine, and if you have connections - definitely take advantage of them.
Will SE students get different jobs than CS students through Jobmine?
No. The only difference would be that there may be postings in SE for more hardware related jobs, and CS may have more business and health-related jobs, but the amount (as seen through Jobmine) is about the same. Being in either program and in co-op is already advantageous as it is, especially in the time we are in now. Employers may look at your courses and see that you're taking more heavy courses if you're in SE, they should take that into consideration if you have something like a low average (that is, if they even care about your marks).
What kind of co-op jobs have you or your classmates had, and what companies?
This is pretty personal but I’ve been asked this multiple times in comment follow ups and emails. Many of my classmates and I start off with small to mid sized companies in Waterloo or Toronto. I believe I mention this in my other post, but there are probably a couple hundred to 1 thousand software related jobs posted for Toronto each term. You will start being interviewed by US companies in your 2nd or 3rd co-op term if you are ambitious enough. This is only a stereotype, but CS students that I have met usually aren’t as ambitious as the people in my class. Ambitious means applying to a ton of jobs (the limit is 50 on hand).
I’m in my 4th year now and I’d say that at least 70% of my class has worked at a large, well known company. This includes Google, Apple, Microsoft, Nvidia, Facebook, you name it. You get 6 internships in total. That’s a LOT of experience. I just finished my 5th and I’m getting a little tired of having to go back to school as I just start getting settled in a new company and city.
In terms of jobs specifically - most are software development. It can be tough to work on something like project or program management after you’ve done so many software jobs. This is the only problem if you want to try something new. More specifically, it can be tough being hired for a different type of job (mobile versus backend) if you’ve already have experience in one field. A few of the bigger companies hire generalists (Facebook, Microsoft) so you have a higher chance to learn new things. Always stay in contact with your recruiter and take advantage of this.