The ECE 2A term in Waterloo is infamous for its demanding, non-stop schedule. While other faculties – hell, even other engineering departments – complain about their “busy” schedules, none can compare to the nightmare that is ECE 2A.

Behold, the schedule that every Waterloo ECE student will have at some point in their university career:

Affectionally referred to as the Ol' Rectangle.

That was what my schedule looked like every other week – seven courses (up from the customary six!) spread into nonstop lectures, labs and tutorials from 8:30 am to 6:30 pm, with only an hour long lunch in between. This was then followed by another 6 to 7 hours of working on homework, going over notes and sorting out co-op. Fortunately, the labs from Tuesday to Thursday only ran every other week, so you’d get a four hour break between classes to eat and work on stuff. Our professor also cancelled our 290 tutorial on Friday, so we ended up having a chill day at the end of the week. Our section ended up having the better schedule – from what I’ve been told, the other ECE section (which had labs in the morning and lectures in the afternoon instead) had a more awkward schedule than us.

I’m in Stream 4, so our 2A term fell during the Winter term from January to April (as opposed to Stream 8, whose 2A term falls in the Fall term from September to December). The already-horrible morning lectures were worsened by the crappy season, so it was quite a challenge getting out of bed in the morning when it was still dark and cold out. The high workload and depressing weather made people burn out quickly. Looking back, it was quite a feat that I managed to pass the term intact.

Pictured: My porch stairs after heavy snowfall. It's supposed to have four steps.

With that said, let’s talk about the nitty gritty of things.

Before the Term

First off, congratulations for making it this far! You’re now officially part of the ECE department, so your administrative paperwork now goes through the ECE office itself, rather than the First-Year Office. Yay! You also get access to the super-secret ECE undergrad lounge…somewhere.

For co-op, if your employer asks you to return to their company for the next co-op term, I’d recommend taking them up on the offer if you like your job. That way, you won’t have to include “job search” to the list of things you have to juggle during 2A, meaning you won’t have to spend time worrying about applications or missing class to go to interviews. You’ll also have a bit of a harder time getting a job for the summer term, since you’re competing with a lot more people. Then again, my personal co-op philosophy is that you should diversify your experiences as much as possible, so this all depends on what you want out of co-op.

For housing, you’ll find that you’ll be spending a lot of nights at school, so you don’t need to get anything fancy. With that said, you should definitely get a place that will preserve your mental health and has roommates that match your personality. A friend and I roomed with people who can simply be described as “roommates from hell”. They were extremely messy and kept the common areas in a state that would count as a war crime under the Geneva Conventions, and often had people over for loud get-togethers at three in the fucking morning. In short, being at a horrible place was an extra burden I didn’t need to have.

But yeah, regardless of the state of your house, you’ll be spending a lot of nights somewhere on campus. Prepare your wallet for daily dinners at the plaza and walking home late at night.

DC is sooooooo empty at one in the morning.

In terms of pre-studying, I realize that it’s difficult to do anything school-related during co-op, but I would definitely recommend going over some notes before you enter 2A. This will ensure that you hit the ground running once the term starts. I ended up paying dearly for not doing this. Anyways, the two things you should study are:

  • ECE 140 notes (Linear Circuits). It’s been one term since you went through an analog circuits course, so you should familiarize yourself again with basic circuits. You’ll “review” the entire course in one week, so it’s easy to get lost.
  • ECE 250 notes (Algorithms and Data Structures). This 2A course has all its lecture materials on Professor Harder’s website so you can start studying ahead of time. If you’re a software guy, it’s also useful to know the concepts of this course ahead of your co-op interviews.

Now that’s out of the way, let’s talk about the courses themselves.

ECE 200A - ECE Practice

Let’s start on a positive note: unlike ECE 100A and 100B, this “course” (actually a seminar) has essentially no content in it. In the words of our instructor, this is simply time set aside for when the ECE department needs to impart some information to the entire class.

Lectures consist of talks from ECE department stuff about things like term promotions, engineering exchanges, work term reports and the Technical Presentation Milestone.

Course deliverables consist of simple activities such as completing a weekly to-do list, attending a Waterloo varsity game and participating in a dodgeball game planned by the class. In our case, each deliverable was worth one point, and you needed a certain number of points to pass the course. This course is a credit/no credit course, so completing the minimum number of points needed is fine.

Who knew Waterloo actually had varsity games?

ECE 205 - Advanced Calculus 1

I know that the course is called “Advanced Calculus,” but I find that it’s actually completely different from your previous calculus courses. You’ll be focusing on differential equations, starting with first- and second-order ordinary differential equations and basic Laplace transforms before the midterm.

After the midterm, you’ll look at applications of the Laplace transform (such as in transfer functions), Fourier series and transforms, and finally on partial differential equations such as the heat equation.

