CMPUT 403: Algorithmics in Competitive Programming¶
At a glance
- Units: 3
- Prerequisites: CMPUT 201 or 275, and 204, and any 300-level Computing Science course.
- Credit exclusions: Credit cannot be obtained for both CMPUT 303 and CMPUT 403.
- Offered: Now: Fall 2026
- Difficulty: Hard
- Workload: Heavy
- Languages and tools: C++ (lectures), any Open Kattis language
This course is focused on algorithmic problems that can be solved within at most several hours by well-prepared people, where a solution involves properly understanding a written description, designing an efficient algorithm to solve the problem, and then correctly implementing the solution. Students will use algorithms, data structures, and mathematical reasoning to solve problems. Lectures are shared with CMPUT 303. CMPUT 403 covers additional material relevant to advanced programming contests.
Official catalogue entry · Course website · facts synced 2026-10-01
What It Covers¶
Weekly problem sets (usually 3-4 problems, each open for two weeks) on a Kattis judge, all or nothing per problem: you get full marks only if your solution passes every hidden test case. Topics run a week at a time: dynamic programming, graph algorithms, geometry, string algorithms, combinatorics, data structures, network flow, bipartite matching, and number theory. Lecture code is in C++; you can submit in any language Open Kattis supports, though Python and Java can be too slow on tight problems. 403 shares lectures with CMPUT 303 but adds harder problems, advanced topics like max flow and FFT, and an extra project. In Friggstad's offerings there's no traditional midterm or final. (instructor's 303/403 info page)
What Students Say¶
Imported from the original course reviews page, which mixed student contributions with summarized Reddit discussion. Tips aren't term-stamped yet; if you've taken this course recently, add your experience.
Reddit reviews are consistently positive, and students often call it the best interview prep at UofA. The format is uncomfortable at first and then deeply satisfying for students who stick with it.
Instructor notes: - Zachary Friggstad: active on Discord and generous with partial solutions that get the right idea. Students rave about his offering.
Student tips: - Pick between 303 and 403 honestly: the instructor recommends 403 only if you already have a competitive programming background, and 303 otherwise. The extra hard problem each week takes much more time than it looks. - Do problems on Kattis regularly throughout the semester; don't try to cram. - With no final exam, the workload is steady across the term rather than piling up during finals.