I wrote this in an email to a Waterloo Software Engineering student, but it’s worthwhile to put on the Internet more broadly.
Let’s take a step back and talk about graduate school vs undergrad. For a PhD essentially all of the action is in your thesis and very little is your courses. Of course you’re not signing up for a PhD at the moment but instead a Master’s, so it’s not quite the same.
There are two types of master’s programs: course-based master’s and research master’s. More people should do a research master’s: it’s a different perspective on knowledge than you get in an undergrad, and you produce a bit of new knowledge. I’d generally recommend against course-based master’s for people with Waterloo undergrad degrees; you’ve taken a bunch of courses and the incremental gain of taking more courses isn’t as big as that of doing something new, i.e. research.
For a research master’s it’s about 50/50 between courses and your research. [This particular student was wondering about an HCI master’s:] So HCI is going to account for at least 50% of your master’s even if it is a general CS master’s. (Also usually you are funded for a research master’s and not for a coursework master’s). There are some research master’s in the US, but most are coursework. It’s much more normalized in Canada to do a research master’s.
I’m always happy to discuss pros and cons of graduate school and I’ll try to be relatively unbiased.