Review of 2B

2022-09-14

Truly 2B or not 2B 🫠

Ah hahahahahaahahahahahahahahahahahahahahahahah

^Totally not me

Okay, here we are, another review of another study term. God is faithful!

Preliminary Information

Same “classes paragraph” from previous reviews of study terms, in case you are new around here :)

If you were ever wondering what the course descriptions of any courses at Waterloo were, you can check out the course descriptions page. There is also the degree requirements page for computer engineering. Depending on the year you start, you may need to navigate to “past calendars”. The link defaults to the most recent calendar, so right now that would be 2022-2023. For my course requirements though, I would need to navigate to the 2020-2021 calendar since that is when I started.

How to begin...

I wrote this “how to begin” title over a month ago, when the term was still very fresh (in fact it was not over yet) in my mind. Now, I am not 100% sure what it was I wanted to say, but I can still remember some of those feelings—really, how should I even begin? I think it was a term of many firsts, many challenges and hardships, but also of many fruitful moments, and a testament to God’s faithfulness in all of that. So I guess we can begin with just going through the courses 😂

emptyclassroom
Our classroom for the term, E7-4053. It seems that in Engineering, all of our lectures and tutorials are in the same room.

Courses

It would be useful to point out that this term is my first term where everything was fully in-person, like a normal term. So the first term of “real school,” in a way. We did have some restrictions with food and masks, but near the end of the term the mask restriction was lifted and so it was no longer required to wear them, though still a sizeable number of students continued to.

ECE 203: Probability Theory and Statistics 1

From what I heard, if you took Data Management in grade 12 (or some other non-Ontario equivalent), you probably would have seen some of the topics they cover here before, such as normal distributions, permutations and combinations, etc. For me, I only recall covering very basic probability questions, so this course was essentially all new to me.

I think this course is also a more intuitive-based course: if it clicks, everything makes sense, if it does not, then good luck (I am in the latter category.) Give me 5 red balls and 3 blue balls, and ask me something about them, I would not know 😅

The professor was very kind to us, since this was our first in-person term. He definitely marked easier and gave reasonable questions on the midterm and final, so that was excellent 😎 This was likely a big factor in me passing this course.

Summary: this should be a normal, straightforward course, unless you are like me where things were not intuitive.

ECE 207: Signals and Systems

ECE 207 is essentially a continuation of ECE 205, even though the prequisite courses are circuit courses (ECE 140, ECE 240.) It is more of an applied version of ECE 205, since you will see how those concepts (Laplace, Fourier) are then applied to signals (and also systems, who would have guessed!)

The professor was generally quite relaxed for this course, so it was pretty straightforward as well. There are also these notes made by another professor, and based on those notes and past midterm/finals, the course should be pretty manageable with practice problems and other normal-course-things.

Summary: should be a standard course, no big surprises

ECE 208: Discrete Mathematics and Logic 2

This was probably the most interesting course, in terms of the concepts. From what I hear though, it is quite prof dependent—we happened to have a good prof, so the course went well, past cohorts have had different profs and no one really knew what was going on.

The course for us was mostly theoretical and conceptual, so a bit of a break from our typical engineering coursework. We covered things like context-free languages and grammars, deterministic and non-determistic finite automata, etc. which seem to lead well into compilers, a course we will have to take in 3B. We kind of ran out of time to cover the “logic” part of this course, but it was still very interesting overall.

Summary: likely prof dependent, but can be quite an interesting course

ECE 224: Embedded Microprocessor Systems

empty-e2
Taken after my first 12 hour “shift” in E2. Little did I know I would be there even later the next day.

There are 5 lab sessions, but only 2 labs (1 of the lab sessions is called “Lab 0”, but it is just a setup and tool familiarization lab.) Similar to some other software labs, you are expected to work on it outside of the designated lab time, which is used either to a) introduce the lab or b) do the demo of the (hopefully) finished lab.

Labs are in C (all of our coding stuff this term, for ECE 298, 224, and 252 were all in C). I think a common theme for the 224 labs was that it made sense conceptually, but the actual implementation was tricky and confusing at times. Lab 2 was also much more involved than Lab 1; I was ecstatic to have spent two back-to-back 12-hour sessions in E2 🤩 (more on labs in general in section below)

Tip: Remove any and all print statements; they can (and will) slow down your program, to the point where the code might be correct but you are not getting the desired output!

