So you've decided you're interested in the study of computers and computing. But what major to pick? Depending on your faculty (see our other section for more details) you have 3 primary choices: Computer Science (CS), Software Engineering (SE), and Computer Engineering (CE).


B.A/B.Sc/Ba.Sc: CS, SE
B.Eng: SE, CE

Of these 3, CS and SE are the most closely related. Both cater to the study of computing theory and its applications. The primary difference between the two revolves around their larger focus. Whereas CS offers a general introduction into the theory behind the field, SE provides a curriculum more catered towards its practical applications. Both start with the same set of foundational courses like COMP202, 250, etc. meaning if you're early in your studies it's easy to switch back and forth. However with upper level courses SE requires more software development related courses like COMP361 (year long software engineering project). CS in contrast requires more theorical coursework like Calculus 3. CS offers greater flexibility (less specifically required courses) in upper-level course selection but some may prefer the structure offered by SE with things like its "Application Specialties" track. Ultimately, when it comes to employment prospects there doesn't appear to be a discernible difference in outcome between the two.

CE is an almost entirely different field however. CE is oriented towards computer hardware principles. Offered only by the Faculty of Engineering, the CE major leads to an engineering certification and thus follows a much more structured core curriculum. Whereas CS and SE (besides the B.Eng variant) range anywhere from 36-63 required credits, CE requires ~133 credits. Your studies are highly structured with a mix of core engineering and major courses, leaving little room for electives. Many of your courses are hardware related like digital logic and microprocessors as opposed to CS/SE's software theory oriented algorithm design and distributed systems.

tl;dr: Mostly interested in creating software applications? Choose CS or SE. CS offers greater flexibility in course choice but SE provides more applied software developnment experience. CS's more theory centric nature also may make it the preferred choice if you plan on grad school. More interested in hardware development? Choose CE.