So I know this post is basically a year late (sorry!), but better late than never? Let’s just say that there was propagation delay within my brain to actually get this done 😛
There was a train of events that happened since the completion of this term, which basically delayed everything…until now! So, let’s get right into it!
Before I actually get into the courses, let me talk about what happened since. I’ve gotten through 3A and 3B (post to follow!), completed my 5th co-op (my first co-op in hardware!), and now I made it to 4A! It really seems like a journey even though 3A was literally a year ago. It’s been a roller coaster of events in terms of finding coops, finding housing for my coop (don’t leave it to the last minute!), etc. As of now I still have not submitted my last work term report, so I need to get on that.
So, since it’s been a year, I probably don’t remember the nitty gritty details of each course, but I will do my best to summarize it for you. I just finished 3B CE so there will be another post to follow. Again, this is only for 3A Computer Engineering; I have not taken any Electrical Engineering specific courses so I cannot comment on that.
ECE 316 – Probability Theory and Statistics
Before I get into this course, let me just say one thing: F*** ECE 316!
This is one of two courses that is shared between EE’s and CE’s. It is your introduction to probability and how to determine the probability given the circumstances. You start off by reviewing the basics of combinatorics that you’ve learnt way back in 1B (ECE 103): permutations and combinations, binomial theorem, etc. Now, using that, you learn how to calculate probabilities and applying different axioms of probabilties that you need to help simplify probability problems. And then there’s conditional probability, which is basically something like “What is the probability of this happening GIVEN that something else already happened?”. You also learn about Bayes’ formula, law of total probability, etc.
Then the course shifts gears and get into a little bit of basic statistics stuff, and where the real fun (hell) begins. You learn about discrete and continuous random variables: PMF (probability mass function), PDF (probability density function), CDF (cumulative distribution function), expectation, variance, standard deviation, and different random variables (Bernoulli, Poisson, hypergeometric, uniform, normal, gamma). I’m sure you’ve heard about profs talking about curving the final grades and all, or the standard deviation for the final. You will now understand what they are talking about.
The course then shifts gears again and where things are beyond hell (for me). You learn about Joint Distribution Random Variables, and the properties of expectation: covariance, variance of sums, correlations, conditional expectation, conditional variance, and lastly the moment generation function. This is the point of the course where everything was just a blur to me; I wasn’t comfortable with random variables, and now I’m thrown into this stuff. Despite me doing my best and trying to understand what is happening, it just didn’t work. My professor wasn’t that much better in teaching the material as well.
Unfortunately, I failed ECE 316. My final grade in the course was so low that I wasn’t allowed to write the supplemental exam (retaking the final exam to clear the failure). This means that I will need to retake this course sometime in the future in order to clear the failure. This really threw a wrench into my term and cumulative average and really screwed me over in more ways that one can imagine, which you will see in future posts.
ECE 380 – Analog Control Systems
Aha, control systems. This is the second course shared between CE’s and EE’s. It is your first course in controls and it heavily relies on previous math and signals courses (ECE 205, 207, MATH 215). It starts off with a quick review of complex numbers and Laplace Transforms (heavily used in this course). The entire idea of this course is depicted in the picture below:
A control system has mainly four components shown above. The input and output are (in the context of ECE) electrical signals that you are reading/outputting. The plant is the system that other engineers have built, and the controller is what this course is about: trying to control and produce signals to feed into the plant in order to get the desired output. As an example, Say that your plant is represented by a car, and you need to build a cruise control system. We can implement this by creating a speedometer (which is the controller). The input signal can be represented as how fast the car should be moving, and the output is how fast the car is moving right now. We have a feedback loop in which the car speed is subtracted from the desired speed. This is called the error, which shows how much we need to get to the desired speed. If the error is large, the speedometer will increase the speed of the vehicle by outputting a “speed up” or “speed down” signal to the car. This is just one of many examples in which control systems can be applied. ECE 242 gave us a brief introduction into this sort of stuff, so that will give you some flavour as to how control systems is applied in ECE.
Now, specific topics that are covered in this course are as follows: LTI systems (ECE 207), bode plots (ECE 240, 242), step responses of systems, properties of feedback, tracking, PID controls, root locus, and stability. This might not seem like much, but trust me it is a lot of material. As per the lab components, you will implement circuits to understand how control systems work and how to meet your desired specifications of your system. Overall, I think ECE 380 was one of my favourite courses, and I wish I can take more courses in this field as my TE’s, but I don’t have space for it. 🙁
ECE 327 – Digital Hardware Systems
If there was one thing that I remember from this course, it is one thing: VHDL. This is one of two CE specific courses. This course begins with a review of VHDL constructs that you may have learnt in ECE 124, which you probably have all forgotten so it’s nice to have a review on that. You then review about what is synthesizable in hardware and what is not. You then learn about different RTL designs using state machines (one hot encoding, parcels, memory, etc). The course then follows more about dataflow diagrams: how data is propagated through your hardware, minimize the size of the hardware, etc. You then learn about pipelining (ECE 222) where you take your dataflow diagram and pipeline it so that you get more data being pushed out per each clock cycle. You conclude by learning what I call the “three pillars of hardware”: performance, timing, and power. Performance is obviously how well does your hardware meets the specification. Timing deals with latency and propagation delay, Elmore delay, etc. Power is about the power consumption of the hardware and the different kinds of power that one can have.
In term of the practical component of things, there are 3 labs and a project. The labs are worth very little, and is meant to help build up to the project. The project that we had was to implement a Kirsch Edge Detector in VHDL, so generating a hardware to determine the edges on an image. It was really cool: we took everything that we learnt (dataflow diagrams, pipelining) to generate a piece of hardware that would do such a thing. Though it would’ve been much easier if we used C, but that isn’t the point of the course. I wish there was some sort of example that I can show you, but I lost all that information when my phone crapped out on me 🙁
ECE 351 – Compilers
This is the second of the two CE based courses. This will be a theoretical course, with some OOP projects where you implement the concepts in Java. From the theoretical point of view, you learn the different classifications of different grammar. A simplified hierarchy of the classification is shown below:
Everybody at this point who would have done some software co-op would understand regular expression (regex). This can be modelled using a state machine (NFA, DFA). As long as it can be modelled by a state machine we can say that it is a regular expression. There are certain things that you can’t really express as a regex, so you move into the context-free range. Now, I don’t remember the nitty gritty details of each classification, but as you can see, as you expand your ranges, you get into a lot of complexity. You also learn about some optimization techniques that compilers tries to do, as well as different storage mechanisms.
In terms of labs….well I probably shouldn’t call them labs; they are really just programming assignments really. You don’t really create a compiler. Rather, you implement some theoretical components that we learnt in the lecture and using Java, parse a predefined language and output the result of the parser. That’s really all it is. But more specifically, these are just the toy model of the VHDL compiler that ECE 327 uses. This course is a nice refresher on OOP if you haven’t done much of it since 1st year, as well as some advanced OOP concepts.
ENVS 200 – Field Ecology
Aha yes, my elective. So I think I wanted to take ECE 209 (Materials course that EE’s take in 2B) but I couldn’t get in. I also wanted to do Quantum Mechanics but that conflicts with a lot of my labs/lectures. I also wanted to finish my List 1 NSE as soon as possible. So my only choice was this course.
So, what did I learn in this class? Well, its like your typical geography and biology class, except that it’s less in depth. You learn about birds, landscape, why/how things we do affect the animals, etc. There is also a lab component to this! In labs, you would go out into the field and collect samples and bring it back to the lab to analyze. There are also field trips during your lab session to go into the neighbouring parts of Waterloo and learn about the environment there.
It’s overall pretty straight forward, and the labs are pretty fun. So if you are looking for a simple List 1 NSE, I would recommend this course.
Well, there you have it: 3A in a nutshell. It is really unfortunate how ECE 316 turned out the way it is now. 3A in general was really weird: I was dealing with a lot of problems in terms of my co-op housing issues, family issues, and ECE 316. It was the term where I was really scared that I wouldn’t have passed the term, which induced a lot of stress. This was definitely worse than what I went through in 1B. Even until today, I am very thankful that I got the necessary average to pass (just barely too!) so I don’t need to fall behind because not only you will be graduating later, but you will be separated from your friends that you have made since first year.
Now, that being said, just barely passing the term doesn’t mean that it’s all good. Because I failed ECE 316, I now need to clear that failed course in a future term, which means that I need to use one of my future elective slots to take it again. This really screws everything up since I sorta knew what I wanted to take coming into 4th year, but the impact of failing this course really messes everything up. I will have to free up an elective by taking it over co-op or overloading my term, which you will hear more about my adventures in a future post about overloading.