Similar to your previous math courses, there are mandatory assignments every week (except for midterm week) on the topics you’re currently learning. Our assignments were rather difficult, each one needing almost 12 hours to complete. Our tutorials were run by our professor, where he went over concepts taught in tutorials and usually taught new topics. This is one tutorial you wouldn’t want to miss.

Apparently this wasn't a valid answer to a graphing question at the end of a long derivation.

The lab for this course is done as the same time as the MATH 215 labs (see the schedule above). It’s essentially a course on using Matlab, and runs completely separate from the lectures. Labs are done every week, and they consist of going through a document and copy-pasting commands and results to and from Matlab. There’s a lab exam at the end where you regurgitate what you’ve been doing in the labs for the past four months. The labs should be straightforward and easy to do. You should do your best to get close to perfect in the labs since they’ll end up being the mark that boosts your overall ECE 205 mark.

This course was one of the reasons why I transferred from Electrical Engineering to Computer Engineering. This is the last calculus course for CE students, while EE students will have to take another one in their 2B term. The previous calculus courses in ECE still made a lot of sense to me, but I found differential equations a bit harder to understand. There’s a lot of memorizing common solutions for certain differential equations, so it was harder to get an intuition for solving them in general.

Overall, this is a course you should watch out for, and you should definitely start going to your professor’s office hours when things start to get hazy.

ECE 222 - Digital Computers

This is a digital design course. In the lectures, you’ll be talking about the components and architecture of a digital computer, and how each part interacts with other parts of the computer. (Vague, I know.) Topics include ARM Assembly, I/O, pipelining, and the datapath. From my talks with upper years, ECE 222 seems to be a bit of a wild card. The course’s style will all depend on your professor. In our case, the professor often asked about definitions in his exams, while a previous professor mostly stuck to writing code in Assembly.

There’s a set of optional problems every week, which the TA goes over in a tutorial. (Read: tutorials are optional but helpful.)

Labs are done every other week. There are four lab projects in total, and you have two weeks to complete each one. Despite being spread out over the term, you only need to know everything up to the midterm in order to complete all lab projects (the inverse of this is that you’ll do well on the midterm if you can complete all four labs at that point). Labs are done by coding simple programs in ARM Assembly on the MCB1700 board.

There’s an initial steep learning curve if you’re going in without any knowledge of Assembly, but once you get the hang of it, every lab becomes straightforward to do. You should be able to finish most labs in a few hours. Similar to ECE 124, labs are evaluated by demoing your program to the lab instructor and discussing its structure. Unlike ECE 124, the lab reports only consists of uploading your code to Learn and perhaps answering some simple questions. Getting close to perfect in the labs should be easy.

Doing some self-promotion: check out my Assembly project here:

Overall, I really enjoyed the lab aspect of this course, but your mileage may vary for the lectures depending on your professor. I feel that I could have taken out more from this course.

ECE 240 - Electronic Circuits 1

Fun fact: ECE 240 used to be part of a series of four courses on analog circuits. However, in the infinite wisdom of the ECE department, these courses have been reduced to three while keeping the same amount of material. As a result, ECE 240 has turned into a fast-paced course covering a lot of material.

As mentioned before, the first week of the course is a review of the entire ECE 140 course, so you’ll quickly go over Kirchhoff’s laws, op amps (and common amplifier circuits), RC and RL circuits and the frequency domain.

Next, before the midterm, you’ll go over pass-band gains and common filter circuits, Bode plots, RLC circuits and their frequency responses, and diodes, your first look at a nonlinear circuit element. After the midterm, you’ll mostly focus on transistors such as MOSFETs and BJTs.

A snippet from our BJT notes. I didn't take this specifically for this post, my Google Photos archive is full of these.

Like your previous circuits course, there is a set of optional problems every week, which the TA goes over in a tutorial. (Read: tutorials are optional but helpful.)

Labs are done every other week, and the lab topics match up closely with the topics being taught in class. There’s a thorough set of questions and measurements you have to get for your prelab, and postlab reports, which involve the use of an app called Multisim. For the labs themselves, you’ll have to bring your electronics kit given to you in first year and build some of the circuits ahead of time. You should label all the components in your kit for your convenience. Other than that, labs simply consist of building the circuit and taking measurements with the oscilloscope. I recommend doing really well in the labs as they’ll boost your marks greatly.

There’s a lot of stuff being thrown at you at once in this course, so this ends up being one of the hardest courses in the term. I recommend doing a few questions every week from the problem set, so you won’t have to study all at once when the midterm and finals come a-knockin’.

ECE 250 - Algorithms and Data Structures

As the course name implies, this is a course on algorithms and data structures. A list of lecture topics can be found on Professor Harder’s website. If you’re lucky, Professor Harder himself will be your instructor for this course.

If you’re already familiar with programming, implementing the algorithms or data structures themselves should be straightforward, but this courses focuses a lot on math and optimizing your code. The course is taught using C++, but it doesn’t actually teach you how to code in C++ (i.e. it assumes you already know it from the start).

