Courses I have taken in Waterloo as Computer Engineering major, and some comments.

I just wanted to comment on every single course I’ve taken so far in Computer Engineering. I’ve been asked by some people – a few in high school coming into ECE, and a few friends not in ECE, regarding how I feel about my university career.

Note that the ECE curriculum has drastically changed since 2010, so don’t expect the identical courses in this order. There were a lot of shuffling the order of the courses for the first two years, introduction of new courses in 1A 1B, and ECE 100 has been split into two.

Also note that for 1A-3B, unless I say a course is an elective, it’s a mandatory course for CE.

Some background information:

I went to high school in BC, hence my bitterness toward Ontario-centric curriculum.

All my co-op positions have been in software. I never had a single EE job.

I don’t plan on going to grad school, for now (because if I wanted to, I would have done the 6-year accelerated program at Waterloo).

1A (Fall 2007)

1A was an easy term if we’re talking about just courses here. I wasn’t sure how much I was supposed to study in university, so for my first set of midterms, I studied for weeks. It paid off, but I don’t think I ever put that much effort into midterms (or any other exams) ever again.

CHE 102, Chem for Engineers

This is the easiest course I’ve ever taken, ever. I learned most of the material in grade 11 chemistry (not even grade 12). Midterm and final were purely multiple choice, so that was quick and simple.

ECE 150, Fund. of Programming

The course should have been easy, but I didn’t put much time into the actual course material and relied on my prior knowledge for exams. The assignments were time-consuming (to 1st year standards) but doable. This course was taught with C#, which is not really common in uwaterloo – ECE and perhaps SE were the only departments that teach C# to first year students. I still believe that they should have taught us C in 1st year, because CE students will hardly ever use C# in their courses.  Although, many people listed C# on resume for the first couple years, and it was probably useful and enjoyable for few.

GENE 167, Intro. to Methods of ECE

This has nothing to do with methods of ECE, it’s a generic “introduction to professional engineering” course, a required course the sake of being accredited as a proper engineering program. It had heavy focus on information specific to P. Eng. in Ontario. The course was marked based on something like two “mock work term reports”, and multiple choice quizzes regarding what we read about engineering practice, such as ethics and law.  We also had some sessions to help us do resumes and interviews during the first term.

Side note: although I knew I was going into a co-op program, I was not aware that I have to do co-op in my second term. This means that during the third week of school, I had to apply for jobs, and do interviews right after. I assumed that co-op starts in second or third year like in many other Canadian universities, and I thought that not getting a co-op job means you just try again in later terms… oh boy I was wrong.

MATH 115,  Linear Algebra

I had a hard time with this course, while the majority of the class did not. I found out after midterms that linear algebra is taught in Ontario’s high school in grade 12.  In BC, it is not – not even basic matrix multiplication.  Although, only the basic material up to the midterm is prior knowledge for Ontario students, so after the midterm, it was hell for everyone.

MATH 117, Calculus 1

Repeat of grade 12 calculus with some proofs thrown in. I don’t remember much about this course, other than the moment during the midterm when I forgot some trig identity and failed to present a proof for some other trig identity.

PHYS 115, Mechanics

This course is notorious for Oktoberfest – the hardest midterm in 1A. The material taught in class is not too advanced when compared to high school physics (classical mechanics), but the midterm was like a physics competition. For example, here’s a wooden block on a surface with friction, attached to another block with some spring, hanging from a frictionless pulley, what is the velocity of the first block?… you get the idea.

Continue reading “Courses I have taken in Waterloo as Computer Engineering major, and some comments.”


reddirect: selectively disable reddit toolbar

Update 2:

This is not for Chrome extension “Reddit companion”, but rather for the old iframe-based reddit toolbar still used in short URLs.


Release 0.2 is available.  Chrome’s auto-update should handle it, but if it fails, please try installing again from the new link.

It fixes an issue that allowed blank lines in the Options page, which matches everything.  It will now trim and remove blank lines upon save.

Chrome extension for automatically turning off the reddit toolbar.  Weekend project that took several hours.

Warning: I only tested on my machine – 9.0.597.45 beta, Ubuntu 10.10.  You can see all the source code – it doesn’t do much so not much can go wrong, but use it at your own risk.

Google Code page is here.

Download it here.

Reddit toolbar is nice and all, but some sites don’t like being nested in a frame, which is the method that reddit toolbar uses to overlay the toolbar over target web pages.

For example, reddit toolbar doesn’t work with Twitter, StackOverflow, Flickr, and lately YouTube – when YouTube started to not work, I got a bit frustrated with manually clicking on [x] button to view the video.

Uses reddit JSON API to fetch the target URL before anything loads on*.  I tried doing it by going through DOM to get the target URL and doing a redirect, but this method ran into problems with JavaScript embedded in the target URL tried to do its own redirection.  Flickr was the worst offender.

I provide a default set, but you can configure the whitelist / blacklist in extension options.  Go to Chrome’s Options (wrench icon) -> Tools -> Extensions -> reddirect Options.

If you want to test it, go to the following URLs and click on some links:


  • optionally show the reddit submission title and provide a link to the comments page (like what the toolbar is supposed to do)
  • allow regex matching instead of just substring matching (indexOf)
  • prettier UI for the settings page.
  • try to work around that annoying alert() dialog displayed by StackOverflow. grrr…
  • icon.

Workaround for UL30 (UL30A-A2 and others) brightness keys in Ubuntu 10.04 (Lucid)

EDIT (2011-05-11): this should also work for 11.04.

With some models of Asus ul30 family (mine is ul30a-a2), brightness hotkeys don’t work properly in Lucid.  They change the brightness somewhat randomly, also sometimes causing ACPI to “freeze”.

The actual bug is here:

The (temporary) workaround, originally from here:

Edit /etc/default/grub as root
Find, and change this line : GRUB_CMDLINE_LINUX=”acpi_backlight=vendor”
call update-grub as root, reboot.

Since not being able to run popular distros can be a dealbreaker for laptop buyers, here’s a summary of my experience with this laptop:

Question: How well does Lucid Lynx run on UL30A-A2?

Answer: Flawless, except for the brightness key bug mentioned above and screen flickers, which also has a workaround.

Proper forwarding and filtering from UWaterloo engmail to gmail

Warning: Engmail may fail to forward items on time, in extreme cases, taking up to 2-3 days or even completely fail to forward at all.  Do not rely on this to manage your school email – I am not responsible for missed e-mails because you failed to check the actual UW account through getmail.

  • Log into
  • Click on Deliver/Divert/Forward
  • Check “Foward mail to”, enter your email address with the gmail’s + sign hack. For example,
  • Go into your gmail.
  • Create a filter.  For the field “Has the words”, enter:

with the correspoding email address you set up previously.

Now you can properly label and organize your forwarded emails.

Getting uw-secure to work with Ubuntu 10.04 (Lucid)

Right click on wireless icon, Edit Connections.

Click on Wireless tab.

Find uw-secure, click on Edit.

Fill in the following information:

Security: WPA & WPA2 Enterprise
Authentication: Protected EAP (PEAP)
PEAP version: Automatic
Username,Password: Your UWDir username, password

If you can’t use uw-secure for some reason, uw-wireless is OK too. One caveat is that you must use Firefox to authenticate first before accessing external (outside domain) websites – Chrome doesn’t seem to bring you to the login page.