Content-wise, it seems like there is a lot to just know, especially when there are slight variations on one topic (e.g. timing diagrams for synchronous, asynchronous, and semi-synchronous buses, but each bus also has read and write timing diagrams, and within each bus type you may have things like partially-interlocked or fully-interlocked, etc. Each of these is its own diagram!)

There are two main professors who teach this course, and so the delivery of the course can differ a bit, but for the midterm and final, studying past exams can be beneficial. For us, our midterm was more difficult than anticipated as it skipped over some topics, but the final was very similar to past ones. Our professor posted all the past exams on LEARN.

Summary: content-heavy, labs take time, review past exams

ECE 252: Systems Programming and Concurrency

For many students, this is the most interesting course of the term. You use C and learn more about Linux (which you may have already seen on co-op), and you cover topics like system calls, forking, shared memory, concurrency, threads, etc. If you want to see what is actually being taught in the course, the person who designed the course has all the course material available online, you just need to search “ECE 252 Waterloo” and you should see a Github repository with it.

Course content aside, the labs are a big component in terms of application. For us, it was only worth 25% of the course, but definitely spent a lot more time on them. It is some kind of pyschological trap I think—after working a number of hours, you may reach a certain point where it is mostly working, and perhaps certain cases are not, but you might spend an extra double or triple the time, just to get all the cases right (but perhaps not worth the time.) Since you cannot know if the problem is a 30 minute fix or a 5 hour fix, ?? what to do?? The labs provide some kind of reassurance though, because if you have tested it extensively and considered all the cases you can think of, chances are you can do quite well.

Labs are done in partners again, and for my partner and I this was how it went:

  • the first lab was alright, we panicked a bit but got it done, so we thought “doable”
  • the second lab was more confusing
  • the third lab was biggest rip, biggest timesink, aaargggghh but we ended up doing a lot better than we thought (the issues we faced were similar to what I mentioned earlier- smaller cases that we could not get to work, but spending soooo much time on them)
  • the fourth lab was a bit different from the previous three labs, but still with some relationship, and that also took a loooooot of time. Also submitted thinking we did even worse than the third lab, but somehow we did better than the third lab 🤔
  • the fifth lab was a bit of a nicer way to end off; it still had some work but nothing as bad as the third and fourth lab (it was just a variation of the lab 4 problem), and we submitted more confidently

I cannot encapsulate everything that the labs felt like here; sometimes it is hard to put into words, so you will have to experience it for yourself! I would caution though that for some, the labs were fairly straightforward, and they did not worry about them; for others, they may have struggled even more than my partner and I did. Regardless, they are very helpful in actually seeing and using the content tangibly, so I guess that is a plus? 😁 For me though, a lot of time was spent on the labs. Luckily, you can work on them from anywhere (just need to remote SSH), so no late nights at E2 lab required.

The labs are related to each other, and having working functions from prior labs does make future labs easier. For example, you will implement a function to concatenate different PNGs in the first lab, and for all future labs you may use that function again, with slight modifications, but the focus will be implementing something else. So it is important to do all the labs.

Summary: a good course overall, the labs can be demanding but rewarding, time management??

ECE 298: Instrumentation and Prototyping Laboratory

soldering
First time soldering a PCB. If you look closely, you can see that some of the capacitors are really slanted, which is not good 😆

This course is only a 0.25 credit course (a full course is 0.5 credits), but the workload definitely was that of a 0.5 credit course or sometimes more. The first lab we worked on was quite hands on and fun, which involved soldering and assembling our own PCB. The second lab had multiple components, but it was very involved (coding, physical assembly, design.)Given that we had other very demanding courses, and the workload for this one was quite up there, it probably was not as enjoyable as it could have been. Luckily, it is in pairs (as all labs have been this term), so at least you will have someone else :)

It would be important to point out though that even though the workload is higher than the course is worth, the projects are quite interesting, and if you are able to figure things out then it can be a rewarding experience. For my partner and I though, we had to be careful with how we split our time between this course and other labs we had going on (ECE 252, ECE 224.)

Summary: more work than the 0.25 credit weight, but the projects are interesting

EARTH 121: Introductory Earth Sciences

Taking this course was pretty spontaneous, but it did eventually work out (it also counts as an NSE- natural science elective!) It was an online course, and did require some effort, but it was very manageable. So if you are looking for an NSE to take, you can consider taking this one ;)

Would also encourage taking it with some people you know, it makes the course a lot more fun, not that discussing Anthropocene is not fun 😁

Concluding thoughts