One tutorial is spent as a crash course on C++, but a lot of it will involve self-learning (which is expected anyway from a software engineer). Other tutorials are run by Professor Harder, where he asks various questions about the topics being taught in lectures. Attendance is optional.

There are projects due every other week, in which you’ll implement a data structure discussed in class. You can find the list of projects here. There’s an optional lab session you can attend where TAs can help you with the project, but I personally never found any use for them. Professor Harder provides the testing program he’ll use for your code and a basic test case, but this won’t be thorough and you’re expected to test and handle edge cases. Projects are tested using the ECE Linux servers, and you will get a zero if it fails to compile in that environment. I recommend downloading the free VMWare Player and Ubuntu and doing all of your development from there. If your project passes less than 80% of test cases, you can discuss your code mistakes with Professor Harder to get a higher mark.

This is one of the most important courses you’ll take if you’re a software guy. Professor Harder goes over a lot of typical technical interview questions during lectures, so it’s a very good idea to pay attention in class. The midterm is straightforward as it’s mostly about code implementation, but the final is more math-heavy, so you should be be more careful when studying for the final. Overall, I really enjoyed this course and it was one of my highest marks in the term.

ECE 290 - Engineering Ethics, Profession and Law

In this course you’ll be talking about archetypal patterns, the engineering identity, duty and code of ethics, and law topics relevant to engineers (such as torts, contracts and patents). Our professor cancelled tutorials for this course, so I don’t have anything to say about them.

At the beginning of the term, you’ll form groups of four to write essays on certain topics. You’ll be writing about the ethical dilemmas on four cases – these may vary, but our cases were on thalidomide, the Challenger disaster, the Keystone Pipeline and the CIA’s “enhanced interrogation techniques”. You’ll also write a book report on Man’s Search for Meaning and All Quiet on the Western Front.

A lot of the midterm and final exam’s content come from class discussions, so it is imperative that you do not skip any ethics classes. A fair amount of content in the final exam come from the Law for Professional Engineers textbook, so you should definitely take a look at that before the final. All in all, how you enjoy this course will depend on what kind of person you are. I personally enjoyed the discussions and talks we had in class.

MATH 215 - Linear Algebra

The other engineering programs actually take Linear Algebra in first year, so this course is pretty straightforward. Topics included before the midterm are a review of complex numbers, vectors, solving systems of linear equations using Gaussian elimination, matrix algebra, determinants, and eigenvalues and eigenvectors.

After the midterm, you’ll study vector spaces, spanning sets, basis vectors, subspaces, projections, linear mappings and similar matrices. The content itself isn’t hard, the problem is that there is a lot of them to learn and memorize.

Linear algebra. Probably.

Like your typical math course, there are weekly mandatory assignments (except for midterm week). Compared to ECE 205, the assignments in MATH 215 are extremely straightforward to do. There is a weekly tutorial where a TA goes over the topics in the weekly assignment, so it’s useful to go to clear up any uncertainties. The midterm and final should be straightforward, it’s just that there’s a lot to memorize. Note that the final is more proof-heavy compared to the midterm.

MATH 215’s labs involve Matlab and is previously discussed under the ECE 205 section.

In Conclusion

Looking back, I’d agree with others in saying that 2A’s content itself isn’t hard, it’s the time management that will kill you. You’ll have to balance six content-heavy courses over the course of the term along with searching for co-op and taking care of yourself. Despite your best efforts, your marks will definitely drop compared to your two previous terms. Don’t lose hope.

For Stream 4, since you’re in the Winter term, you’ll have reading week somewhere in your schedule. Reading week is usually immediately followed by midterm week, which is terrible. The temptation to slack off during reading week is high, but I urge you to fight that and focus on studying for your midterms. Your marks will thank you later.

I definitely recommend doing at least some of your optional problem sets from ECE 222 and ECE 240, along with your mandatory assignments and projects, as it will greatly reduce the amount of cramming you’ll have to do once midterms and finals come.

2A’s busy and demanding schedule will quickly burn you out, so I recommend taking up a hobby or activity to get your mind off school. I continued to do fencing from my previous term, though I had to do it on Saturdays instead of Mondays and Thursdays due to the week’s busy schedule. Spending three hours each week fighting people with swords definitely helped me release some steam.

So much steam that this épée bent from the sheer amount of force.

If you have time, I also encourage you to sign up for a hackathon. There’s at least one running in the area during the term. Hacking a project together at a hackathon is a fun way to spend a weekend and lets you apply the skills you learn in a classroom in a real-world setting. I spent a weekend early on in 2A to build Turbo Avenger with my teammates at the Kik Hackathon.

2015 Kik Hackathon, Day 3, 7 am (?)

Even though things may seem bleak and pointless at times, it is important to remind yourself why you went to Waterloo Engineering in the first place, and the end goal you’re working towards. Remember: you can’t have a nightmare if you never dream. Keep dreaming!