Penguin

Note that the following are students' perspectives on these courses, and as such may be heavily biased, disillusioned, or even libelous. Neither WLUG nor the site maintainers accept any responsibility for the accuracy, relevance or legal correctness of any of these comments, as with the rest of the site.

See http://www.scms.waikato.ac.nz for an up-to-date official course description for all courses under the School of Computing and Mathematical Sciences. See WaikatoCourseNumbers for a description on how to read these codes.

Any references to lecturers that have taught a course in a particular year should be taken with a grain of salt, in that they might not be teaching the course the next year. Don't, for example, take COMP317 next year because you like Tony Smith, and Tony Smith taught it in 2002, and someone thought he did a great job of it. Do take COMP317 because its one of the best courses you can do in 3rd year, but be prepared for a different lecturer, who may perform better or worse than some people think Tony Smith did. Kinda obvious really.

As another, somewhat related, note, the comments relating to a particular course may be in reference to a particular year. The notes regarding COMP314, for example, relate to that particular year only. To my knowledge, most years Z has not been taught in that year. The rest of the stuff about drawing diagrams is correct, although I'd like to point out that real software is written this way.

Level 1 (First Year) Papers

COMP10{3A,4B}
The two compulsory introduction to programming courses. Taught using a mangled heap of C and C++. Many people believe this course should be taught in Java. Also has a concept side where CS topics such as logical operations, binary, basic sorting etc etc are introduced.
COMP123 The Computing Experience
Do not underestimate the workload of this first year bunny course. It is very popular with BA students. This is a good thing if you are a male ComputerScience student.
COMP1{30A, 34B} Programming {1, 2}
Similar to COMP103/104 but the focus is on Software Enginering rather than computer science. The major difference is that these papers have a lightweight introduction to formal methods and refinement of specifications. This course is taken by people wanting a BE in software enginering and scholarship winners. The COMP130 code used to refer to the paper Special Topics in Programming which is no longer offered.
COMP140 Foundations of Computer Science
A lot of stuff that sounds cool, but isn't. 140 is compulsory. Most of the smartest people I know failed it. It is unbelievably boring. If you can help it, don't go to any of the lectures, but go to all the tutorials. (Second opinion: this stuff is the closest you get to computer science (rather than programming) in first year. Learn this stuff the easy way or learn it later the hard way.)

Overall lecture attendance was low (10 out of 150+ students per lecture!). Those that did attend fell asleep, and even the cameraman who was filming the lecturer fell asleep at some stage! Hopefully this paper has improved in recent years. -- MarcelVanDeSteeg
COMP153 Practical Programming
VisualBasic programming for idiots. People who can't handle 103/104 do this paper, and continue onto 258. (Second opinion: great for people doing computer science so they can put together fancy MicrosoftExcel packages.)
ENEL111 Introduction to Electronics
Good paper, was a year long paper but now compressed into A semester.

Level 2 (Second Year) Papers

COMP201Y Computer Systems
an introduction to assesmbly language, taught using a full custom CPU and reference board. Used to use MIPS but was replaced to eliminate some nasties. Also covers basic compilation, OS principals, Memory Managment, Comms. Can be sat in 1st year by scholarship students. People doing graphics & multimedia wonder why they have to do this. Second best course you'll do behind 317 if you actually like computers.

