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. CS offers a general introduction into the theory behind the field, whereas SE provides a curriculum to its students that are more catered towards practical applications. Both start with the same set of foundational courses like COMP 202, 250, 251 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 theoretical coursework like COMP 330, COMP 360. 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 the outcome of these 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 development 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.
