Now that finals are out of the way and that majority of the marks are out, I’m finally done 2B ECE! This term was, surprisingly, quite relaxing, compared to what I call the hell term. But don’t take this for granted: the work and material are a lot more difficult than the material in 2A. Now that the term is over, I should probably go through a review of the 2B term.

Before I go on and talk about the term, it’s important to remember that when you reach your 2B term, you begin to specialize in the program that you applied for in ECE. Up until the end of 2A, Electrical Engineering and Computer Engineering students share the same courses. From a general overview, Electrical Engineering dives more into the physics of electronic devices and power systems. Computer Engineering dives more into operating systems, compilers, digtial/analog interfacing, etc. That being said, there are still a couple courses that both programs share. Therefore, the courses that I will be talking about in this post will definitely apply to all CE students, but not all will apply to EE students. For a detailed comparison, check the undergraduate calendar.

ECE 207 – Signals and Systems

This is one of the two courses that is shared between CE and EE. Despite its catchy course name, this was no more than a slight extension of ECE 205 from 2A. You start off by learning about continuous and discrete time signals, and the different types of general systems (linearity, time invariance, causality, a combination of the three). You then go into the stuff you learnt in ECE 205: solving differential equations, systems of differential equations (this might be a MATH 215 topic), etc. From here onwards, majority of the material will be from ECE 205 – dirac delta function, stability, Laplace Transform and its properties, Fourier Series, and lastly the Fourier Transform and the various properties. You will also learn about the Z-Transform, which is similar to the Laplace Transform, but for discrete time signals, and the Linear Difference Equation (analogous to the Linear Differential Equations). Despite that this course resembles a lot from ECE 205, ECE 207 does give some examples of how these are used in various applications such as electrical circuits, image processing, communications, control systems (more about this in upper years!), speeding up and slowing down audio signals. These are very interesting applications, but unfortunately this course has more emphasis on the math, so I found this course very dry.

ECE 224 – Embedded Microprocessor Systems

This is one of the two  courses that CE students take in 2B. It is also taken by EE’s, but in their 3B term, and by Mechatronics Engineering in 3A (offered as MTE 325 for them). In this course, you will learn about synchronization and how we can achieve this. We then branch into how the underlying circuitry handles IRQs, as well as parallel and serial interfacing. We also learn about Error Detection and Correction in the data transferred between two devices. We also learn about general analog-to-digital (ADC)  and digital-to-analog (DAC) converters. We then talk about data transfers, bus arbitration (a method to determine which device we give bus access to), and direct memory access (DMA). In each of these topics, it pulls concepts from various courses such as general op-amps from ECE 140, transistors from ECE 240, digital logic from ECE 124, and various programming knowledge from past programming courses. Therefore it is important that you understood the concepts from those courses. This is a pretty interesting hardware course for those who wants to go into embedded systems.

For the labs, you will be using the Altera DE2 boards that you used in ECE 124. You will implement your own hardware system using a software called Quartus II. You select various components you want to use and build your own Nios II embedded processor, which will be loaded onto the Altera boards. To program the board, you use a Eclipse-based IDE called the Nios II IDE. It is here where you write code in C to set up the processor to respond to hardware interrupt requests. For one of the labs, we implemented a music player with various playback modes (normal speed, half speed, double speed, channel delay, and reverse). Feel free to check out!

ECE 242 – Electronic Circuits II

Just like what I said about ECE 240 in my 2A post, it is important that you have a solid foundation of the material from ECE 240 and ECE 140 in order to succeed in this course. Trust me, the course starts off very quickly, assuming that you know your stuff from your previous analog circuit courses.

This is the second course that EE’s and CE’s have in common with each other. This is also the last mandatory circuit course for both programs. Continuing off from where you left off in ECE 240, you learn about current mirrors using MOSFETs and BJTs, and the various current mirror configurations. You then dive into the differential pair, where the output voltage is the difference between two nodes. In both current mirrors and differential pair, we go through the different amplifier configurations and analyze them as appropriate. You then go into one of the killer topics in this course: the multistage amplifier, which pours in all the concepts you learnt from ECE 240 and the past couple topics into an amplifier, where the output of one feeds into the input of another. This might sound easy, but when all you have is just MOSFET or BJT elements, it becomes tricky to figure out on paper. Afterwards, you learn about frequency response, in which you learn about the a modified small signal model for high frequency responses. You will also be using bode plots to determine the stability of a circuit. You will then learn about feedback from a general perspective, and how it applies to amplifiers. The course ends with a quick introduction into digital circuits, and how the logic expressions can be built with transistors. To me, the concepts from this course is rather straightforward, but applying the math can be ugly, especially when dealing with multistage amplifiers. Most of the time, its just a matter of finding ways to simplifying the circuit, and applying the small signal model to solve what’s required.

