Phil's Blog

Fall 2010 Semester in Review

by on Jan.02, 2011, under SFU

For once, I’m actually doing this pretty much at the expected time.  Will wonders ever cease?  On with the usual onslaught…

CMPT 454

Might as well get this one out of the way first.  Don’t take this course.  Was the teacher good?  Yes, he was quite competent.  He knew his material, explained it well, and went through tons of examples.  So why not take this course?  Because it is basically useless and mind-numbingly boring.

I was under the misconception that this course would take some of the things we learned in 354 (or, at least, should have learned.  See my review of last semester) and applied it.  I was wrong.  I see now that the description of the course has been changed since I registered for it.  This course is all about the inner workings of the DMBS itself.  Will you ever design a DBMS?  Probably not.  Will you use one?  Most likely.  Do you need to know if MySQL uses a B+ tree index or a hash index when doing operation foo or storing data of type bar?  Most assuredly not!

If you do plan on designing/modifying a DBMS, go ahead and take this course.  For us mortals, avoid it unless you want to spend hours counting the number of I/Os and page swaps for a given operation.  The last bit on crash recovery was actually interesting, but the only part of the course I was really looking forward to (and the only one that may be useful) was optimization.  Unfortunately, this part of the course was removed from our semester (presumably due to lack of time).

CMPT 379

On to the good stuff.

I have been looking forward to this course since I started my degree.  For those who don’t know, this is the compilers course.  Basically, you design/implement your own compiler (so, basically, you create your own language, if you think about it.)  This course takes you through every step, from the lexical analysis to the code generation itself. It is interesting, but it is also a lot of work.

Thankfully, my partner for the assignments, Ralith, is a) very smart and much quicker at coding than I am, b) already writing a compiler for fun (think about that for a while) and c) familiar with LLVM.  He asked for permission for us to do our project in LLVM, instead of the required MIPS assembly output.  Anoop agreed to this.  Doing this actually saved us work, with the added problem, however, that LLVM documentation is…bad.  Really bad.  Horrendous, even.

I actually think Anoop should switch the course to use something like LLVM.  It would make more sense than hard-coding all kinds of ugly assembly in your code-generation segments.  LLVM comes with a great IRBuilder that handles the ugly part for you and allows you to write much neater, more clearly organized code instead.

CMPT 405

To say this is not a particularly popular course would be an understatement.  The fall semester is traditionally the busiest semester (from my obvservations, anyway),  and there was a whooping 10 of us registered for this course after the first few weeks.  Much like 307 (see my review in an earlier blog post), I loved this course.  The volume of work produced in assignments is actually quite low.  The amount of staring-at-it-and-thinking-while-your-brain-breaks time, however, is huge.  Is this course applicable?  Depends what you actually want to do.  Will it teach you to think about problems in a different way?  Definitely.

Do you really need to know how to see if a problem is NP-Complete?  Probably not.  Are the techniques you learn to do so useful?  Without a doubt.  Learning to reduce a problem to an instance of another problem you do know the solution to is a useful skill that will serve you well.  This course will break your brain.  It will force you to think.  It will make you wonder why you are going through a particular problem for a few lectures until it eventually makes sense.  If you enjoy that kind of thing, take this course.

What’s next?

Next semester should be my last.  Taking CMPT 310, 371, 413, and 470.  Should be…interesting.



Leave a Reply

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!