A guide on transferring from CE to CS at UWaterloo
What is this?
At the time of writing this, I recently transferred to CS at UWaterloo and I noticed that aside from a couple old Reddit posts, I haven't really seen much info out there about the entire transfer process. So, I thought I would detail my experience in transferring out from CE!
Who this guide is for
As the title implies, this is a guide on how to transfer from Computer Engineering to Computer Science at the University of Waterloo. Thus, this guide will probably not be relevant to you if you are not trying to transfer and not in ECE. However, you still might find this useful you're in Engineering. In considering whether this guide is for you, think about whether it seems worth it to study-grind for almost the first half of your undergrad just to avoid touching hardware.
What you'll need
The requirements to transfer into CS are listed here. However, these are the minimum requirements to qualify for a transfer. You'll need grades a lot higher than the ones listed on the site for a chance of transferring, as the process is very competitive. For reference, the advisor I talked to in first year said that the practical cutoff for transferring was grades in the low-mid 90s. One thing to note is that Math/CS equivalent courses are more important in the consideration process, so for ECE students, ECE 150 and ECE 250 would be the most important courses as they turn into CS 135/136. Regardless, you should aim for high grades to maximize your chances. For reference, my cummulative average across my 1A, 1B, and 2A terms was 94.88%.
General Advice
In terms of general advice I would give, there are a couple major points:
- Understand when you don't understand - It's important to realize when you don't get something. If you don't understand something taught in class, make sure you figure it out sooner or later! If you're in first year, there's a nice thing called WEEF TA office hours that you can always go to - I was a frequent visitor throughout 1A and 1B. Otherwise, since you know yourself the best, do whatever helps you learn effectively.
- Make friends - One of the main features of Engineering is the cohort system and how you're in the same class with people for multiple terms. Take advantage of this while you're still in the faculty to make friends! Even though I'm in CS now, the majority of my friends are still from ECE.
- Know when to take a break - Constantly grinding away in Engineering gets pretty tedious, and you should relax sometimes to avoid burning out.
- Don't skip lectures - While some people can probably learn an entire course from a textbook, I would generally recommend attending classes if the prof is actually teaching. For tutorials, I would go if you find them helpful - for example, I skipped all my ECE 140 tutorials where there wasn't an assesment during the tutorial.
Term-Specific Advice
This section will go over my experience with the courses for each term in Computer Engineering I went through before transferring, as well as advice for each term. You'll notice that a lot of the advice for each course will just boil down to doing practice problems and seeking help where necessary.1A 1B 2A
The start of your undergrad career! This term has ECE 150 which is somewhat important, but I've read online that ECE 250 matters more. Whether or not this is actually true I don't know, but regardless you should still try to do well. This term was also mostly online for me, so your experience may vary.
- ECE 150 - Intro to programming in C++. Covers basic C++ syntax up to pointers and some OOP. Our assesments for this course were in the form of projects, which were pretty easy. I didn't do super well on the exams for this one, but to be honest they were pretty fair.
- ECE 105 - Basically just physics (kinematics, dynamics, etc). I hated this course - concepts weren't explained super well and assesments were pretty difficult. To do well here, I think the best thing to do is just grind practice problems to understand the content.
- MATH 117 - Calc 1 for Eng. If you took IB Math or something similar in high school, this course should be pretty straightforward. As you would expect, just do homework whenever you need extra practice with something.
- MATH 115 - Linear Algebra. While this course felt harder than MATH 117, I had a bit of experience with Linear Algebra from high school so it wasn't the hardest thing in the world. Just do your homework and practice problems and you should be fine.
- ECE 190 - Engineering Profession and Practice. Pretty free, just participate in class activities and do your group work (assuming your assesments are in that form). No exams, which is pretty nice!
- ECE 198 - Project Studio. You basically create an embedded project over the course of the term with a STM32 board. I did not like this course very much, as they expect you to cook up an embedded C project without teaching you any of it beforehand. While I got hard carried by my partner here, I think it is doable to figure out everything necessary for this course.
- ARTS 190 - Something something communication. I don't remember much from this course, but in our offering we had to go to this IEEE event thing and take notes on it to make a paper at the end. I guess just participate in class and put a decent amount of effort into assignments?
This term is quite a step up from 1A, as you have 6 courses that each have exams. If you're in stream 4, you also won't have a reading week for a break. As such, it's extra important this term that you stay on top of things. While neither of the key course to do well on (ECE 150, ECE 250) are in this term (at least for now), you should still try to do well.
- ECE 106 - Electricity and Magnetism. This is still physics, but unlike ECE 105, I felt that the instructors put a lot more time into making sure you understood the content. For our cohort, they actually set up a discord server where you could set up tickets for instructors to personally answer questions. As well, our prof had office hours which were basically big Q&A sessions which I found super helpful - be sure to go to these. While this course is also very diffuclt (arguably more so than ECE 105), it's definitely possible to do well with lots of practice.
- ECE 124 - Digital Circuits. Probably the second hardest course of the term. Again, if you don't understand a particular concept for this course, do practice problems from your textbook/online. As well, while the labs for this course were pretty time consuming, if you understand the stuff taught in class, they shouldn't be that difficult.
- ECE 140 - Circuits. I got hard carried by my graphing calculator which could solve matrices, but if you're not lucky enough to have one from high school, you should make sure you're comfortable with solving systems of linear equations and complex numbers. I also remember there being lots of helpful YouTube videos for the topics taught in this class.
- MATH 119 - Calc 2 for Eng. This course builds off of MATH 119, so make sure you have good fundamentals with derivatives/integrals. This course wasn't super difficult (our class midterm mean was 81.6%), but as with all the other courses, make sure you stay on top of things.
- ECE 108 - Discrete Math. Pretty average course, just do practice problems as necessary to do well.
- ECE 192 - Engineering Economics. Very free, just do the tutorial problems as practice and read off the slides.
At this point, if you're still aiming for a transfer, you'll apply for it this term. The advice here is quite similar to the advice from before.
- ECE 250 - Data Structures & Algos. This course transfers over as CS 136, so it's important to do well here. In terms of practice, doing the tutorial problems and additional questions online was helpful for me. As well, doing Leetcode was good for practicing the problem-solving aspect of this course. The main thing you should understand for exams is running the various algorithms and knowing what situations they're suited for. The "labs" for this course were just coding assignments which were easy-medium level, so just make sure to your code thoroughly there.
- ECE 222 - Digitial Computers. This course transfers over as CS 251, so it might be important for transferring. For the Assembly programming portion of this course, make sure you know how to implement the concepts they go over in class. For example, one of the questions on our midterm involved writing Assembly for polling I/O. For the other half of this course, I think flashcards are helpful, as a lot of the concepts there are just memorization. The labs for this course mainly involve the Assembly portion of this course, so as long as you understand that you should be good.
- ECE 240 - Circuits. I hated this course, but I think the best way to study for it is just to grind practice problems and pray that you get a good prof. I also found the labs to be pretty stressful, as you had to do all the activities mentioned in the manual without much debugging to complete.
- ECE 205 - Differential Equations. I didn't find this course to be super hard, just do as many practice problems as you deem necessary to understand the concepts.
- ECE 204 - Numerical Methods. Pray you get a good prof, and practice by doing questions from past exams. The labs for this course were pretty straightforward, but they may involve MatLab and C.
- ECE 109 - Materials Chem. Pretty easy, just go through assignments and do tutorial problems and you should be good.
Applying for the Transfer
During the 2A term (or whatever term you're eligible to apply), you will need to fill out two forms here. These will usually open a couple weeks into the term. They're not first-come first-serve, so as long as you fill them out before the forms close, you will be fine.
- Transfer from outside of Math to CS- This is the form that requires you to write a bit on why you transferred. Just write something sensible here.
- Transfer from outside of Math to Math- This form just requires you to fill out some information about what you want to transfer into. Make sure you pick CS co-op if you want to stay in co-op.
What happens after
Assuming you have finished all your exams and you submitted the necessary forms, all you can do is wait. You should get your results fairly early into the preceding term. For reference, I got my results a week into my work term. Assuming you were accepeted, congrats! You never have to worry about what a MOSFET or nodal analysis is for your undergrad! From here, you'll probably need to talk to some math/CS advisors for next steps (I don't remember the specifics of everyone I talked to), but the hard part of transferring is over. Next, you'll need to be overriden into MATH 135 to open up a bunch of courses in the Faculty of Math. I won't be including any advice for MATH 135 here because at this point, you should have the study habits necessary to do well or you won't care about the result since you're already in.
Assuming you were in ECE, your courses will transfer over as follows:
- ECE 105 -> PHYS 121
- ECE 150 -> CS 135
- MATH 115 -> MATH 136
- MATH 117 -> MATH 137
- ECE 106 -> PHYS 122
- MATH 119 -> MATH 138
- ECE 205 -> AMATH 250
- ECE 222 -> CS 251
- ECE 250 -> CS 136
- ARTS 190 -> List I Communication
- PD1 - equivalent from ENG courses
- PD11 - equivalent from ENG courses
- One PD elective
Conclusion
While transferring from ECE to CS is definitely hard, it's definitely doable. In terms of a tl;dr for transferring, you should keep good study habits, stay on top of work, and touch grass where necessary. Feel free to reach out if you want extra detail added or want more clarification. Good luck!