Favourite courses at Waterloo
Now that I've completed my 4A term at Waterloo, I thought I'd compile a list of my favourite and least-favourite courses.
banger courses
in chronological order
COMMST 223
F22 with Jeff Stacey
- impromptu speeches throughout the course along with 3 big prepared speeches
- each class starts with a student-led activity
- Jeff Stacey really makes the classroom feel like you're in high school again, in the sense that he makes sure everyone knows each other (and the class size is only 30)
- super fun class, and also happens to be useful :)
MATH136: Linear Algebra 1
W23 with Blake Madill
- I did not enjoy linear algebra before this, and I did not enjoy linear algebra after this. In fact, I don't even know if I enjoyed the linear algebra in this course. But I very much enjoyed Blake's teaching
- Blake's style of guiding the class through topics reminded me of 3B1B: he set up motivating examples for you to try and arrive at the solution, and the whole class felt like a journey where you as the student are discovering new concepts that you would have discovered yourself naturally given enough time
MATH239: Intro to Combinatorics
S24 with Martin Pei
- the course is split into two halves: enumeration (snore), and graph theory (the reason it's on this list)
- the graph theory section was extremely rewarding. proof questions required genuine creativity and out-of-the-box thinking, rather than "apply what you learned in class". the solutions were usually very elegant and looking back felt obvious. banging your head against a problem for hours then finally having an aha moment in the shower randomly was very rewarding. then comparing with friends to find out they did something completely different was pretty cool too
MUSIC 140: Popular Music and Culture
S24 with Simon Wood
- music history, but also american history through the lens of music
- it's like tuning into a live podcast every week
- I discovered more than half my music taste through this course
- favourite part was the counterculture movement
- between this and MUSIC 246, take this one
- fun fact I love sharing that I learned from this course: before all the Billboard charts, there used to only be 3: Race (renamed to R&B), Hillbilly (renamed to Western), and Pop. the way a song was categorized into one of these 3 was by the locations of the record stores selling most records: a predominantly white rural population meant the song was classified as Hillbilly, predominantly black => Race, and urban white population => Pop. these categories always correctly identified what we associate with R&B and Western music, even though the style of the music wasn't even considered. this is also why R&B/Western hits often get crosslisted onto Pop charts, but you almost never see it the other way around
CS241E: Foundations of Sequential Programs (Enriched)
F23 with Ondrej Lhotak
- throughout the course, we developed a compiler for LACS -- a subset of scala -- into MIPS
- scala was cool, writing a compiler was cool
- pretty similar to CS241, except that course makes you write a compiler for a subset of C++. most language features are the same, except for closures/support for functions as first class citizens
- 90% of your time is spent debugging, so be prepared (I took this before LLMs became smarter than me, this is probably not the case anymore)
CS341: Algorithms
W25 with Mark Petrick
- probably highly rated on uwflow because it's applicable to interviews, but it's cool apart from that too
- I personally really enjoyed this class because at times I'd feel like I'm in a flow state with mark petrick, answering questions and having a back and forth
- the content itself was solid, and it was delivered well
- tutorials had some pretty challenging problems that were fun to solve, it was also fun to attend the tutorials with only 1 or 2 other students
- favourite part was definitely reductions, some of the tutorials presented insanely creative reductions that were fun to see
CS442: Principles of Programming Languages
W26 with Brad Lushman
- I took this course because I wanted to learn haskell. I did not expect to enjoy lambda calculus, type theory, and formal semantics as much as I did
- the only course for which I actually read the course notes end to end
CS454: Distributed Systems
W26 with Samer Al-Kiswany
- super useful for systems design interviews
- at times some of the content was a bit dry, but since Samer is the GOAT it would still be engaging
- Samer learned everyone's names (literally everyone's, even if you have never been to class) to "connect better with his colleagues", which is why hes the goat
- he also sat across from Leslie Lamport while interning at microsoft
- the big project was to design and implement a distributed filesystem with caching, atomic transfers, and mutual exclusion on files
- problems on the final were similar to system design, which was cool
overrated courses
CS348: Intro to Database Management
W25 with David Toman
- I'm sure the content was fine, but David Toman is genuinely an awful lecturer
- why did we have to spend half the course on relational calculus and relational algebrea
- I was looking forward to the SQL parts, which should tell you enough
CS451: Data-Intensive Distributed Computing
W26 with Dan Holtby
- I had this one bookmarked in first year and was looking forward to it since -- I even took CS348 solely to be able to take this. so my expectations were high, and I felt very disappointed
- the course felt too implementation-heavy, and most of the interesting stuff was covered by CS454 anyway
- the content has potential to be more interesting, could have been taught better