Skip to content

Degree Planning for BSc CS

Finishing your CS degree efficiently — without sacrificing your GPA, your sanity, or the courses that actually matter — requires planning from the start. This guide is targeted at the Specialization, since that's what most industry-bound students should be doing. Adapt as needed if you're in General or Honors.

The single biggest mistake first-year students make is not understanding prerequisite chains early enough. Miss the right course in first semester and you're pushing senior courses into a fifth year. This guide exists to stop that from happening to you.


How to Use BearTracks Effectively

BearTracks is UofA's student portal for registration, grades, and degree auditing. Learn it early.

The Audit Tool is one of the most useful features most students ignore. It shows exactly which requirements you've completed, which are in progress, and which you still need. Run it every semester before registration opens. Don't wait for your advisor to tell you what you need — you should already know.

Add/Drop Deadlines — There are two that matter. The early withdrawal deadline (usually around week 2) lets you drop a course with no record of it. The late withdrawal deadline (usually around week 6-8) lets you drop with a "W" on your transcript — visible, but not counted against your GPA. After that deadline, you're stuck with whatever grade you get. Mark both dates in your calendar the moment each semester starts.

Waitlists — Popular courses fill fast. Get on waitlists for courses you need as early as possible during your registration window. Check BearTracks regularly when classes start — students drop, and spots open up in the first two weeks. If you're stuck on a waitlist for a course you genuinely need, email the instructor. It sometimes works.

Registration Windows — Your window opens based on your credit count. This creates a real advantage for students who are further along. In your first year, you register last and courses fill up. This is normal. It also means your first-year course selection is somewhat constrained by availability, so know your backup options.


Prerequisite Chains: The Critical Paths

Get these wrong and you will lose semesters. Memorize them.

The Core CS Chain: 174 → 175 → 201 → 204

This is the foundational sequence. CMPUT 174 and 175 are intro programming (Python). 201 is the transition to C/C++ and data structures. 204 is algorithms — one of the most important courses in the degree.

Start this chain in your very first semester. 204 is a prerequisite or recommended prerequisite for almost every interesting upper-year course. Students who delay 174/175 because they "already know programming" and skip ahead without credit end up pushing 204 to third year, which compresses their upper-year options badly.

If you have programming experience, you can try to get transfer credit or place out of 174/175, but verify this with the department before assuming it.

Logic: 174/175 → 272

CMPUT 272 (Formal Systems and Logic) is a prerequisite for multiple upper-year theory courses. It's taken in second year typically. Don't sleep on this one — it's a different style of thinking from intro programming and students who aren't prepared struggle with it.

Systems: 229 → 379

CMPUT 229 (Computer Organization) introduces assembly, memory, and how computers actually work at a low level. 379 (Operating Systems) builds directly on it. If you care about systems programming, embedded work, or just understanding computers deeply, this chain matters. Take 229 as early as you can once prerequisites are met.

Databases: 291 → 391

CMPUT 291 (Introduction to File and Database Management) should be taken in second or third year. 391 (Advanced Database Systems) follows. The DB chain is underrated — understanding databases is practically mandatory for any full-stack or backend role, and the courses at UofA are solid.

Tangible Computing: 274 → 275 (Optional Stream)

Instead of 174/175, you can enter through 274/275, which is the Tangible Computing stream using Raspberry Pi, hardware, and physical computing projects. This stream is harder, more hands-on, and more fun. It leads to the same upper-year courses as 174/175. If you're interested in hardware, IoT, or just want a more tactile intro to CS, consider this path. Be warned: it's more demanding in terms of time and setup, especially in first semester when you're also adjusting to university.


Math and Stats Requirements

Don't neglect these. They come back in upper-year CS more than students expect.

MATH 114 (Calculus I) — Take this in your first semester. It's a prereq for 115 and is expected background for several CS courses. Not optional.

MATH 115 (Calculus II) — Second semester of first year. Introduces series, multivariable concepts. More directly relevant to ML and numerical methods than 114.

MATH 125 (Linear Algebra) — This is the most practically useful math course for CS students who want to do anything in machine learning, computer graphics, or scientific computing. Eigenvalues, matrix operations, vector spaces — all of this appears directly in ML coursework. Take it in first or second year.

STAT 151 (Introduction to Applied Statistics I) and STAT 252 (Introduction to Applied Statistics II) — Take these earlier than you think you need to. Statistics shows up in software development, A/B testing, ML, data science, and systems work. Students who defer stats until fourth year regret it. Third year at the latest.


Summer Courses: Getting Ahead

Summer is underutilized by most students. It's one of the best ways to accelerate your degree or lighten your fall/winter load.

