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 enrolling 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.

Advice for First Year Students

  • First year ECE: stay in ECE for 1B
    • 1B ECE is almost exactly the same as 1B SE: ECE106, ECE124, ECE140, MATH119
    • 1B ECE has ECE108 --- SE takes a similar course, MATH135, in 1A
  • First year Tron: stay in Tron for 1B
    • 1B Tron has a good software course MTE140
    • What first year Tron is missing, from a software perspective, is a math course like ECE108 or MATH135.
  • First year CS: add the Digital Hardware Specialization (formerly called "option")
    • Helps you get access to circuits courses in engineering (but doesn't gurantee access)
    • Also consider PHYS121 and PHYS122 and CHEM120, if you are interested in that material.

Advice for Third Year Students

  • Add one of the SE, CE, or Computing Options described above.
  • Consider a masters degree in ECE or CS. 
    • You could complete your current degree and get a masters in the same amount of time as it would take to switch programs from third year.
    • There are two kinds of masters degrees: research and professional. 
      • Research: You write a thesis, take a few courses, and get paid a small stipend (enough to cover your tuition and a bit more).
      • Professional: You take 8-10 courses (depending on the program). You pay your own tuition.
      • Both ECE and CS offer both kinds of masters degrees. 

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. These courses provide an important foundation for any future study in software/computing.
    • 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.
    • CS246 Object-Oriented Programming: good to have for ECE or Tron students who are interested to apply to SE. This will give you more programming depth without conflicting with your core courses.
    • Programming: whatever programming courses are reasonably available to you in the program you are in.
    • These courses also count towards at least one of 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 Advisor
2A SE Fall End of May SE Advisor
2B SE Spring End of January SE Advisor

SE Cohort Capacity/Availability Status

SE Cohort Capacity/Availability Status
Cohort (by year of graduation) Capacity/Availability Term Now Date Updated
SE2027 Apply to Engineering Admissions for 1A in Sept 2022 pre 1A Feb 25, 2022
SE2026 Over full -- no available space 1A Feb 25, 2022
SE2025 Over full -- no available space 2A Feb 25, 2022
SE2024 Over full -- no available space post 2B Feb 25, 2022