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:

  1. The program you want to transfer into is full. Software Engineering is a small program, with only one cohort per year.
  2. You don't have the right pre-requisite courses. Because Software Engineering is taught half by Computer Science and half by Electrical and Computer Engineering, there are very few students who have the right mix of background courses to join a Software Engineering cohort. 
  3. 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, 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.
  4. 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. For consideration, you need a cumulative average of at least 87% or above, and an average in computing courses of at least 90% or above.
  5. You aren't actually interested in software engineering. You should study things that you're 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's 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 only offered in the fall). 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. 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. 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 pick up the missing pieces a later. Without the above four courses you cannot enter 2A Software Engineering.

Software Engineering Class Homepages list all the courses in the SE curriculum.

Would you rather be in CS or ECE?

SE is taught half by CS and half by ECE. You should consider if one of those programs would be a better match for you. Assuming you have finished first year, here are some of the differences going forward:

Courses that are Mandatory in SE but Optional in CS

SE, like all Engineering programs, has a very long list of required courses. CS is more flexible program that gives you more individual choice to pursue your interests. Sometimes students transfer in to SE, and then a year or two later transfer to CS. We want to avoid that. If you transfer in to SE, we want you to graduate from SE. If you really want to transfer to CS, then just go there directly. Here are some courses that are mandatory in SE but optional in CS. If you want to transfer in to SE, then you should want to do these courses. If you just want a degree with more computer science content, but not this specific content, then you should transfer to CS instead.

  • CS348 Databases
  • CS349 Human-Computer Interaction
  • SE380 Feedback Control Systems
  • SE463 Software Requirements
  • SE464 Software Design and Architecture
  • SE465 Software Testing
  • SE390 Capstone Design Project (FYDP)
  • SE490 Capstone Design Project (FYDP)
  • SE491 Capstone Design Project (FYDP)

Contact the CS Advisors if you are interested in transferring to CS. Note: if you have AP or IB credits from highschool, CS might grant you advanced standing for up to three of them. Engineering does not grant advanced standing for AP or IB credits.

Differences between ECE and SE

ECE has a high degree of overlap with SE, but swaps out some software courses for hardware/circuits courses. Here are some courses that Computer Engineering students usually take that are optional for SE students:

  • ECE240 Electronic Circuits 1 (SE students are only required to go as far as ECE140)
  • ECE224 Embedded Microprocessor Systems
  • ECE327 Digital Hardware Systems
  • ECE320 Computer Architecture

ECE students also take operating systems, compilers, databases, networks, and other software-related topics.  Four courses in SE that are optional for ECE are:

  • CS349 Human-Computer Interaction
  • SE463 Software Requirements
  • SE464 Software Design and Architecture
  • SE465 Software Testing

Comparing these two lists with your own interests can help you assess whether ECE or SE is a better program for you.

Contact ECE Advisors if you are interested in transferring to Computer Engineering.