Demystifying UWaterloo’s Advanced Math Courses
One student’s guide to the theoretical offerings from UWaterloo’s Math department
Please note that this piece is geared towards first-year and second-year Math students, but it may be relevant to your interests anyways if you are a student of any year curious about these types of courses offered by the Math department.

Picture this: you’re an incoming first-year Math student to UWaterloo.* It’s the summer before your first semester starts, and you’re about to go through the process of enrolling in your courses. Sounds simple enough, right?
Then the first two steps in the enrollment process start telling you about the option to choose between the standard computer science/math courses or the “advanced” versions for your first semester, and then you sit there going, “Wait, what?” because since when were “advanced courses” a thing? No one told you this! And you thought there was already enough trouble just picking which electives, if any, you had to shove into your schedule as well, and getting into your desired co-op stream, and the whole “I’m going to university” anxiety/excitement, and…
Well, you get the picture.
But after searching around Google for maybe 5 minutes, you find that there’s not a lot of information about the courses and what they’re like — especially from a student’s perspective. You’re like, kind of interested now, but how are you supposed to know whether you want to go through with this?
That was me, once upon a time. Now here we are, eons later, with a full breakdown from a student who actually went and gone through all of the advanced/regular stuff.
So let’s get started, shall we?
*By the way, if you actually are an incoming Math student, congrats!
“So, what are the advanced courses?”
For all Math students, the faculty offers “advanced” versions of many math and computer science (CS) courses within first and second year. The requirements to enroll into the advanced sections are listed on the University of Waterloo website, but to summarize, incoming first-year students can choose to be automatically enrolled for their first term if:
- they achieved a score of 75 or higher on the Euclid math contest (applicable for all advanced courses), or
- they got into Group 2 or better for the senior bracket of the Canadian Computing Competition (CCC) (applicable only for CS 145)
If either of these don’t apply to you (and believe me, it didn’t apply to me either), you can also enter the advanced courses manually. This is usually done through attending the class once school starts, talking to the professor, and receiving a course override from them. Most profs are happy to include more students in the class, but if the class already looks full by the end of your first week, you might want to act fast before the prof does a cutoff of who can or can’t join.
“What’s different about these advanced courses?”
Quite a bit actually, and far more than the average person expects. The term “advanced” is a bit misleading, in my opinion. From the anecdotes of other students, the advanced math courses can more accurately be seen as preparation for studying any Pure Math course in third year onwards. While the advanced CS courses don’t lead into a similar branch of study, those courses are still more theoretical compared to their regular counterparts. They also often go deeper on material that the regular courses don’t cover as much, or even touch upon; however, that same material might be covered in future CS courses.
Anyways, there’s definitely a substantial discrepancy between advanced and regular courses and how they are handled. So here’s a quick comparison of the two:
ADVANCED COURSES
- deliberately designed to be more challenging, with heavy focus on theory and abstract material, and assumes you are comfortable working at that higher conceptual level
- moves at an accelerated pace while going deep into concepts (i.e. goes deep into the whys with the assumption that you can pick up quickly on how to apply them)
- requires time and effort dedicated towards understanding the material and completing assignments
- curriculum tends to be professor-dependent
- small class sizes, with usually one section with up to 100 people; reminiscent of the Engineering faculty’s “cohort” system
- possibly easier to get good marks in
REGULAR COURSES
- deliberately designed to level the playing field among students, with heavy focus towards the application of concepts (i.e. less abstraction)
- moves either more slowly or more quickly (depending on how the professor teaches), with less depth in the whys
- in comparison, don’t require as much time and effort spent on understanding the material and completing assignments (i.e. concepts range from “easy to grasp and apply” to “manageable with time and effort”)
- curriculum not as professor-dependent, and generally follows the outline made by the faculty and/or textbook
- large class sizes with many sections
- possibly harder to get good marks in, e.g. professors generally want to curve to around a 65–70 class average
Also, the CS courses generally see different implementations of the way assignments are handled. For example, the advanced section may use a different language entirely for your code, or secret tests may be a thing in the regular sections but not for the advanced, etc.
“Why exactly should I care?”
It’s perfectly fine not to care about the choice (although I’m quite confused on how you read all of this up to now, or even landed on this guide). But if you’re interested in the challenge and unsure about which to choose, there can be a lot of doubt involved, especially when the transition to university is already uncertain enough.
First, the faculty gives you the ability to switch back to the regular sections if taking the advanced courses isn’t working out. Furthermore, all your marks in the advanced courses are wiped clean when you drop down, so you have a clean slate to begin with for the regular versions. This ability lasts until week 10 of the term (week 6/7 for CS 145 only), so you have some time to try out the advanced courses. Keep in mind, however, that you will be starting in the middle of the course if you drop down to the regular sections, and thus will need to play catch-up on the material you’ve missed.
Second, the professors for the advanced courses are normally happy to help you understand the material. I cannot stress this enough: take advantage of their office hours. Believe it or not, they want to help you understand. (Also, take advantage of your friends’ knowledge in those classes. University Life Pro Tip: you learn just as much from your peers as you do your professors.)
Third, and most importantly, no one cares if you drop from the advanced courses to the regular courses. Don’t feel ashamed for considering the option and following through. Many friends of mine have dropped an advanced course in the middle of the semester, or simply take one to two advanced courses along with other regular courses. Personally, I only took advanced calculus with the regular CS and algebra courses in my first term, and I briefly took both advanced calculus and algebra in my second before deciding to withdraw from both halfway into the term.
Also, in case you’re worried about looking “smart”: it doesn’t mean you’re not smart if you can’t handle the advanced courses. There’s a lot of reasons why it just doesn’t work out for you. For example, it might cover material you find more unappealing that you thought it’d be, or require a certain amount of dedication that’s incompatible with how you operate, or taking these courses requires time that you just can’t give right now. And that’s fine. Considering how stressful university can be, don’t make your life needlessly miserable by suffering through a course you don’t enjoy to prove you’re a specific definition of “smart”. Only continue with the course if you’re interested in what it has to offer.
Overall, if you’re up to the challenge of advanced material, go for it! On that note, here’s my personal experience with attempting advanced courses.
I took AP Calculus AB throughout high school, so I grew incredibly bored in the regular calculus course within the first week, and given that a few of my roommates during first-year were in the advanced section, I decided to give MATH 147 a try. As it stands, I became a huge fan of MATH 147 after that first lecture, as I had never been more interested in math and the material we were covering until now. I also made a lot of good friends through the advanced math courses over the term, all of whom are extremely smart, talented, and overall great people.
(It probably helped too that the absolutely awesome and award-winning (!) professor David McKinnon was teaching the course, and made calculus so enjoyable for me. Seriously, he’s really awesome. At one point, a friend of mine made the best fan page for him — that’s how great he is.)
In my second term, I took both MATH 148 and MATH 146. Laurent Marcoux and Alan Thompson are both witty, amazing professors, and moved extremely quickly through the material offered by their respective courses. Ultimately, I withdrew due to personal reasons, but I also realized I wasn’t enjoying myself as much with that material, especially when I needed more time to myself.
But I don’t regret taking the advanced courses, because overall it was an educational (and fun) experience. So, in my opinion, here’s my advice: when you’re debating between taking the advanced courses or not, just try to sit in one class. Let yourself experiment. Don’t let yourself miss out on an amazing opportunity because it seemed too hard.

