I graduated from the University of Waterloo in 2021 with a Bachelor of Computer Science. These are some courses I found worthwhile. Note that I took them between 2016-2021, so check the UWFlow links for anything that may have changed.

Coursework

CS444 - Compiler Construction

Implemented a substantial subset of Java in C++ with a recursive descent parser.

CS488 - Introduction to Computer Graphics

Assignments use OpenGL, culminating in a ray tracer (A4). The final project (A5) is an open-ended extension to your ray tracer and is what most students look forward to.

CS488 - Introduction to Computer Graphics

CS454 - Distributed Systems

A solid introduction to distributed systems topics. The assignment is a single project broken into parts: implementing a basic distributed file system in C.

CS343 - Concurrent and Parallel Programming

A course about concurrency strategies (mutexes, semaphores, etc). In my term we used a version of C++ with added concurrency features, made by the teaching staff. I'd highly recommend this course for utility for industry applications, or if you liked the traffic problem from operating systems (CS350).

CS349 - User Interfaces

Covers UI/UX design principles with a heavier assignment load than expected. The first few are substantial Java GUI projects (Paint, a puppet manipulator, a text editor), with the last couple being Android projects.

Other

Some other CS courses worth knowing about if you're planning your schedule.

  • CS370 - Numerical Computation
  • CS456 - Computer Networks
  • CS458 - Security
  • CS486 - Intro to Artificial Intelligence