Wednesday, January 9, 2008

The "COMP 4804" Debate

There has been a bit of debate going on at our School of Computer Science for a while now. The big question is whether a fourth year algorithms course should be or shouldn't be included in particular streams of the Bachelor of Computer Science degree (for example, the game development stream). The argument is that the more applied areas of computer science have too much else to learn, and that these more difficult courses may be scaring students away.

Personally, I think it should always be required, since it is the stuff at the heart of computer science in the first place!

Before we go any further, let me share with you the calendar description for the course:
COMP 4804 [0.5 credit]
Design and Analysis of Algorithms II
A second course on the design and analysis of algorithms. Topics include: advanced recurrence relations, algebraic complexity, advanced graph algorithms, amortized analysis, algorithms for NP-complete problems, randomized algorithms. Also offered at the graduate level, with additional or different requirements, as COMP 5703, for which additional credit is precluded.
Prerequisite: COMP 3804 or permission of the School.
Lectures three hours a week.

The last three points are what the course focussed on most when I took it (I believe some of the subject matter has been shuffled between the always mandatory COMP 3804 and this course). I honestly cannot imagine any computer science degree (which, it should be noted, is very different from a software engineering degree or a computer programming diploma) being complete without an understanding of these topics!

The pure-theory algorithms folk at school will naturally tend to push this course as mandatory, as it represents everything they do. But the professors who work in more applied subjects should care just as much! At the end of the day, everyone needs algorithms to accomplish their tasks. And nobody is immune to encountering problems that can be solved efficiently using approximations or randomized processes, or perhaps even problems that can't be solved efficiently at all!

Imagine the time that could be wasted on trying to solve a problem that ends up being NP-complete. If you don't know how to recognize it as such, you might hammer away at it until you realize you have too much data to crunch and not enough time to crunch it in. It's not that unlikely, no matter the domain!

Of course, if you do go to grad school without this knowledge, you will be at a huge disadvantage. I've attended only one computational geometry class so far this year, and already randomized algorithms were used to solve the very first example. Having taken COMP 4804 made all the difference in understanding what was going on right away rather than having to struggle to figure it out later on. The weirdest part is that COMP 4804 isn't even required to get into grad school, and since many computer science streams (including at our own school!) don't require it, there's a pretty good chance that you just won't have the knowledge when you start your graduate studies.

What do you think? Have you taken an advanced algorithms class and loved it? Or do you think it really isn't always all that useful? Share your thoughts as comments!


Haz said...

I think its mind boggling that anyone would consider removing such programs. If a university wants to remove the theory, add the practical, and fine tune the skill set somehow - then do it but don't you damn call it a Computer Science degree.

It's odd how the people we (students) trust to know whats what (profs) can actually mistake the concept of computer science with computer programming...even if that is fueled by the promise of $$.

Any graduating student without the fundamental theoretical background that courses like 4804 provides would be destroyed in any respectable graduate program. If that's not the goal of the student, then they took the wrong undergraduate program.

End of story.

PS. Anyone sticking up for the 4804 at Carleton from the student side?

Gail said...

Couldn't agree with you more.

There are people sticking up for 4804 (like Pat and Jit as obvious examples). In fact, in the fall, it was brought up for, if I recall correctly, the security stream. It managed to be squashed for now thanks in part to these people. Some keep trying to remove it as a requirement but I know I for one will always vote against that (yay being a student government rep).

Haz said...

That was the same group that tried last won't last forever since the security group touts one of the strongest arms in the department.

...kind of unfortunate...

Gail said...

Definitely... guess we'll have to wait and see... here's hoping!

I remember saying at one of the meetings that even undergrad students, including those that don't necessarily perform well, don't want the requirement removed... that they recognize the importance...

Haz said...

Oh I've said that too...some profs just don't want to listen to it :p. Bottom line and all...

Anonymous said...

After 15 years professional IT, the most useful part of my truncated university education, that outlived the languages that died or morphed unrecognizably and the processors that quickly went from server, to desktop, to garden water timer applications as per Moores Law, the one thing that continues to be of use is the discrete maths and algorithms work. Being able to eyeball an algorithm and estimate its efficiency and being able to see the gaming potential of a Euler Walk for.. as the kids say.. the win

Post a Comment

Comments are moderated - please be patient while I approve yours.