Xierumeng's Personal Website

I may or may not know what I'm doing.

4-2. 2B

2022-09-20

Note: Course experiences


Skip table of contents


This is part of a 5-part series on the upper year experience at the University of Waterloo.

Today’s topic will be on 2B. I will talk about each individual 2B course experience.

This is the first term that CEs and EEs do not have the same courses. If you want to switch programs, do it before the start of this term.

# ECE 2B F20 Courses

Courses:

  • ECE 203 Probability Theory and Statistics 1 (Chance)
  • ECE 207 Signals and Systems (Convolutions)
  • ECE 208 Discrete Mathematics and Logic 2 (CS course 2)
  • ECE 224 Embedded Microprocessor Systems (Devices connected to the CPU)
  • ECE 252 Systems Programming and Concurrency (Non-deterministic C programming)

Difficulty: (Hard) ECE 203 > ECE 207 > ECE 208 > ECE 252 > ECE 224 (Easy)

Interest: (Cool) ECE 252 > ECE 224 > ECE 208 > ECE 207 > ECE 203 (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 206 this term as my elective and ECE 298 in 3A.

# ECE 203 Probability Theory and Statistics 1

Chance.

This is THE course of the term. I did not understand the content. I still do not understand the content. I thought this would be my lowest grade in my undergraduate career but the class got curved hard.

# ECE 207 Systems and Signals

Convolutions.

There are so many convolutions. Everything is in the frequency domain. The tests and final were multiple choice, which is the absolute worst.

Z-transform is the discrete version of Laplace transform.

There’s also the D-operator (deez nuts) and proving stability of systems.

# ECE 208 Discrete Mathematics and Logic 2

CS course 2.

This course was interesting although pretty theoretical. Goes into semantics of boolean logic, satisfiability, first-order logic, decidability, the halting problem, and language categories (e.g. regular expressions). You will learn why you can’t parse (X)HTML with regex. Also re-teaches state machines from ECE 124 but calls them discrete finite automata (DFA).

# ECE 224 Embedded Microprocessor Systems

Devices connected to the CPU.

Extension of ECE 222 by seeing how devices communicate to the CPU and common buses are shared. Content was a bit dry.

Because it was online there was no lab for me but this course does have one in-person and is apparently in C (I interrupted a midterm exam to ask the professor about it and about an unrelated course).

# ECE 252 Systems Programming and Concurrency

Non-deterministic C programming.

Essentially a guide on how to use C to call the various useful Unix APIs to get a multithreaded and multiprocessed program to work. A pain to debug since the scheduler is non-deterministic, Valgrind and Helgrind are your friend. My grandmentor (mentor’s mentor) told me the easiest way to do mulththreading is to just not share data (won’t work for the labs and assignments though :) ).

You will be forced to learn how to compile C code in Unix systems if you don’t know already, since the testing is done on the ECE Linux servers.

I found professor Zarnett’s lecture notes and videos pretty comprehensive, although some students apparently don’t like his style.

# Conclusion

The important information to take away is 2B courses.

Check out:



© 2023 Xierumeng. All rights reserved.