Direct Entry vs General Entry

  • Direct Entry: highschool students apply to specialized engineering programs directly. Waterloo does this. This system has advantages, but can make switching between programs challenging.
  • General Entry: highschool students apply to engineering, and then choose a specialized program after first year. Some other universities do this. This system usually makes it easier to switch between specialized programs. 

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:

Consider what aspects of software you are interested in, and which other programs might also be good fits for your interests. Check out the slides at this link:

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.

Ways to Add Software to Your Current Engineering Degree

There are three options, revised for the 2021-22 calendar, to add software-related content to your current engineering degree:

Speak to your academic advisor about enroling in one of these options.

A good strategy to prepare to transfer into SE is to enrol in one of these options and then take courses necessary to join an SE cohort in 2A or 2B when some space has typically opened up.

Ways to Add Software Engineering to your Bachelor of Computer Science Degree

The School of Computer Science offers a number of specializations that are similar to aspects of the BSE degree:

Requirements for Applying to SE

  • Capacity in the cohort you are applying to join. This is beyond your control. Historically:
    • 1B is usually over full
    • 2A is usually full
    • 2B often has a few spaces. If you are in ECE or Mechatronics or CS, with a bit of planning you can join 2B when space is available.
  • Explanation of why SE seems like the right fit for you, in comparison to other programs (see above comparisons).
  • Resume describing some experience with software development, ideally also showing some experience with version control.
  • Grades: Typically 87% cumulative average and 90% average in software-related courses.
  • Courses:
    • MATH135 / ECE108 Discrete Math: must have if applying to 2A or 2B. Recommended to take on co-op prior to applying, if necessary.
    • ECE124 / MTE262 / SYDE192 / BME393 Digital Circuits: good to have before 2A SE.
    • SE212 / ECE208 / CS245 Logic: good to have before 2B SE.
    • CS241 / ECE351 Compilers: good to have before 2B SE.
    • Programming: whatever programming courses are reasonably available to you in the program you are in.
    • These courses also count towards the SE / CE / Computing Options in Engineering, or the BCS Degree or the Digital Hardware Specialization in SCS.
    • Everything else in first year Software Engineering is also very important, but you can pick up the missing pieces a later. See the Software Engineering Class Homepages for all the courses in the SE curriculum for the cohort you are applying to join (or see the Undergraduate Calendar for the year that cohort started 1A).

Timeline for Applying to SE

Joining Term Time to Apply Where to Apply
1A SE Fall February Engineering Admissions
1B SE Winter First week of January SE Director
2A SE Fall End of May SE Director
2B SE Spring End of January SE Director