Waterloo uses what we call direct entry: from highschool, students apply to the program that they want to study, and they are accepted by that specific program. Some other universities have a general entry, where students are accepted to the university or faculty as a whole, and then choose their specialized program of study later. While direct entry has many benefits, sometimes students discover that the program they were admitted to is perhaps not the ideal fit for them, and then they might want to explore an internal transfer to another program.
Programs with Software Content
While Software Engineering is the only program at Waterloo with software in the name, it is far from the only program with software in the content. There are many programs with significant software content, including:
- Computer Science
- Computer Engineering
- Electrical Engineering
- Management Engineering (especially around user interfaces)
- Mechatronics Engineering (especially around embedded systems and robots)
- Systems Design Engineering (especially around user interfaces)
Consider what aspects of software you are interested in, and which other programs might also be good fits for your interests.
Getting to Yes
Internal transfers are challenging at Waterloo. Here are the first five "no" answers:
- The program you want to transfer into is full. Software Engineering in particular is a small program, with only one cohort per year.
- You don't have the right pre-requisite courses. Because Software Engineering is taught half by Computer Science and half by ECE, there are very few students who have the right mix of background courses to join a Software Engineering cohort. See below.
- Transferring will end up delaying your graduation by a year. Because of the requisite courses and the cohort system, an internal transfer can often delay your graduation by a year. Or require you to do three academic terms in a row. Or require you to skip a co-op term. Sometimes when students see the real logistics of what's required for an internal transfer, they decide to stay in their original program.
- Your grades aren't high enough. Because the program is small and mostly full, the number of students requesting internal transfers is usually larger than the available spaces, so then we need to rank the applicants.
- You aren't actually interested in software engineering. Sometimes students are pushed to do things that they don't really want to do. You should study things that you are actually interested in. There are good jobs in all areas of Engineering and Mathematics. If your passion is Pure Math, then stay in that program. If your passion is Electrical Engineering, then stay in that program. Don't try to transfer to Software Engineering because your uncle thinks it's a good idea (yes, that is a true story).
If, somehow, your internal transfer application doesn't get snagged on any of the above, then you might have the opportunity to transfer into Software Engineering.
Requisite Courses to Join SE 2A
Every internal transfer application is a bit different, but a common theme is meeting the requisites to join a 2A Software Engineering cohort (which is always in the fall, FYI). Here are the four essential requisites to join 2A SE:
- MATH 135 Algebra for Honours Mathematics (an introduction to mathematical proofs). This course is the foundation for almost all further study in the Faculty of Mathematics. Software Engineering is taught half by the Faculty of Mathematics (mostly the Cheriton School of Computer Science within the Faculty of Mathematics). There is no real alternative for this course, but in some exceptional cases we might consider a very high grade in ECE 108 as acceptable.
- ECE 124 Digital Circuits and Systems. The foundation for almost all further study in Computer Engineering. Software Engineering is taught half by the Department of Electrical & Computer Engineering. There are some alternatives to this course in other engineering programs, but they are typically taught in second or third year rather than first year (e.g., SYDE 192, CS 251, MTE 262, BME 393, etc).
- CS 137 and CS 138 foundations of programming in C and C++. While these courses are the best foundation for the Software Engineering program, we will consider high grades in alternative programming courses (e.g., CS 135, ECE 150, GENE 121, etc).
Everything else in first year Software Engineering is also very important, but you can potentially pick up the pieces you are missing a bit later. (Ok, this is true because every first year student in every program studies first year algebra and calculus, which are also essential.) Without the above four courses you cannot enter 2A Software Engineering.
Software Engineering Class Homepages list all the courses in the SE curriculum.