UW ECE – 2B Review (Fall 2025)

Published: 2025-12-18

 

This was, by all accounts, a very challenging term. The content was quite heavy in a few of our courses, labs were time consuming, and none of our professors decided to go easy on us during exams. Despite these challenges, this term was also a lot of fun! Much of the content of 2B is very core to ECE, which makes understanding challenging concepts more rewarding. Plus, I volunteered as a Big for O-Week this year (pictured above, with the nickname JMoney on my shirt ☺︎), which was an awesome time. I definitely recommend that any upper years who got anything out of O-Week apply to be a leader when they have a chance.

 

Now, let’s go over my course reviews.

 

ECE 203 – Probability Theory and Statistics 1

Instructor: Shechem Sumanthiran

 

Despite the name, this course focuses pretty much entirely on probability theory. The follow-on course, ECE 307, handles the statistics side of things. The course content is pretty much what you’d expect for a probability course, but at the same time expanded my knowledge of how deep the field of probability theory really is. Concepts you likely touched on in ECE 108’s intro to probability like random variables, independence, Bayes’ theorem, etc. will be revisited and expanded upon. The big change is that this course introduces continuous random variables and more named probability distributions. Say you wanted a random variable which measures the lifespan of a device, for example. This is likely to be a continuous measurement with an uncountable set of outcomes. Thus, the discrete methods don’t work. Long story short, you’ll end up doing a lot of integrals.

 

The content of this course can get quite heavy toward the end, as there are a lot of concepts to remember. Make sure to keep up with the weekly practice, as the textbook problems are actually pretty decent. Our instructor, Shechem, was excellent. He was a PhD student filling in for Patrick Mitran, but you’d have thought he’s taught this course 5 times before. He was knowledgeable, confident, helpful, and kind. He taught the course using Mitran’s notes/resources and covered the same content. In all, Shechem was probably my cohort’s best instructor this term.

 

ECE 207 – Signals and Systems

Instructor: Prof. Oleg Michailovich

 

This course was interesting, in multiple ways. First of all, I didn’t mind the content. It’s highly relevant to signal processing and fundamental for our engineering discipline. I will say, however, that much of the content is review from ECE 205. This is particularly true for Laplace transforms, Fourier series, and Fourier transforms. While the course looks at these tools from a different angle, it is a full repeat in terms of the math and much of the mechanics of solving the problems. The new content comes from the discussion of “Systems” as well as discrete signals, for which we use the Z-transform (very similar to Laplace transforms in terms of problem solving). I plan on taking DSP courses in the future, so I know I’ll be applying this content going forward, but this course left me wanting more in terms of applications or new knowledge.

 

Oleg’s administration of the course was a subject of much… debate… during the term. As an example, for our final exam, we were told to expect a formula sheet with 3 transform tables (all past exams had around 4 pages of formula sheets), and then we got to the exam the one formula sheet was so blurry it was unreadable. And then some of the TAs proctoring the exam were telling students they couldn’t help them to read the formulas. This is just one example, but Oleg has a deserved reputation for administrative blunders, of which we experienced many (assignment/midterm grading problems, delays in posting material, etc.). His actual lecturing is pretty average for ECE professors – he gets his point across.

 

ECE 208 – Discrete Mathematics and Logic 2

Instructor: Prof. John Thistle

 

This course often feels like ECE 108, just with much more formality. Honestly, this added formality makes it easier than 108, in my opinion, because it really narrows the possible ways to answer questions. For example, formal Hilbert system proofs, while challenging, can be reliably solved with some practice and recognizing patterns, whereas 108 style proofs often require extra intuition and some good luck in choosing a proof method. The content also goes over SAT solvers and some simple algorithms for solving SAT by hand, as well as the semantics of propositional logic (a lot of review) and first order logic (new, but not that big of a leap). I am aware that this course has been the subject of some experimentation lately and there are proposals to remove it from the core courses for 2B. This makes some sense in my opinion, as the practical utility of what’s taught sometimes seems like a stretch.

 

John Thistle was a pretty standard lecturer, but there were minimal resources available for practice. We also had a somewhat cooked midterm where the raw average was failing and an upward curve of about 30% was applied, so we were grateful to him for not being afraid to recognize the mistakes made there. The final was much more reasonable and, overall, the course is not very heavy and doesn’t really stand out in many ways when thinking back about the last 4 months (other than that cooked midterm).

 

ECE 224 – Embedded Microprocessor Systems

Instructor: Prof. Bill Bishop

 

This was definitely my favourite course this term. The content is more practical than ECE 124 and honestly feels like more of a successor/complement to ECE 222. The content includes methods for synchronization of data transfers, I/O bus systems, serial interfacing (including the basics of the USB protocol), analog interfacing (focusing on DACs, ADCs), bus arbitration, and finally Direct Memory Access (DMA). The content of this course is vitally important to Computer Engineering and I always felt pretty motivated to study for this course.

 