Labs

Every time labs are brought up in discussion, you’ll hear two things depending on who you are talking to:

  • if it is an upper year, they will laugh and tell you to watch out for ECE 350
  • if it is a fellow student, they will nod sadly that they too have not finished yet

Labs were by far the biggest part of this term for me; I do not know if that was supposed to be the case, but that was the reality. Many times, it felt like I was working more on labs and not focusing as much on course content, and trying to fit in “when I could work on __ lab” instead of doing practice problems for example or reviewing course content. It also did not feel like it was a time management problem, or that I was clearly “wasting time”; it was just hard to determine how much time each lab would take, and so it would feel like endless work. I do not know how the people in ECE 350 do it—apparently it’s supposed to be minimum 20 hours per week per group member, and they are 4 group members! But yes, this term was hectic, with some weeks being particularly difficult trying to juggle labs from three courses.

It was fortunate that my lab partner was the same for 252 and 298, so we were able to decide together what we should focus on or how to spend our time, but if you had three different partners, it could be difficult to make those decisions (if need be, obviously if you can finish all the labs then you are fine haha.)

However, my intention in writing about the labs is not to scare someone away, or to say that the labs are bad or anything like that. It is more so a reflection of how the labs went for me, and being realistic with the workload on how it was for me, since different people (as has been mentioned frequently) can have different opinions on the difficulty and length of the labs. Moreover, the labs actually are interesting in and of themselves, or at least what we are trying to implement 😅

God’s faithfulness

This is related to the labs, because I think all of the work, thinking, and difficulties with the labs contributed to making the term difficult in different aspects. Frustration and not being able to determine the “end” of a lab meant that I did not know how much more time I might need—would I ever finish?? (in some cases, no!) Yet somehow, made it through each lab. Literally, there were many times where I had no clue what I was doing, but somehow something worked.

Also, this term I tried to keep the Sabbath as a spiritual discipline. Originally, I thought it would be alright since the term would be smooth and relaxed, because it was a spring term (oh how wrong I was!) There were times though where I was not able to do a full day of Sabbath, and could not bring myself to let go of the extra “time” I may have had in the Sunday afternoon. Like, if church was already in the late morning, so coming back from church and having lunch, probably around 1pm, 1:30pm, and then you have half a day or so, but realistically probably stop working at 5 or 6pm, how much extra time do you gain from that half day?

And so I could not lift that up to God on certain weeks—I was like “I reallly don’t know how long this lab will take, and so I may need that half day”—and there were times where I really did use the rest of that Sunday until the night to work on the lab. But that is not really the point of any spiritual discipline, doing it when it is only convenient to you—otherwise it is not a discipline! haha!

And yet through all this, God remained faithful, both in the ways I saw Him work through my experiences and trials this term, through the people He placed along the way, but also in His promises and His love towards us, which are always held because He is unchanging. I will fail, and I will fall short, and I will think I have the control, but God will never fail, He cannot fall short, and He is always in control.

If we confess our sins, he is faithful and just to forgive us our sins and to cleanse us from all unrighteousness. 1 John 1:9

For I the Lord do not change; therefore you, O children of Jacob, are not consumed. Malachi 3:6

(This verse from Malachi I only was reading very recently at the time of this post, and not during the 2B term, but I thought it was relevant.)

First fully in-person term

Oh yeah, this was my first fully in-person term, so maybe this is similar to previous terms, but I would not know given they were either fully online or hybrid. So a disclaimer of sorts 😃

e7-chromatic
A nice sunset reflection after working on a 252 lab in E7.

Future reviews

For anyone who wanted a review of 3A and 3B, I apologize in advance- since I am on exchange, I will be writing about the courses I took there, which are not the Waterloo ones. This means I get to skip out on ECE 350 (hehe), which I do not know how it will compare to the one I am taking abroad (hopefully not as loooooong as ECE 350.)

I do have to take ECE 318 and ECE 327 when I come back for 4A, so those 3A courses will be covered some time in the future.

Final concluding thoughts

That was a lot for concluding thoughts, but needless to say, there was a lot going on already with school during 2B, and we only covered some of that here, of what I can remember. Despite only covering some of the stuff, this was still a very long read (sorry!). I also tried to include some more pictures, hopefully makes it more interesting. Captions are fun, and I have not found a better way yet than using a Markdown table, so bear with me on the appearance for now 😅

If you have 2B coming up or are going through it, all the best!

See you around :pencil2: