19 Dec 2014

How Difficult is Waterloo's CS Program?

Introduction

There is a lot of controversy regarding how difficult Waterloo's Computer Science program is. A strong majority of students in said program are advocates that it is very difficult.
Most students who attend Waterloo hear about CS students complaining about the length of assignments, difficulty of exams and amount of material introduced per course.

I have been fortunate enough to take several CS courses throughout my degree. This fact, in conjunction with having close friends who have taken most of the remaining courses I have not, and being a tutor for CS 115,116,135,136 - I feel I have a very informed opinion on the difficulty of the CS program.

I claim that there are 3 levels of difficulty the program offers and the difficulty of any CS degree is dependent on the courses the student takes.

Before going any further, I want to mention 3 things.
  1. These 3 levels are arbitrary titles I gave to describe the difficulties. 
  2. A student will rarely fall into one category or another, rather be somewhere in between two categories.
  3. I have only included CS courses that a CS major must/may take. 

Measuring Difficulty

I will be measuring difficulty with "hours spent on course and grade attained"
I feel this is a good measure as it is IQ independent and course-knowledge independent.
Below is a list of CS courses I have taken or have knowledge about, and their difficulties as measured by the given standard.

Rating System:

  • 0:    0-2 hours/week spent and 70+ grade attained
    • CS 445
    • CS 446
    • CS 447
    • CS 490
    • CS 492
  • 1:    2-8 hours/week spent and 70+ grade attained
           0-2 hours/week spent and 55-70 attained
    • <SIGNIFICANT CHUNK OF CS COURSES>
  • 2:    8+ hours/week spent and 70+ grade attained
           2-8 hours/week spent and 55-70 attained
    • CS 241
    • CS 343
    • CS 371
    • CS 454
  • 3:    8+ hours/week spent and 55-70 grade attained
    • CS 145
    • CS 146
    • CS 350
    • CS 444
    • CS 452
    • CS 488

The Three Levels

Almost as easy as High School

I took CS 445 in Fall 2014. I went to approximately 3/30 lectures and worked on the course ( assignments, studying, and everything inclusive ) for approximately 15 hours throughout the 4 months. 8 of which was spent the day prior to the exam learning the entire course.

A student can complete their CS requirements taking only courses in category 0 for their upper year electives, and the easier courses in category 1 for the breadth requirements of CS courses.

The only difficult course students in this category are required to take is CS 350, which happened to be done in groups (untill recently), so people could easily get carried for the entire course.
This effectively leaves only one course in 2B - CS 241 specifically where a student has to put in a serious time commitment to reap a passing grade.
The rest of the degree can consist of terms studying ~5 hours/week and maintaining good grades.

Quite Challenging

In Fall 2013 I took CS 341, 343, 348, 349, 370. I worked on CS 343 assignments roughly 10 hours/week and the remaining assignments ~5 hours/week. Therefore I was effectively studying 30 hours/week outside of class time, and ended the term with a 76 average.

Category 2 and the harder courses of category 1 require a fair degree of work. A degree consisting of these courses implies the student was putting in significant effort into learning the material taught and doing the assignments. Unless you are exceptionally talented, you simply cannot pass or do well if you do not put in a minimum investment in these courses.

Hardest Years of my Life

I took CS 350 in Spring 2013. Our group of 3 spent over 100 combined hours on one assignment and still couldn't finish it in time and got a 60% on it.

There are some courses that are simply designed to be extremely challenging and only invite the students who are highly interested and skilled in their discipline. It is pretty common knowledge among CS majors that it is close to impossible to take any two of the 'big 3' fourth year CS courses the same term.
So if a student was to spread the 'big 3' over 3B/4A/4B, they would studying ~20 hours/week for just the one course.
Now assuming these same skilled programmers take all the courses in category 2 along with the hard ones of category 1, they would essentially be studying ~40 hours/week  for the majority of their degree.

Where Do Most Students Fit In?

Thankfully since the significant chunk of CS courses are in category 1, most students end up taking those courses. However with this breakdown, it is easy to see that if a student really wants to - and plenty do, they can breeze through their CS degree like it was high school over again.

So how difficult is a CS degree?
It completely depends on the courses!