UofA runs two summer sessions. Not every course is offered in summer, but some key ones are. Check the summer timetable each year — offerings change. Courses that tend to run in summer: some 200-level CS courses, math requirements, and certain science electives.

Taking one or two courses in summer can let you shave a semester off your degree timeline, or give you breathing room to take on an internship during a regular semester without overloading. If you're aiming for a 3-year completion, summer courses are basically mandatory.

Summer courses are faster-paced — a full semester of content in 6 weeks. They require focus, but if you're not also working full-time, they're very manageable.


Course Load: How Many Is Too Many?

Five courses per semester is the standard full-time load. This is the pace that a standard 4-year plan assumes. Most students handle 5 courses without too much trouble once they're past first year.

Six courses is doable but requires real discipline. The key is not stacking six hard courses together. If you're taking 6, make sure at least one or two are lighter (a breadth elective, a lab course, something you find genuinely easy). Shariq completed the degree in 3 years by running 6 courses in multiple semesters and using summers — it works, but you have to be strategic and willing to put in the hours.

Do not take six of the hardest CS courses simultaneously. Taking 204, 272, 229, and 301 all in the same semester with no breathing room is a recipe for a rough GPA and a miserable few months. Spread the challenging courses out.

Four courses sometimes makes sense: if you're doing a heavy internship alongside school, if you've had a rough semester and need to recover your GPA, or if you're doing significant research. Don't treat 4-course semesters as failure — treat them as tactical decisions.


Senior Courses to Save for Later

Some courses have soft prerequisites that aren't captured in BearTracks — they assume a level of CS maturity that you genuinely won't have in first or second year, even if you technically meet the listed prerequisites.

Save these for third and fourth year:

  • CMPUT 301 (Software Engineering) — Group project-heavy. More valuable when you've done some real programming. The soft skills required (working in a team on a real system) are things you develop over time.
  • CMPUT 401 (Introduction to the Business of Software) — Entrepreneurship and product thinking. Makes more sense once you understand the technical landscape.
  • CMPUT 404 (Web Applications and Architecture) — Useful course, but you'll get more from it once you've built things on your own.
  • CMPUT 403 (Practical Algorithmics) — Competitive programming and problem-solving. Best taken once 204 and 304 are done and you've got some programming maturity.

Suggested Semester-by-Semester Plan

Standard 4-Year Plan (BSc CS Specialization)

Term Courses
Year 1 Fall CMPUT 174, MATH 114, + 3 breadth/electives
Year 1 Winter CMPUT 175, MATH 115, MATH 125, + 2 breadth/electives
Year 2 Fall CMPUT 201, CMPUT 229, STAT 151, + 2 electives
Year 2 Winter CMPUT 204, CMPUT 272, STAT 252, + 2 electives
Year 3 Fall CMPUT 291, CMPUT 301, + 3 upper-year CS electives
Year 3 Winter CMPUT 379, CMPUT 391, + 3 upper-year CS electives
Year 4 Fall CMPUT 403, + 4 upper-year CS electives/free electives
Year 4 Winter CMPUT 401 or 404, + 4 upper-year CS/free electives

This is approximate — your actual registration depends on what's offered, what your interests are, and how your prerequisites play out. Use this as a skeleton, not a rigid schedule.

Accelerated 3-Year Plan

The 3-year path requires running 6 courses in at least some semesters and using at least one full summer session. Here's a rough shape of what that looks like:

Term Notes
Year 1 Fall CMPUT 174, MATH 114, 4 breadth courses (6 total)
Year 1 Winter CMPUT 175, MATH 115, MATH 125, STAT 151, + 2 more (6 total)
Year 1 Summer CMPUT 201 + 1-2 light electives
Year 2 Fall CMPUT 204, CMPUT 229, CMPUT 272, STAT 252, + 2 more
Year 2 Winter CMPUT 291, CMPUT 301, + 4 upper-year courses
Year 2 Summer 1-2 more courses or internship
Year 3 Fall CMPUT 379, CMPUT 391, CMPUT 403, + 2-3 more
Year 3 Winter Final electives, CMPUT 401/404, wrap remaining requirements

This requires sustained effort and good time management. It's achievable — Shariq did it with distinction — but go in with eyes open. The benefit isn't just finishing faster; it's getting to industry sooner, compressing your tuition costs, and having a year of industry experience while your peers are still in school.


A Note on Advising

The CS department has academic advisors. Use them — especially for edge cases like transfer credits, course substitutions, or unusual paths. But don't wait for an advisor to tell you the plan. Come into every advising appointment knowing your degree audit cold, knowing which courses you need, and with specific questions. Advisors are most useful for resolving ambiguity, not for designing your entire plan from scratch.

The students who succeed at degree planning are the ones who take ownership of it from day one.