Courses¶
Every undergraduate CMPUT course offered since Fall 2024 has a page here. Course facts (title, prerequisites, when it's offered) are synced from the official catalogue; everything under "What Students Say" comes from students who took it.
Took a course? Add a review. It takes five minutes and you don't need git. Courses without reviews are the ones that need you most.
About instructors. This wiki doesn't rank professors. Course pages may describe how specific sections have been run (notes, assessments, pacing) so you can pick a style that suits you. Instructors change every term: check the catalogue for who's teaching before you register.
For how courses fit together, see the prerequisite maps in Degree Planning. For which languages and tools each course uses, see the Curriculum Map.
Difficulty and workload reflect student consensus, on these scales:
- Difficulty: Easy / Medium / Hard / Brutal
- Workload: Light / Moderate / Heavy / Overwhelming
All Courses¶
100-level¶
| Course | Title | Difficulty | Workload | Offered | Reviews |
|---|---|---|---|---|---|
| CMPUT 101 | Introduction to Computing | Easy | Light | F26, W27 | Yes |
| CMPUT 174 | Introduction to the Foundations of Computation I | Easy-Medium | Moderate | F26, W27 | Yes |
| CMPUT 175 | Introduction to the Foundations of Computation II | Medium | Moderate-Heavy | F26, W27 | Yes |
| CMPUT 191 | Introduction to Data Science | F26 | |||
| CMPUT 195 | Introduction to Principles and Techniques of Data Science | W27 |
200-level¶
| Course | Title | Difficulty | Workload | Offered | Reviews |
|---|---|---|---|---|---|
| CMPUT 200 | Responsible Data Science and Artificial Intelligence | F26, W27 | |||
| CMPUT 201 | Practical Programming Methodology | Hard-Brutal | Heavy | F26, W27 | Yes |
| CMPUT 204 | Algorithms I | Medium-Hard | Moderate-Heavy | F26, W27 | Yes |
| CMPUT 206 | Introduction to Digital Image Processing | W27 | |||
| CMPUT 229 | Computer Organization and Architecture I | Brutal | Overwhelming | F26, W27 | Yes |
| CMPUT 250 | Computers and Games | F26, W27 | |||
| CMPUT 256 | Game Artificial Intelligence | W27 | |||
| CMPUT 261 | Introduction to Artificial Intelligence | F26, W27 | |||
| CMPUT 267 | Machine Learning I | Hard | Heavy | F26, W27 | Yes |
| CMPUT 272 | Formal Systems and Logic in Computing Science | Medium | Moderate | F26, W27 | Yes |
| CMPUT 274 | Accelerated Introduction to the Foundations of Computation I | Hard | Heavy-Overwhelming | F26 | Yes |
| CMPUT 275 | Accelerated Introduction to the Foundations of Computation II | Hard | Heavy-Overwhelming | W27 | Yes |
| CMPUT 291 | Introduction to File and Database Management | Medium | Moderate | F26, W27 | Yes |
300-level¶
| Course | Title | Difficulty | Workload | Offered | Reviews |
|---|---|---|---|---|---|
| CMPUT 300 | Computers and Society | F26 | |||
| CMPUT 301 | Introduction to Software Engineering | Medium | Heavy (team-dependent) | F26, W27 | Yes |
| CMPUT 302 | Introduction to Human Computer Interaction | W27 | |||
| CMPUT 303 | Algorithmics in Practice | F26 | |||
| CMPUT 304 | Algorithms II | F26 | |||
| CMPUT 307 | 3D Modeling and Animation | W27 | |||
| CMPUT 312 | Introduction to Robotics and Mechatronics | F26 | |||
| CMPUT 313 | Computer Networks | Medium | Moderate | W27 | Yes |
| CMPUT 325 | Non-Procedural Programming Languages | Medium | Moderate | W27 | Yes |
| CMPUT 328 | Visual Recognition | F26 | |||
| CMPUT 331 | Computational Cryptography | F26 | |||
| CMPUT 333 | Security in a Networked World | W27 | |||
| CMPUT 340 | Introduction to Numerical Methods | F26 | |||
| CMPUT 350 | Advanced Games Programming | F26 | |||
| CMPUT 355 | Games, Puzzles, Algorithms | W27 | |||
| CMPUT 361 | Introduction to Information Retrieval | W27 | |||
| CMPUT 365 | Introduction to Reinforcement Learning | F26, W27 | |||
| CMPUT 366 | Search and Planning in Artificial Intelligence | F26, W27 | |||
| CMPUT 379 | Operating System Concepts | Medium | Light-Heavy (instructor-dependent) | F26, W27 | Yes |
| CMPUT 382 | Introduction to GPU Programming | Medium | Moderate | Not recently offered | Yes |
| CMPUT 393 | Scalable Data-Intensive Analytics | W27 | |||
| CMPUT 399 | Topics in Computing Science | F26, W27 |
400-level¶
| Course | Title | Difficulty | Workload | Offered | Reviews |
|---|---|---|---|---|---|
| CMPUT 401 | Software Process and Product Management | Medium | Moderate | F26, W27 | Yes |
| CMPUT 402 | Software Quality | F26, W27 | |||
| CMPUT 403 | Algorithmics in Competitive Programming | Hard | Heavy | F26 | Yes |
| CMPUT 404 | Web Applications and Architecture | Medium | Heavy | F26, W27 | Yes |
| CMPUT 411 | Introduction to Computer Graphics | Last: W25 | |||
| CMPUT 412 | Experimental Mobile Robotics | W27 | |||
| CMPUT 414 | Introduction to Multimedia Technology | W27 | |||
| CMPUT 415 | Compiler Design | Brutal | Overwhelming | F26 | Yes |
| CMPUT 416 | Foundations of Program Analysis | W27 | |||
| CMPUT 428 | Computer Vision | W27 | |||
| CMPUT 429 | Computer Systems and Architecture | W27 | |||
| CMPUT 455 | Search, Knowledge and Simulation | F26 | |||
| CMPUT 461 | Introduction to Natural Language Processing | F26 | |||
| CMPUT 463 | Probabilistic Graphical Models | W27 | |||
| CMPUT 466 | Machine Learning Essentials | Hard-Brutal (instructor-dependent) | Heavy | F26 | Yes |
| CMPUT 467 | Machine Learning II | W27 | |||
| CMPUT 469 | Artificial Intelligence Capstone | W27 | |||
| CMPUT 474 | Formal Languages, Automata, and Computability | W27 | |||
| CMPUT 481 | Parallel and Distributed Systems | Last: W26 | |||
| CMPUT 495 | Honors Seminar | F26, W27 | |||
| CMPUT 499 | Topics in Computing Science | F26, W27 |
Scheduling Advice From Students¶
- 201 and 204 pair well in second year: different kinds of difficulty (201 is mechanical and time-consuming, 204 is abstract).
- Don't stack 229 with other heavy courses. Students consistently rate it the hardest course in the program. 229 + 301 + 350 in one term is described as survivable but brutal.
- 415's project is close to a full-time commitment. Don't take it alongside other project-heavy courses.
- 301 and 404 depend heavily on your team. Form or screen your team early.