As for the labs, you will generally be investing one of the topics that you have learnt in the lectures. There is one lab where you are to design a multistage amplifier that satisfies various requirements. This lab is definitely one of the tricker ones, and its best that you use a circuit simulating tool such as Multisim to do all the analysis for you.

ECE 254 – Operating Systems and Systems Programming

This is the second course taken by only by CE’s, but EE’s are welcome to take this course to count as one of your technical electives. Anyways, this course starts off introducing the general OS structure and how it handles all the additional abstraction. This allows software developers to focus purely on application code, and not worry about whether or not the code will execute if the code was to be executed on different systems. We then go into learning about processes and threads, and how they are implemented in C in the UNIX environment. We then learn about deadlocks, semaphores, and synchronization, and how to avoid deadlocks from happening, as it results in the system hanging. Afterwards, we then talked about memory management – how memory is allocated and the various algorithms that go with it. We also talked about how caching and virtual memory worked. Finally, we talked about process scheduling (when to schedule processes to run) and how the OS select the next process to run, and how the file system worked in a UNIX environment.

The labs in this course are divided into two parts: the first part was to implement a task manager on the Keil MCB 1760 board that you used in ECE 222. The second half was just two programming assignments, one was to implement a producer/consumer problem, and the second was to implement two of the specified memory management algorithms. All code for the lab is written in C.

Here are some of the outputs of the programs written for the labs. On the left hand side, this is the memory management lab, where we implemented the best fit algorithm. On the right hand side is the producer/consumer lab, where we have producers produce a bunch of data for the consumers to read and process that data and print it to the console.

Screenshot from 2015-12-29 00:36:02

MSCI 211 – Organizational Behaviour (OB)

Aha yessssss! My first freaking elective in ECE!!!! You don’t know how long I waited for this elective!!

(Well, maybe you do, if you just add up the number of terms I’ve spent in this one hell of a program… 😛 )

BUT ANYWAYS, yes, this is OB. I took this course so that it satisfies one of the four CSE requirements, and to double count it for the MSCI option.  I took this course online, which meant that I only had only four courses that I had to attend class for. For those who took some sort of psychology course in high school/university, this is just essentially organizational psychology, where we learn about how people work with each other, regardless if it is within an organization or not. There’s a lot of things that affect OB such as ones perception, personality, emotions, values, communication, leadership, decision making, and the organization culture. There’s a lot of theories associated in each unit.  It goes to say that I gave very little attention this course because of the structure of the deadlines, and its probably one of the birdiest courses in UWaterloo.

Other Milestones

Work Term Report – For my program (and specifically, my stream), 2B is the recommended term where you submit your first work term report.  There’s certain guidelines as to how to complete the report (e.g. must incorporate some sort of “engineering judgement”). It’s rather straight forward, but it was really difficult to find the motivation to complete it during the work term. But nonetheless I manage to finish it (and pass it!) just in time before Orientation Week and Hack the North 🙂

Technical Presentation Milestone (TPM) – so there’s this thing that ECE and SE students have to do when they reach their 2B term: give a 12-15 minute presentation about a technical topic. It needs to follow a similar flow as a work term report, but doesn’t have to be based off the stuff done on your work term. I didn’t bother researching new topics because I didn’t have the time, so I did my presentation based on the data from my work term report. (Note: I believe SE students have to do it based on their work term, not 100% sure. Search up the regulations for the TPM if you are a SE student reading this. Why would you be reading this anyways?)


Annnd there it is: 2B ECE! I really enjoyed the lab materials this term, especially for ECE 224. Besides the academics, I had a lot of fun being an orientation leader for the incoming engineering students, as well as participating in Hack the North (yes, I know, I haven’t written the blog post for these events yet…I’ll get to it!!). Now I’m looking forward to my next term, and then 3A in the spring!

David Vuong