The labs for this course are focused on developing embedded C programs on a “soft core” processor system implemented on an FPGA. The first lab is very basic and just busy-work of copying the lab manual. The second lab had us compare the performance of polling and interrupts, which was a bit time consuming to get right. And then finally the last lab had us build an audio player that buffered data from a file system into an audio core while trying to minimize distortion. Much of the cohort spent multiple days debugging this lab, trying to get the audio perfect. Overall, I would say the labs weren’t terribly difficult, but also felt a bit disconnected from the course content.

 

Prof. Bishop is amazing, in my opinion. He’s a super nice and approachable guy, clearly extremely knowledgeable, and has perfected the administration side of things. Every practice assignment was released on Learn on time, he ran his own tutorials (which I found quite useful), and he provided about 10 past finals and midterms, which were highly representative of the exams we received. That’s not to say they were easy, as we had about a 20% failure rate on the midterm (his highest in many years), and I know the final was quite challenging. Many people ended up leaving studying for this course to the day or two before, as it was our last midterm and last final. I don’t recommend doing that, obviously. Besides, you might enjoy learning this content!

 

ECE 252 – Systems Programming and Concurrency

Instructor: Prof. Wojciech Golab

 

This course is probably the most immediately useful/practical course of the term. The content goes over extremely important stuff including an introduction to Linux processes, multithreaded programming, many techniques for inter-process communication/synchronization, and some classic problems in these areas that sometimes show up in job interviews. When it came time to prep for interview season this term, I found myself looking at my notes for this course, and they ended up being very relevant. If you’ve done anything with Real Time Operating Systems or embedded programming before, the feel of the course will be similar, with some added layers of complexity.

 

The lab for this course consisted of 5 projects, completed with a partner, in addition to in-person programming tests. Some of the projects were more time consuming than others but were pretty good practice for actually understanding the course content and felt useful. The in-person tests were the subject of much chagrin (wow, big word!) among my classmates, and for good reason at times. The 4 lab sections each got different tests every time, sometimes making for substantial differences in difficulty. These in-person tests are a new addition because of the use of AI for completing the projects, and I’m sure they’ll work out the kinks in the future.

 

Golab is a very knowledgeable and good professor. He was also very responsive to my feedback as an academic rep. Overall, this course was well run with a few forgettable lapses, but I do take some exception to one question on the final exam I know I got wrong – “Who was the creator of C?” But at least I will now forever know it was Dennis Ritchie.

 

ECE 298 – Instrumentation and Prototyping Lab

Instructor: Kim Pope

 

298 was, thankfully, very different than 198. The course develops key skills relevant to many electronics projects, including soldering (those surface mount capacitors were painful), probing signals on a PCB with the oscilloscope, putting together a functional embedded system, and embedded C programing (with the STM32 Nucleos). That said, the course can be extremely time consuming and a little demoralizing at times when you’ve spent many hours in the lab and it doesn’t feel like you’ve made much progress.

 

The lab projects are to be completed outside the scheduled times and then the lab sessions themselves were used as demo/test time for the most part, apart from the first session where we had to get our ICs soldered onto our PCBs with the reflow oven. Kim Pope was very helpful, kind, and knowledgeable. Pictured below is one of the nights I spent in this lab. For some in my cohort, there were many such nights, some of which apparently went to 3 or 4 am.

 

 

There have been some whispers of changes coming to this course, and I know many complain about the workload for a 0.25-unit course, but I would just suggest you make the most out of the opportunities this course provides to get continued practice with lab equipment.

 

Co-op Search

This was my cohort’s fourth co-op search, and I found it to be a busy one. I ended up taking an offer that puts me back at the same company I did my very first co-op with! I’ll be on a completely different team and in a more technical role, but it’ll be good to see some familiar faces. That said, here are my stats from the term:

 

 

As of writing (the day after our last final), my cohort is 84.5% employed. That’s our best rate at this point so far, and I think we’re finally seeing the impact of having co-op experience. So, kids, things will get easier once your first couple co-ops are out of the way.

 

Conclusion

At times it felt like this term was dragging on forever, while in retrospect it feels like it only just started. I think Fall terms have that weird quality about them. Having now experienced all 3 times of the year for a term (I don’t fully count my 1A experience because there’s so much going on in 1A that it’s hard to compare to the rest of the degree), I think I can confidently say that Spring terms are my favourite. The vibes are high, the weather is good, and it seemed that profs also were more chill. And I guess that’s great news for me, as my next term will be a Spring term for 3A. But for now, I’m looking forward to some rest, relaxation, and reuniting with some friends and family over the holidays. And to you, dear reader, at whatever time of year this may find you, I wish you all the best!