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:
Post a Comment