Sunday, 24 February 2008

computer science honours at uct part 3



Computer Science Honours at UCT: Part 3

This is part 3 in my review of the CS honours modules at UCT. Read

after reading part 1 and part 2.

Distributed Computing (DC):

There's confusion over the name of this module. It is often referred

to as Distributed Components -- the notes say Components, but the

official name is Computing. It's lectured by Ken and well, yes, it's

not the most thrilling lectures you will attend. I just attended

lectures, but never took it for credits so I skipped the assignment

and exam. There is so much theory that is covered in this module. It's

all thrown at you in huge chunks and it's not easy to consume. Most of

the class take DC, but I'd be hesitant to recommend it. It's too much

of this RPC stuff such as Corba and DCOM and then stuff on COM+, .Net

and EJBs.

The assignment was on EJBs and I remember everyone scrambling to

figure out how to get JBoss and EJBs to work! For those of you doing

it next year, Sean posted some HOWTOs which seemed to be very useful.

Ken, as in the past, kept pushing the deadline back and the demos were

only done last month (for a first quarter module)!! Now this may sound

cool, but it's not when you consider that it ends up interfering with

the other assignments. Last year he never marked it -- everyone who

handed in got 100%. The exam was apparently rather hand-wavy. So, up

to you, but I don't recommend taking it.

Interaction Design (ID):

What is CS at UCT without lectures by Gary? He's simply the best at

lecturing in the department, no doubt about it. I would usually be

completely deterred from an HCI course as I find it mostly fud, but I

could never miss a Gary lecture. He goes into all sorts of things to

consider when designing an interface and shows cool video clips that

keep you interested and add to the lectures.

This is another course I only took the lectures for and nothing else,

and I think it was a good decision. Most of the class take this

module, but unless you're good with design (and I'm not!) the

assignment and exam are finicky. The assignment was about building a

paper prototype for an RFID tag reader for a cell phone. You then had

to implement a prototype that just simulated the interface without

requiring functionality and write a report on it. The exam was

apparently fairly decent and it's usually based on case studies, which

means lots of writing.

Effective Virtual Environments (EVE):

EVE was an interesting module and I'm disappointed I had to drop it

after two weeks. All the really good modules were run concurrently,

which was a pity. EVE lectures are more like discussions on beliefs

than lecturers -- the content covered is very much dependent on what

the class finds interesting. It's taken by Edwin, who actually does a

good job of the course. I was very surprised at the low numbers that

took this module as I'd recommend it above other modules such as DC

and NIS.

The course changes drastically year-on-year. Edwin tries to remove the

need for an exam by pumping up the practical workload, although if the

class prefers an exam he is willing to sway. This year there was one

big assignment split into three and a essay on some papers. The

assignment was about using Erlicht, a 3D games engine, to design a

putt-putt course. The first part was a design document, which was

fairly lengthy. Then you had to code it up using Erlicht and you were

marked based on how closely your end product tied in with your design

document. The final part was to test a hypothesis such as "Do textures

increase presence?" You're told to get six test subjects, although you

will never get a significant result with such a small number, so

please get more people next year. It's not that difficult!

Databases (DB):

DB is lectured by Sonia and it is the only module for which I never

attended a single lecture. That should sum up my interest in databases

at such a level. The content is rather boring, although it's easy

marks, mostly covering object relational databases such as Oracle. The

class is usually fairly large, although I can't stand taking a module

just for easy marks. Half the lectures were paper reviews presented in

groups for marks. The exam is fairly easy apparently.

Can't say much more here, best speak to someone who did the module.

Computability and Complexity (CC):

Computer Science courses are very practical in nature, that's not

going to change. However, I feel that it's necessary to break away a

little. That's where the Mathematics of Computer Science modules come

in. They're highly theoretical and have little practical application.

You need a strong Mathematics background to get through these modules

as not only is the content pretty tough, the pace is insane. Ever had

a Maths lecture with slides? With CC, every lecture is based on slides

- even the nasty proofs!

The module is lectured by Vasco Brattka, the best Maths lecturer I

have ever had! He has a list of the course contents available here. He

also has the course slides and tutorials there, but they are password

protected. If you're considering the module then I can give you the

password, although I'll have to do so privately. All the Maths modules

are four credits, so they cover a lot of work. You get one period a

week dedicated to discussing the tutorial questions before you have to

attempt them. They can be tricky, although the help in lectures is

decent.

The class is mixed with Computer Scientists and Mathematics honours

