I may or may not know what I'm doing.
2022-09-21
Note: Course experiences
This is part of a 5-part series on the upper year experience at the University of Waterloo.
Today’s topic will be on 3A. I will talk about each individual 3A course experience.
This term is the workload-heaviest term I have taken in my undergraduate career (so far). 5 labs is not a fun time. This is caused by the 3A elective slot being swapped with the 2B ECE 298 lab course as the ECE department delayed ECE 298 in the hope that it would be in-person (it did not end up being in-person). Normally, this term has the first elective slot (choices!).
Courses:
Difficulty: (Hard) ECE 318 > ECE 350 > ECE 327 > ECE 298 > ECE 380 (Easy)
Interest: (Cool) ECE 327 = ECE 350 > ECE 380 > ECE 298 > ECE 318 (Tedious)
Disclaimer: The above two scales are relative, not absolute.
Note: The ECE department swapped ECE 298 with the 3A elective. Therefore I took ECE 298 this term and ECE 206 as my elective in 2B.
PCB.
This is THE course of the term. It was supposed to be a 0.25 credit lab course but was definitely as much work as a full course. Term project that involves prototyping some hardware, low-level firmware to run it, and then putting it all together on a PCB.
With the computer congestion (we had to use software that was only available on the lab computers) and cumulative labs, this course was terribly run. Additionally, there was not enough instructional support, so a bunch of Piazza questions were left unanswered and there was much confusion with requirements.
Between the transmitter and receiver.
This is THE course of the term. I did not understand the content, but the TA notes saved me. The professor was horrible and killed any interest I had in communication systems.
Because ECE 318 labs were online we were forced to use a crappy simulator, but it was just following instructions.
FPGAs and similar.
Really fun course where we developed non-traditional data-driven hardware, and shows how CPUs are just a subset of possible hardware styles. Unfortunately, most of the lecture videos got removed so I can’t access them anymore.
The ECE 327 labs led up to implementing a matrix multiplier using a systolic array.
Kernel.
This course was also pretty close to being THE course of the term.
The nitty-gritty of what really goes on when allocating memory, scheduling threads/processes to run, locks, and all the low-level code that’s barely above the assembly and hardware.
The content was fine, but the ECE 350 labs take an enormous amount of time and energy, possibly the most intense workload I have experienced in my undergraduate career.
My group spent 60 man-hours on the first lab and it got worse from there, especially since it was online so groups couldn’t bounce ideas off each other. You will learn that comprehensive test suites take a huge amount of effort and debugging is a massive pain when your program jumps all over the place for no apparent reason. It’s worse than ECE 252.
Feedback.
Straightforward course with plenty of block diagrams and determining how systems behave (stability, overshoot, settling time, etc.) when changing their scalar factors. However, memorizing all the rules (root locus, Nyquist, etc.) was a pain.
ECE 105 content makes a surprise comeback in test 1, enjoy!
ECE 380 labs were about using MATLAB to simulate control systems. Apparently, the in-person labs are using a real physical system, which is a pain.
The important information to take away is 3A courses.
Check out:
© 2023 Xierumeng. All rights reserved.