2B Course Overview


We had six courses: four core Computer Engineering courses among which two were shared with Electrical Engineering students, one weekly seminar, and one elective. Daily lectures were from 12:30 – 5:30 and our three bi-weekly labs were from 8:30 – 11:30. Compared to the previous terms’ ~35 hours/week of class, this schedule was relatively light.

ECE 242: Electronic Circuits 2

I think many CE students would agree that the toughest course was ECE 242: Electronic Circuits 2, which extended upon concepts taught in ECE 240: Electronic Circuits 1 by introducing more advanced tools to analyze BJT and MOSFET configurations. I had a hard time in this course not only because I didn’t understand the course materials (and I tried!) but also because I believed that the fragmented amount of information to regurgitate on exams didn’t justify the money and sheer amount of time invested into this course. Perhaps not shockingly, this was my least favourite course in university so far.

There were several reasons why some students found the pre-midterm material challenging:

  • weak conceptual understanding of circuits at beginning of term. Many of our previous exams were formula-based instead of knowledge-based. As a result, our understanding of fundamental circuit concepts and intuition at the beginning of the term was below what was required to understand the concepts taught in this course.
  • fast paced. It was a fast class…if I were driving at 100km/h, I would be a snail compared to the speed of this class.
  • Ambiguous understanding of the corner cases for applying formulas. As a result, the formulas sometimes worked and sometimes didn’t. The ambiguity could be compared to tossing a coin and hoping it would land on heads.
  • This one applied to some members of the class: didn’t have access to the textbook. (The reason I didn’t purchase a textbook was because spending $180 for a 5lb textbook that would be used for only one term seemed like a poor investment decision).

The class average for the midterm was 49.5, which was comically alarming since the passing grade was 50. When we received our marked midterms back, the first question we asked each other changed from “What did you get?” to “Did you pass?” Yep, our standards changed in this course.

Luckily, the post-midterm material was much easier to digest than the pre-midterm material. I also appreciated the professor’s slowing down his teaching speed, drawing more diagrams, and writing more notes, because they helped us understand what was taught and made up for the lack of understanding during the midterm. In an effort to pass this course, I started studying for finals three weeks in advance and am quite sure the amount of time dedicated to this course surpassed that of every other course combined!

 I’m also appreciative of my friends for helping me in this course by sharing notes, assignment questions and solutions, and patiently explaining how to solve problems. Without their help, I would likely have failed this course.

 Rating: 4.5/10
Lesson from 242: make sure to take good notes or find friends who are willing to share theirs.

ECE 254: Operating Systems

The course I received the highest mark was ECE 254: Operating Systems. Perhaps a more suitable name for this course would be Introduction to Operating Systems because the concepts we learned were overview about operating systems, such as multithreading, I/O functions, memory management, and scheduling algorithms. Luckily, the professor posted (well-written) course notes on Github which helped students to read ahead or catch up on missed classes. Because I enjoyed this course, I finished reading the notes two weeks before the course was over, and since the notes were so well-written, I skipped almost every lecture after the midterm, which halved my Monday and Friday lectures.

 We also had four labs: two were based on a real-time operating system, one was based on the consumer-producer problem, and another was to simulate best-fit/worst-fit memory management. Although the labs somewhat helped solidify our understanding of the subjects, completing them was frustrating and time-consuming because there were minimal documentations and explanations. While doing the lab, I felt I was hacking something together – crossing fingers during every build – rather than engineering a design. My recommendation would be to offer students more guidance to complete the labs and to demonstrate best practices for writing “good software” instead of “hacked software”.

Rating: 8/10
Lessons from 254: it’s possible to study software on your own and do well on the exam; and you naturally learn better at subjects you’re interested in.

ECE 207: Signals and Systems

Several classmates and I had initially thought that ECE 207: Signals and Systems was about how to interpret signals used in practical applications. Two weeks into the course and we realized that it’s name was a misnomer because it was actually a math course that overlapped with ECE 205: Advanced Calculus (from 2A). We learned about discrete and continuous functions, Fourier transforms and series, Laplace equations, and discrete difference equations. The professor had typed notes and occasionally enlightened us with interesting tidbits that weren’t in the notes. Instead of a midterm, we had three quizzes weighted 6%, 12%, and 12%, and each had a time limit of 12 minutes to finish, which the class found to be intimidating because, as one classmate put it, “if the quiz is hard, we’re literally losing a mark a minute!” Nevertheless, the final was comprehensive and fair.

Rating: 7/10
Lesson from 207: professors, students, and marketers may have different interpretations of the same course title.

ECE 224: Embedded Microprocessor Systems

It is difficult to describe this course because I didn’t – and still don’t – understand what this course was about. Studying for this course could be compared to memorizing a random bunch of numbers for no reason other than you’re told to do so: you’re not sure what the numbers are for or how they’ll be used, and why you’re wasting your time and energy memorizing them instead of doing more productive activities.

 There were no written notes for this course; the material was presented in a 600+ page PowerPoint; assignments and lectures were partially unrelated; and lab instructions contradicted themselves and required us to create impossible programs. (Just to be fair, I’m not saying this is the professor’s fault. These same materials had been used by previous classes too.) It soon became clear that I can better invest time into programming than coming to class and so after midterm, I happily skipped every class except for the last one, in which the professor talked about the final layout. Doing so almost freed up another half of my Monday and Friday lectures. Combined with skipping 254 lectures, I almost had a 4-day weekend every week after midterms! 

 Rating: 1/10
Lesson from 224: take charge of your education. Do not blindly go to class only for the sake of attending class; go to class to learn, and if you’re not learning, consider investing that time to learn on your own.

ECE 200B: ECE Practice

ECE 200B: ECE Practice was a weekly seminar designed to provide students with information related to the EE/CE curriculum. When there was no new information related to our curriculum, the professor would teach us practical circuit skills, such as how to choose circuit components, use tools to design PCBs, and solder safely. In my two years of studying at the highest ranked engineering school in Canada and having paid over $24 000 in tuition fees, this is the first course that actually showed me how to choose circuit components and design PCBs…and this course wasn’t even designed to be about electronics!

 Rating: 8.5/10
Lesson from 200B: if you want to gain hands-on experience, don’t rely on your courses to offer them. Take the initiative to work on projects on your own

Psych 101: Introduction to Psychology

I had initially registered for MSCI 201: Organizational Behaviour but after attending the first hour of class, I decided to sit in on my friend’s elective, which was Psych 101. Within ten minutes of attending Psych 101, I was hooked. This has been my favourite course at Waterloo and I’m pretty sure many other students also enjoyed this course because it had 70+% attendance rate despite being held on Mondays at 6:30-9:30. Not only was Psych 101 educational and funny, it also kindled in me a deep appreciation for psychology. Because of the humorous way the material was taught, this remains one of the few courses whose material I still remember after finals were over!

Rating: 10/10
Lesson from Psych 101: it’s possible that the course which has the most profound impact on you be an elective and not core course

Personal study: software development

Although learning software wasn’t a course, it was my top technical goal (besides passing courses) during the term. Cumulatively, I withdrew about 250 hours from attending classes and studying course materials and invested that time into studying software. The upside: stronger foundation and hands-on experience developing software and answering interview questions. The downside: decrease in marks and academic knowledge of course materials.

 Lesson from self-study: treat time like memory on a Commodore 64. Carefully decide which resources need it most because there’s a limited amount.


Although I don’t yet know which courses I will be taking in the upcoming terms, I look forward to starting 3A in January.

Sharing is caring!

Leave a Reply

Your email address will not be published.