students. This year only three of us CS students took the Maths

modules along with two Maths students. The computability stuff can be

scary for a Computer Scientists, especially when the Maths guys catch

on fairly well. The module is packed with proofs, including some that

were open standing problems for decades. The proofs in the complexity

section are more algorithmic and so it switches around to the CS

students understanding better. The module culminates in showing why

the P-NP problem is so hard and that under certain assumptions is

provable to be unprovable either way!

The exam is slightly easier than the tutorials, although it is closed

book and therefore rather challenging. However, if your Maths

background is strong it's not so bad. I would definitely recommend the

module to anyone that majored in Maths. Since it's a four credit

course it gives you more choice with what CS modules to pick from and

lets you get away without doing the crappy assignments. I still

attended many of the lectures for the other CS modules, although it's

nice having the comfort of dropping out of the ugly ones.

Cryptography and Complexity (Crypto):

Vasco used to offer a Quantum Computing (QC) module, which expanded on

the work from CC. However, he went on sabbatical for the second half

of this year and so it was replaced by a new course. If QC returns

next year, and it most likely will, it might replace this course.

Although I never got to do QC, I've heard from previous years that it

is very good and if CC is anything to go by I can believe it.

The new Crypto module was split in two parts covered by different

lecturers. Christine Swart took the first half, covering topics on

public key cryptography. There's a lot of number theory involved, so

don't expect it to be like a CS module. It's fairly practical compared

to the rest of the CS of Maths modules. You learn all about

factorising very large numbers efficiently and showing that cracking

the RSA algorithm is equivalent to factorising such numbers. The

Diffie-Hellman key exchange is also covered and it's shown that

cracking it is equivalent to the discrete logarithm problem.

Holger Spakowski takes the second half, covering topics related to

complexity of cryptography. This section goes back to where Vasco left

off in CC. It's all about probabilistic algorithms that can be proved

to produce the correct answer with a given probability. From this the

concept of probabilistic Turing machines are developed and this leads

into a whole new area of complexity classes. This then leads into

proving various classes equivalent to one another and a number of

inclusion relations. It gets highly theoretical, although it's a great

module for those interested in Mathematics and Statistics.

Christine was very bad with the tutorials and we only had one that was

marked in the end. Holger gave us three, which were fairly challenging

as a Computer Scientist. The exam is next month and since it's a new

course I can't comment on it. Overall I would recommend the course.

The cryptography section should appeal to a larger number of CS

students than CC. The major problem with this course is that the

second half continues into the project time. So while the rest of the

CS class is enjoying no lectures to work on their projects you have to

worry about tutorial hand-ins and so on.

Summary:

So I've summarised my experiences of the honours modules and given my

comments for you. Make sure you've also read part 1 and part 2.

Remember that this is just my thoughts on the modules and that I have

very different interests to many people. If you're going into honours

I expect you to take what I said with some common sense.

Take a look at the Graduate Handbook, especially the section on the

modules as they provide module descriptions. Bear in mind that the

modules on offer are likely to change next year, so don't go out of

your way to settle on a selection. If you want to decide early try

find out from Anet who will be the honours course convener next year

and ask that person what the module list is looking like. You may also

find that looking through my exam archive might help ease the

decision.

Something that no-one mentioned to us last year and that I found

critical was that your choice depends largely on the timetable. You

can get our timetable here (with ITE added in at the same time as

Agents, GA and II). As you'll see, many of the content-heavy courses

such as DC, DB and ID are all grouped together at the same time, which

makes it difficult to skip them all. I think the basic timetable

remains the same each year, but make sure by asking the course

convener.

The way I personally tackled the decision was just to attend all the

lectures. For each module I attended at least a quarter of the

lectures and by that time we usually got through enough to understand

what the assignment involved. If the assignment looked icky, I dropped

the course, otherwise I continued with it. It might sound like a lot

of extra effort, but you're there for some lectures so you might as

well just check the other maybes out. I found it worked really well as

I got to choose given first hand experience of what the lectures were

like. After four lecturers you generally get a gut feeling. You just

have to make a rough selection at the beginning of the year, which can

easily be changed any time by notifying your course convener.

So that's that! If anyone wants to chat further, I'm only around until

mid-November. I'd be happy to have to discuss it though as it's a

crucial decision. Very little word goes around about what the modules

are like since most people ask so late. I might add another post on

the honours project, but I need to know who would be interested? If

you want to hear my thoughts on the project or anything else please

let me know.

Posted by marco at 10:25 PM


No comments: