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, but it has not been offered in recent terms, so plan accordingly. The DB chain is underrated; understanding databases is practically mandatory for any full-stack or backend role, and the courses at UofA are solid.
If you want more practical database experience, CMPUT 404 can be useful for ORM-based work, and CMPUT 401 may let you choose database technology as part of the project. Those courses won't replace the theory you get from 391, but they do give you more hands-on industry experience.
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/134/154 (Calculus I): Take one of these in your first semester depending on your stream. They are all common first-year calculus options and are expected background for several CS courses. Not optional.
MATH 115/136/156 (Calculus II): Usually taken in second semester of first year. These are the follow-up calculus options for the different streams and introduce more advanced calculus concepts. More directly relevant to ML and numerical methods than the first course.
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 early, ideally in first year or the first semester of second year, because many upper-year courses list it as a prerequisite.
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. Many upper-year classes use statistics as a prerequisite or assume you already know it, so aim to finish both by second year. Do not wait until third year.
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 counts as overload and requires approval from the faculty to grant it. It 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. That said, once you are ready for them, you should take these as soon as possible because most internships and companies expect this knowledge in practice, not just theory.
Save these for third and fourth year if you need the extra time, but do not delay them longer than necessary:
- CMPUT 301 (Software Engineering): Group project-heavy. More valuable when you've done some real programming, but still worth taking as soon as you can because it helps you learn how real team projects work.
- CMPUT 401 (Introduction to the Business of Software): Entrepreneurship and product thinking. Makes more sense once you understand the technical landscape, and it is useful for seeing how software work connects to industry.
- CMPUT 404 (Web Applications and Architecture): Useful course, but you'll get more from it once you've built things on your own. It is especially valuable for learning practical tools and frameworks.
- CMPUT 403 (Practical Algorithmics): Competitive programming and problem-solving. Best taken once 204 and 304 are done and you've got some programming maturity.
Many students reach these courses having only done theory-heavy first- and second-year classes and still do not know how to use common tools like Git, Linux, frameworks, or Python virtual environments. If that sounds like you, these courses and the projects they force you to do become even more important. If you are already building projects outside school, you may be better prepared earlier; if not, take these courses as soon as you can handle the prerequisites.
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.