So, for some reason I thought it would be a good idea to write a review of all of the courses I’ve done thus far as part of my computer science degree. I promise I’ll try not to be too scathing*.
Programming in Java 1 (COMP 1011)
The first programming course of the degree. It’s kind of a “welcome to computer science, now let’s make programs that track the business of a car hire company!” sort of course. That probably didn’t make sense, so let me put it this way – it’s boring. It doesn’t really get you excited about learning to program, but I guess you have to be patient and get through the fundamental stuff before you start going anything interesting. This course was quite a bit of work, mainly because I did all of the practicals (as they were all for marks, I hate it when they do that), and they were rather time consuming. I do think this course provided a good programming foundation. It can have a 7/10.
Fundamentals of Information Technology (INFT 1016)
This course was a bit of everything – some basic html, some programming theory, number systems (binary, hexidecimal), operating systems. I guess it served as a bit of an introduction, but I can’t say I found it extremely useful. One thing that was useful was the number system stuff – binary addition and subtraction, I hadn’t done those little things and they do crop up from time to time. But besides that.. not very memorable. 5/10 (ooh, so harsh).
Discrete Mathematics (MATH 1043)
This course earned me my lowest grade so far in my degree. We had a great lecturer, but I didn’t like the course – I remember I used to like maths but in recent years, it’s been the opposite. Getting me to do something that I’m not interested in is always a bit of a lost cause. So I didn’t give it the attention that it deserved – a lot of the logic concepts have cropped up again in the sort of research I’ve been doing and I can see that having a really strong knowledge of this stuff would be handy. I’ll give it a 7/10, most of the points were for the awesome lecturer (he was funny, and he kind of looked like Mr Bean).
Communication for Information Systems and Technology (COMM 1053)
The course that everyone in computer science at my university is forced to do. Basically, they get you to write a report in a group and then do a presentation of the content of this report. The tutorials were spent doing short exercises on summarising text and proofreading. I think my tutor was a pirate (no, really, he had an eyepatch and told us about his boat). Incredibly boring course, but you have to do it. 2/10 (yeah, it was that bad).
Programming in Java 2 (COMP 1009)
The obligatory follow up to the first Java course. Gets onto some further programming concepts in Java – inheritance, polymorphism, and some data structures such as linked lists and hash tables. It was made more interesting by the fact that we had one of the best lecturers I’ve come across so far – Adam Jenkins (this supports my theory that the more facial hair a lecturer has, the better they are – come on, it works for programming courses). 9/10 (could have had a 10 if he marked our assignments on time).
Foundations of Computing (COMP 1035)
The title doesn’t give much away, but it’s actually a course about computation; Turing machines, automata, parsers, languages, and a touch of petri nets. Quite theoretical, but I found it.. kind of fun (shh, don’t tell anyone). Oh, and it gets bonus points for the guy who fell asleep in the lecture, and made the lecturer end the lecture early because he wouldn’t wake up and he was snoring. Excellent stuff. 9.5/10.
Data Modelling and Database Design (INFS 2004)
Serves as an introduction to databases, involved designing databases as domain models and implementing them in Oracle. Also A LOT of SQL queries, all by hand. I dislike databases quite a bit – they’re not as bad as networking, but they’re getting there. Even so, I didn’t mind this course too much. 6/10.
User Interfaces (INFT 1004)
Exactly what the course title says – we handcoded a UI in Java swing (using the gridbag layout, it was a bit painful). We went through an analysis and design process where the requirements for the UI were elicited from the client, and written up in a document, and then it was implemented with a minimal backend, just the UI was coded, and it had to show navigation. Besides the arty farty documentation part, it was quite decent. 8/10.
Requirements Engineering N (COMP 2028)
A little bit arty farty (yes, I do like that term), but I think this is a useful course nonetheless. If not for anything else, then because it serves as an introduction to formal methods (which seems like all I will be getting in this degree – they don’t run the formal methods course at my university anymore). I often wonder what the ‘N’ is there for. I mean, what could it possibly be there for? It can still have 7/10, despite the weird name.
Objects and Algorithms in C++ (COMP 2012)
I think that everyone who wants to be a decent programmer has to do a course on data structures and algorithms, it’s an important course that’s proved useful in a lot of other applications.. but it’s hard. It’s in C++ and this was my introduction to the language. The assignments were on or above the level that we had been taught of Java – except I hadn’t already done a year of courses in C++ as I had done in Java. Especially with that lovely assignment at the end, which turned out to be a big recursive mess. Thanks for that. 7/10.
Network Fundamentals (INFT 1012)
Networking is worse than maths. No one seems to understand why I dislike it, and I don’t really either. I guess I’m a bit skeptical of it because I feel that I don’t need to know things in as much detail as networking courses tend to go into (why do I need to know how RIP passes packets through a network?). You should have seen the slides for the course, there was barely any information on them. And what does that mean? Well, try revising for an exam using those, it’s not easy. But hey, I really like programming, I guess networking just isn’t my area. 3/10.
Project Management for Software Engineering (COMP 2008)
The “you’re getting towards the end of your degree and now have to develop some decent software in a group” kind of course. Myself and three others designed and implemented a program that would animate three recursive algorithms (a knight’s tour, 8 queens and towers of hanoi) in Java, using the Java 2D drawing tools. And then we tested it, a lot. I’m glad that I finally got to do something that resembled a proper working program with a UI and backend. The course also contained a lot of tutorials on project management type stuff – precedence networks, metrics, etc. Not too bad. 8/10.
Object-Oriented Software Engineering (COMP 2006)
I actually enjoyed this course although no one else seemed to. It’s a course that’s centred around modelling OO systems in UML, and touches on some of the more common design patterns. Anything programming is alright with me. 8/10.
Information Security (INFS 2016)
Not one of my favourite courses, and here’s why:
- it was hideously outdated (eg, we learnt about different “types” of firewalls, with different features – when these days you get a firewall and it’ll just have all of those features, no one refers to the different types.
- it was not technical at all.
- it was quite badly run. There was even a lecture one week when no lecturer turned up. Nice.
Honestly, it was a waste of a course, and if I had the time again I would have picked something different, or I would have possibly enquired about going straight into “Computer and Network Security”, for which this course is a prerequisite. At least that course seemed to have some content. 1/10.
Database Technology (INFS 2011)
Quite a detailed course on databases. Contained a continuation of the earlier databases course with some more complex SQL (triggers, distributed transactions, etc) and a mixture of other things – XML, XQuery, fragmentation of databases, and a lot of technical stuff about DBMS’s, like cold and warm restarts. Databases isn’t an area of interest for me but I found this course okay. Nothing that I’d get excited about, but I don’t think it’s a waste of time learning about this stuff. 6/10.
So there you go, hopefully this has been vaguely interesting.
*this is possibly a lie.