Geeks love this paper, the other students hate it. If you've just done COMP103/104 then you might be in for a bit of a shock ;^) -- MarcelVanDeSteeg
COMP20{8A,9B} Programming with Data Structures/Object Oriented Programming
These are the second year programming courses and carry-on from 103/104. You'll learn all sorts of disgusting things about pointers in 208, and see Java for the first time in 209.
COMP219 Database Practise and Experience
A course about Databases and VisualBasic. While this course focuses on databases and SQL it relied too much on your VisualBasic programming for it's assesment. Unfortunately, this course presents MS-SQL as the standard and fails to present any alternatives. 2001 was a bad year for this course (bad organization, theoretically impossible exam questions), it's probably changed since. (Second opinion: mainly obvious if you can program and have a sound understand of SetTheory)
COMP222 Logic and Programming
This course (if it hasn't changed from 2002) comprises of two disjoint parts, they run at the same time, but don't appear to link up with each other at all. Part 1 is learning about logic, you spend your lectures listening to Edwin Hung's Philosopy with a bit of logic thrown in. Part 2 is prolog, during lectures I was able to observe the lecturer read out of the course book, and write some code fragments on the blackboard. Occasionally when you turn up for a lecture it is actually a test, so it pays to attend, or read your course outline. (Note: The Prolog part has a new lecturer so this may all be crap)
COMP223 Information Discovery
This is a great course if you have better things to do than attend lectures. It has less workload than 123 and it would have to be impossible to fail this course unless you forget to turn up to the lab to collect your stamp every couple of weeks.
COMP224 Computer Graphic Design
This used to be a great course when Steve Franks was still teaching it. He is not teaching it anymore, but you might still learn something if you are interested in computer graphic design. At the very least you'll get a pretty portfolio out of it. Note that there is no pre-req. for this paper. If you can handle COMP123 then you can do this paper.
COMP233 Internet Applications
This course used to be 333 a couple of years ago. Now it's about PHP and MySQL and stuff. Sample exam question: "Write JavaScript code to pop up an ad window when you load the page." Seriously. Note that this course is not COMP333, it was introduced I believe in order to move some material from COMP333 to second year and to introduce more content in COMP333 in 2003.
COMP240 Mathematical Foundations of ComputerScience
Once you've done 140 you'll know why you don't want to do 240. As the name says, take 140 and add maths. Covers lots of fundamental algorithms and math that you'll need umm...somewhere. Pathfinding, fast fourier transforms, oh yeah, all the good stuff.
COMP234 Hotuku M???ori
Hmmyeswell.
COMP258 Engineering Usable Systems
A follow on from 153. More VB practical programming.
ENEL211 Digital Technology - Theory and Design
Good paper. Digital electronics. Quite easy and more enjoyable for a CS student than 205.

Level 3 (Third Year) Papers

COMP301 Systems Programming
Not offered in 2002 due to lack of lecturers. Low level paper.
COMP304 Graphics and Multimedia
Good for those who want to learn OpenGL, or it would be if they bothered teaching it. This paper is split between graphics and multimedia, about half and half as the title suggests. As such you learn a small amount about both and you don't really learn anything useful at all. In 2002/2003 this papers contents consisted mostly consisted of constructing a 3D environment in WRL?/VRML and developing a multimedia slideshow/presentation using Macromedia software.
COMP311 Computer Systems Architecture
A good hardware-oriented paper made hard to stomach sometimes by a lack of enthusiasm by the lecturer. You get to design your own CPU layout etc and if you do 441 you actually get to build it.
COMP312 Communications and Systems Software
First true comms course. Covers signaling, encoding, LAN and WAN technologies, TCP/IP etc etc. Has in previous years been taught, arranged or tutored in part by JamieCurtis, MatthewLuckie and DanielLawson.
COMP313 Programming Languages
Introduces parsing theory and touches on a few different programming languages. Seems to change every year, but sections on syntax and semantics and common, followed by Prolog and some random functional language.
COMP314 Software Engineering Project
Do not underestimate the suck factor of this paper. You have to write a big program and draw lots of diagrams about it. Real software can't be built this way. You won't get as high a mark as you deserve either. Plus, you have to learn Z.

I think that the processes learnt in 314 (especially the use of UML, robustness/sequence diagrams etc.) are very useful for large software engineering projects. The problem with 314 is that you design a large piece of software and then have no time to to implement it (even in a prototypical form) the course is structured so that you can't start implementing your code until the last quarter of semester -- MattBrown
Saying that 314 is of use to large projects only is misleading. If you don't go through a software engineering process such as described in this course, you aren't actually engineering software. Chances are you're hacking it together :) --DanielLawson
True, what I was really meaning was that in my opinion small pieces of software do not need to be engineered to the same level as large systems, hence the engineering techniques that we are using are not often useful for small projects. --MattBrown

COMP316 Artificial Intelligence Techiques and Applications
A really interesting sounding course. I enjoyed it for the first two or three weeks while we were focussing on search algorithms, however it soon degenerated in to statistics and I stopped going. Apparently they covered NaturalLanguageParsing and NeuralNetworks briefly in the last two weeks. If you can handle statistics then you'll probably really enjoy this course.
COMP317 Design and Analysis of Algorithms
This is probably the most useful course for real world programming. Some consider the material boring, but if you've got your heart in the right place, this will be the best course you ever do. And Tony Smith is great.
COMP319 Database Systems
This course teaches you more than you ever need to know about databases, including the fact that they are incredibly boring. You might find the lecturer more difficult to understand than the course material at times.
COMP325 Human Computer Interaction
This course should be better than it is. The project in it is far too big and the course material could be a bit more interesting. Lots of people took it thinking it would be cool and were disappointed, though it was the first year the paper was offered.

The fact that it was the first year the paper was offered has a very large bearing on this. Dont be put off because of a bad first year.

COMP333 Communication Systems and Internet Management
This course is still running in 2003 although I notice that the course description hasn't changed from previous years, and as such it looks similar to COMP233 in content. Its generally a high-level networking course, focussing more on Management type issues so is quite popular with people who cant handle the real networking course, COMP312, or Management students (who arguably cant handle computer science in general)

If you're going to do 333 I'd advise reading up about XHTML/XML/XFORMS/XSLT then not going to the lectures. What I remember of the course was doing a lot of schemas and having to redo them about 4 times (not because I did it badly but because the next assignment was "make it better"), then doing an exam which involved no code what so ever just theory like "Justify the use of XForms rather than normal html 'forms'" and "Explain the nature and purpose of comments and annotations which should be written as part of an xml schema" ... --KarlBriscoe

Level 4 (Fourth Year) Papers

A lot of the 4th year papers were merged. eg, 410 and 413 merged, 401 and 411 merged, and so on. These changes apparently meant the department could break the courses up again into smaller, Module papers in 2003 but this hasn't happened. In its current state, it's had the effect of either watering down content as where you had two courses, now you only have one and so have to drop content; or else it's made the new courses a lot harder due to trying to fit in far more content / assessment than is reasonable. Or both, in some cases.

That aside, your fourth year is probably going to be your best year in CS. Everything starts making sense, and you begin to understand why you were made to do 140 and 240 as a new undergrad. You might not be thankful for this, but most CS students have problems expressing gratitude anyway.

4th year would be great if you could do it earlier. A lot of people tire of university by the end of 3rd year and unfortunately if you want to get a degree, then go out and work for a bit, then come back and do your 4th year, you can't really. You have to do a '5th year' because you are a graduate already. Very tricky.

It should be pointed out there are 4 ways to get access to the 4/500 level papers, B.Sc.(Hons), P.G.Dip, BCMS/BCMS(Hons), and first year of M.Sc.

COMP401 ???
???
COMP404 Advanced Graphics and Multimedia
The first half solely focuses on the fundamentals (and mathematics - ugh) of computer graphics. Covers all the fundamental algorithms in detail. The second half focuses on digital image processing, and relates more to optical character recognition etc. Surprisingly, very much a programmers paper. Lots of nifty C/C++ coding to do. Useful paper if you ever want to write your own implementation of OpenGL.
COMP410 Programming Languages and Compilers
When I did it (in 2001) the goal was to write a compiler for a language you make up. A really fun course. Unfortunately it tends to clash with people doing 420. It doesn't seem to clash with people doing 420 any longer. It is broken up between programming languages and compilers now. You will at least have to write a compiler that produces basic assembly code and perhaps more. The programming languages bit of the course could be on any programming language, it was Haskell in 2002.
COMP412 Advanced Communications and Network Systems
4th year version of 312, goes into more depth on topics as chosen mainly by the class
COMP416 Topics in ArtificialIntelligence
Not so much artificial intelligence as machine learning. This is the course where you just write algorithms for the Weka framework every other week and test them against better algorithms.
COMP417 Text Storage and Retrieval
A great course if you are interested in compression and search engines. Taught by Ian Witten. Follows on from 317 but isn't quite as great.
COMP420 Report of an Investigation
4th year honours paper. A double weighted paper based 100% on an internal research project that takes 8 - 12 months. Normally the first true introduction to self motivated research and serious report writing for a CS student. If someone says "I'm doing my 420" then you nod a bit, and then ask them why they are wasting their time talking to you
COMP424 - Topics in Software Engineering
Formal methods paper. Z, Z and more Z. Read through 'The way of Z' by jacky and you'll know exactly what to expect in this paper. Essential if you plan to work on very large or mission critical projects.
COMP434 - Software Design
Split into two parts. Covers writing reusable software components. In 2003 the first half involved developing JavaBeans that interacted with the Weka project. The second half is an introduction to Microsofts COM model and writing components using the VisualStudio IDE. (Yay, VisualBasic programming in 4th year - not!)

Higher level courses

Above and beyond these courses are the MSc and PhD, which are viewed by the university as single course degrees. For MSc and PhD courses, three things matter:

  1. Your supervisor(s).
  2. Your research group. Being part of a research group is a distinct advanage, it gives you a peer group to talk things over with, it creates opportunities to learn from others mistakes and it compensates when your supervisor is out of the country.
  3. Your topic. You're going to be studying this for the next X years. Find one that you think is still going to be interesting in that long, preferable not a current "bright light" whose shine may have faded in a few years.

Most current MSc and PhD students have plenty of advice for those just starting out, feel free to ask them (and feel free to ignore it, we all did).


Any other CS students feel free to add descriptions / experiences AddToMe