Skip to content

Curriculum Map

What the degree teaches, and what it doesn't. Course descriptions come from the course catalogue; languages and tools come from public course sites for the term named. Instructors change things, so check your section's outline.

Remember that the plain Major only requires 174/175 (or 274/275), 204, 272, and two of 201/229/291; everything else on this page is an elective unless you're in an option. See the Program Overview for each path.


Courses, Topics, and Tools

Course Main topics Languages and tools
174 / 175 Problem solving, control flow, recursion, testing; then objects, ADTs, searching and sorting Python (dept comparison)
274 / 275 Accelerated 174/175 plus graph algorithms, DP; studio format Python on Linux (274); C++ (275); Arduino (dept comparison)
201 Professional programming practice, ADTs, Unix tooling C99, gcc, gdb, valgrind, Makefiles, shell scripts (Fall 2025 site)
204 / 304 Algorithm design and analysis; 304 adds NP-completeness and heuristics Mostly pen and paper
229 Number representation, ISA, assembly, pipelining, memory hierarchy RISC-V assembly in RARS (Fall 2026 labs)
267 Math of ML: estimation, generalization, regression, classification Python in Google Colab (Fall 2025 site)
272 Sets, logic, induction, program correctness Proofs
291 ER and relational models, SQL, storage and access methods SQL; Python for the project (catalogue)
301 OO design, UML, design patterns, revision control, unit testing, refactoring Java/Android team project (Fall 2026 outline)
303 / 403 Contest-style problem solving, weekly problem sets Kattis; lectures in C++, submit in any Kattis language (instructor info page)
313 Error/flow control, MAC protocols, routing, congestion control, internet architecture Not listed publicly
325 Functional and logic programming, lambda calculus Lisp, Prolog (dept page)
333 Cryptography, authentication protocols, network vulnerabilities Not listed publicly
350 2D game engines, memory management, ECS C++, STL (catalogue)
365 Bandits, MDPs, RL, planning, function approximation Uses the UofA RL MOOC (catalogue)
379 Processes, synchronization, deadlock, virtual memory, scheduling, file systems Not listed publicly
393 Scaling data science and ML across machines; big project New: first listed offering is Winter 2027
401 Software process and product management; group project Varies by project
402 Unit to integration testing, reviews, continuous integration, quality tools Version control and CI services (dept page)
404 Web architecture, protocols, web services, serialization Django (or Flask), HTML/CSS/JS, Postgres on Heroku (project spec)
415 Lexing, parsing, type checking, flow analysis, code generation, optimization C++, ANTLR, MLIR/LLVM, CMake (course templates)
466 / 467 466: one-course ML survey. 467: neural nets, generative models, non-iid data Not listed publicly
481 Thread and data-parallel programming, clusters, performance Not in the 2026-27 schedule; last offered Winter 2026

Not recently offered (catalogue term history): 391 Database Management Systems (last Winter 2022), 382 GPU Programming (last Fall 2024), 411 Computer Graphics (last Winter 2025). Don't plan around them.


By Topic

Topic Where it's taught Required?
Git and version control 301 (revision control), 402 Only in the Software Practice Option
Testing Introduced in 174; unit tests in 301; 402 goes deep 402 only in the Software Practice Option
CI/CD 402 Only in the Software Practice Option
Web backends 404 (Django/Flask, REST-style node-to-node API) No
Frontend frameworks (React etc.) Nowhere; 404's spec says it won't cover them No
Databases 291 (SQL); 393 (scaling) 291: required in Honors and the Software Practice Option; one of the 201/229/291 picks in the Major
Systems and OS 201, 229, 379, 429 201 and 229 required in Honors; 379 only in the Software Practice Option
Networking 313 No
Security 331 (crypto), 333 (networked systems) No
Distributed systems 481 (parallel computing, not consensus); 404's project is a distributed social network; 393 No
ML and AI 261, 267, 365, 366, 466/467, 469, plus 328, 461 Only in the AI Options
Mobile 301 (Android) Only in the Software Practice Option
Cloud, containers, infrastructure Nowhere (404 deploys to Heroku, but it isn't taught as a topic) No
System design at scale Nowhere No

Filling the Gaps

One resource per gap. Pick the one that matches what you want to do.

Gap Resource
System design and data systems Designing Data-Intensive Applications by Martin Kleppmann
Distributed systems theory (consensus, replication) MIT 6.5840 Distributed Systems (free lectures and Go labs)
Frontend and full-stack JavaScript Full Stack Open (React, Node, TypeScript)
Containers Docker's getting-started guide
CI/CD without taking 402 GitHub Actions docs
Running systems in production Google's Site Reliability Engineering (free online)
Web application security OWASP Top 10

Course-by-course reading lists are on Learning Resources. Setup and tooling are on Tools and Setup.


AI Coding Agents

AI coding agents are now standard in industry, and course policies vary: 301's Fall 2026 outline allows them but requires you to cite and disclose their use (outline). See Learning and Working With AI for UofA's rules, what each course allows, and why it matters for in-person assessments.

Last verified: October 2026.