Being easily convinced is not a virtue.
Software Development
The PSD from the other side
Nov 12th
So it’s been 4 years since I entered the PSD. I’ve got lots to talk about. I picked the Bachelor of Science (Professional Software Development) at the end of 2005 because it seemed like the most hardcore programming course I could find. On open day the convenors of the course explained that the PSD course had been created because graduates coming out of computer science degrees couldn’t actually DO anything. They didn’t know what versioning was, they couldn’t communciate, they couldn’t self-teach, and more. As far as I remember the PSD was supposed to address this.
And I think it was pretty successful.
I think it’s easiest to bullet-point the good things and the bad, so here goes:
The good things:
- Entry level. I had done relatively little programming before entering the PSD course. A fair bit of Visual Basic 6.0 actually, but I hadn’t done much past the point of forms. Students start out learning the basics of programming with Pascal in Algorithmic Problem Solving. This language was really nice to learn with. The subject also taught us how to read a language definition which further enabled us to teach ourselves other languages when we needed to. This came in very useful when we had to learn C# and Java on our own in preparation for Object Oriented Programming.
- The lecturers. Most of the subjects in the PSD, particularly the programming subjects, are taken by lecturers who have something to do with the course. They are a stakeholder if you will. They put in a huge amount of effort to maket the content accessible to the students no matter how complex it might be (within the bounds of the pre-requisites of course). These same lecturers also seem to be the ones with an uncanny nack for making lectures entertaining, too.
- Well structured. Students are given a good sense of direction from the moment they begin the course. The streams are well described and it took very little effort to figure out exactly how this course works. I know of students in other courses who aren’t really sure what their options are when it comes to majors and minors etc.
- Industry Based Learning. This was without a doubt the most benificial part of the course. Obviously this isn’t a PSD-specific feature but it’s pretty awesome. I was able to gain a year’s experience in a commercial environment writing enterprise applications in .NET and secure a job for the future. This was thanks to a pretty decent ‘careers in the curriculum’ subject which at first glance seemed a waste of time but lead to me writing a pretty good resume resulting in the aforementioned job.
- Andrew Cain. It’s one thing to know a lot about a subject. It’s another to actually care about the way you deliver that knowledge to a collection of students. I have really enjoyed Andrew’s new take on assessment of students using his Portfolio concept which entails a student to present their learnings at the end of the unit rather than sit an exam. This requires a significant level of pro-active learning on the student’s behalf, but Andrew’s view is that lecturers are mistaken in assuming students aren’t capable of this level of pro-active learning. I’ve only done two units in the portfolio method (actually I’m still not finished with the second), but I think the portfolio method is significantly more appropriate to the 21st century and I hope other lecturers take an interest in adopting it in their own subjects.
- Exposure to a wide variety of software development topics. The course subjects vary from way over on the management side to the code-monkey subjects like object-oriented programming and other programming-intensive electives that are available.
- Big-team project experience. In final year I worked on a team of ten in a competitive project to produce a complex piece of software for a real-world, multinational corporation. This provides loads of necessary experience for those who need to work on their communication skills. It also forces the student to use tools they might not have previously been familiar with, further preparing them for industry. The feeling of handing in a finished product that solves a problem for a big company is a really good feeling.
- Interested course convenors and lecturers. The key players behind the PSD are all very keen about the course and are often organising ways to bring members of the course together to talk about any issues with the course or just to catch up and get to know each other better. I don’t know of any other course which receives this kind of interest.
The bad things:
- Work load. Yeah, another student complaining about too much work. But seriously, there needs to be someone overlooking the amount of work students are given as a result of each of the concurrent subjects in the course. It gets to the point where even the course’s most studious scholar has no way to get HDs in all their subjects purely because of a time constraint. I could understand a student not getting all HDs because of a lack in motivation, or skill, or something naturally binding them from that outcome. But the restriction should never be purely chronological. That is an indication that there really is too much work. Re-writing limewire with our own protocol layer was indeed fun, but something which took so many ridiculous hours for an assignment which was only worth 10% is not my idea of smart.
- Maths. We do some maths and logic work in Computer & Logic Essentials which is definitely an awesome subject. But we need something which covers plain ol’ mathematics. The entry requirements for the PSD only specify two units of general maths. As a result, you end up with students which are undoubtedly competent programmers but which lack the mathematical capacity to turn mathematical problems into code. This became a problem in our final year project when our architect had to go back and teach himself quite a bit of mathematics in order to solve a problem. This was the course’s absolute most elite student. I doubt any of the other members would’ve been capable of this. So this begs the question, what happens when graduates get out into the real world and the first thing they need to do is solve a mathematical problem? You can’t just stare at your desk until the problem goes away.
- Honours. Oh boy, I really think the ball was dropped on this one. The way the honours year was portrayed at the beginning of the course was that it would basically be honours but without the ‘crapness’ usually associated with it (crapness being loads of research data and thesis papers etc). It was presented to us in a way that we believed we would be able to work on a big project (of which we got to come up with the idea of what that project is) and just go full steam at it all year. I’m told this actually could’ve happened, but they did not have enough student interest toward the end of the final year. But I think the decision was made prematurely. I don’t think interested students were given enough time to express interest and as a result, the idea of what the honours year was changed, and students were then even less likely to express interest. If they’d just gone full-steam at the original idea, I’m quite confident enough students would’ve participated.
- The course is new. This means I had to endure subjects like Professional Issues in Information Technology, an absolute SHAME of a subject, aswell as Business Information Systems. These subjects contain content that students who even have INTEREST in the PSD course are already going to know. This is not so much an issue for future students of the course, because our feedback generally leads to the replacement of these subjects. However, it’s possible some bad subjects still exist, as the course is still being evolved.
Overall, while there might be quite a few negative points there, the course is pretty awesome. One has to be proud of themselves for making it (though maybe I’m speaking too soon, not quite done yet!) through such a gauntlet of a course that is the PSD. One thing is for sure, with the kinds of developers I’m seeing come out of the PSD, the industry had better get ready because there’s some seriously talented developers graduating this year.
If there’s anything I should have mentioned in this blog and you think I should talk about it, let me know!
The Big Update
Apr 4th
I’ve been slacking off, damn it. Anyway here’s my current status:
Working two jobs, Coles on the weekends and cvMail Wednesdays and Fridays. I much prefer working at cvMail, where I do software quality assurance work, as it is a lot more relevant to what I want to do with my future. I’m in my second year now at University, and this semester I’m taking subjects such as Data Structures and Patterns, Data Communications and Security, Software Development Practices, Careers in the Curriculum and Object Oriented C++. All in all I think I’m doing pretty good. More >
Samurize
Jun 9th
Just found a cool peice of software
It’s called Samurize
Samurize is basically just a program which enables a user to display monitored data on their desktop easily and clearly. Such data may include your currently playing mp3, cpu usage, ram usage, weather etc, etc… There are tonnes of different scripts you can download and use with Samurize to display all sorts of different things
Here’s some examples from my desktop:

This is an example of me using Samurize to display my current playing song

This is an example of me using Samurize to monitor my cpu, ram, hdd, uptime, and date/time
Samurize is an excellent program. But who knows maybe in a week I’ll have deleted it like most desktop tweaking programs I install.This seems legit though, no bugs or any negative effects so far. Very stable, and even has an excellent config editing tool.
Rating? 10/10 – There’s just nothing to deduct points for
Download Samurize here: Samurize (5.56mb)
You’ll want the crystallite monitors: Crystalite (15kb)
The Monty Hall Problem (three door problem)
Jun 7th
OK, lately at uni I’ve been trying to convince many people about the Monty Hall problem.
The problem:
Imagining that you are on a game show, you are given three doors to choose from. Behind two doors are goats, and behind one door is a car. The game show-host knows the location of the car.
You pick a door, one, two or three. No matter which door you choose, there is still going to be a goat you have not picked, because there are two goats.
So the host reveals a goat that
you have not picked, and then asks you if you would like to change your decision.
The problem is, is it better to change your decision or should you stick to your initial decision? Or maybe you believe it makes no difference at all?
The fact is, there is more chance that you have initially chosen a goat (2/3 chance) so you’re more likely to be on a goat if you stay with your initial decision, hence it is best to change your decision, keeping in mind that you cannot change from a goat to a goat, because the other goat has been revealed already.
This explanation, however satisfying for most people, is not good enough for some people (who will remain nameless) at uni. I have tried time and time again to convince these people but they just won’t listen.
So what I did was I wrote a program which creates an array[0,1,2] of string. It RANDOMLY assigns to one of these elements, the value ‘car’, and assigns ‘goat’ to the other two.
It then selects one of the elements, and then disregards a ‘goat’ element that is not currently selected. It then changes the selection to the one which is left and tells you if this is a car or a goat.
Ofcourse I could have just drawn up a tree (there’s one on wikipedia along with other mathematical proofs) and show that the car has greater probability upon changing your decision, but a program is much more fun.
I have uploaded my program, along with the Pascal source code (could have been a more elegant solution but it serves its purpose).
threedoors.zip (69.0 KB)
The program can perform as many test cases as you specify, within the constraints of an integer. It does 1000 tests per second (1 per millisecond)
Hopefully this can bring some clarity to those who dispute the decision to change door!
Enjoy!
PSD: Semester 1 Summary
Jun 6th
[warning, long read]
Well as semester 1 exams approach, I suppose this is a good time to reflect on how I’ve taken to the course I am enrolled in (Professional Software Development, aka PSD)
I will comment on individual subjects, in order of most favourite to least favourite.
#1 Favourite: Algorithmic Problem Solving
- Content and Structure
- One 2-hour lecture and one 2-hour lab/tute per week
- I came into this subject pretty much expecting some teacher to be reading some syntax out of a book; “this keyword does this, and to do this we do this, etc”. Surprisingly, and thankfully, the subject actually reflects its title. In APS we were taught the basic foundations upon which programming is built. To learn this, we were using the Delphi Pascal language. We were taught things such as:
- Data types and how/why we use them
- Variables and how/why we use them
- Arrays and their uses
- Pointers, linked lists
- Complex algorithms, how complex algorithms can generate elegant solutions
- Plus a whole bunch of goodies I’ve missed out because of my bad memory
- The great thing about the content of this subject was the sample programs that were used. Andrew always demonstrated his code in the context of creating a game. Which is an excellent way of keeping young minds interested.
- Teaching
- The subject was lectured and tutored by Andrew Cain. The way Andrew taught this subject really made me excited that I can forget about the lame teachers from high school. In high school the teachers always seemed disinterested in their own subject, which always lead me to question “if the teacher isn’t passionate about this subject then why should I be?”. This isn’t the case at uni, or at least with Andrew in APS. Andrew keeps this subject exciting. His clear passion for software development makes his presentations enjoyable and informative.
- Difficulty
- I will not deny, the subject was challenging. I don’t think there was a single assignment where I did not read it and think “oh crap”. But a challenge is good, and since the subject was interesting, I had the motivation to do the extra yards to make sure I got those assignments done. I’d say the subject was a comfortable challenge
- Overview
- The subject was excellent, couldn’t have hoped for more.
- 10/10
#2 Favourite: Computing and Logic Essentials
- Content and Structure
- 100100101010110111001… Oh whoops. What I mean to say is, this subject was um.. interesting, and had an obvious focus.
- In two 2-hour classes per week we learnt some important material about computation:
- How we can digitally represent data
- How we can manipulate it
- How we can use electricity to calculate
- How to measure the complexity of problems
- How to specify the requirements of computation in a precise and unambiguous way
- The content was specific, clear, and fun to learn. I found the subject was intimidating at first, with all the new symbols and all, but by the end of this subject, I was lovin’ it!
- This subject was actually the only subject to inspire my learning in areas other than the scope of the subject itself. To be precise, Computing and Logic Essentials inspired me to do some research on Quantum Computing, which was very interesting.
- Teaching
- This subject was taken in two 2-hour classes per week, by Rajesh Vasa. It is obvious from the beginning that Raj knows his stuff. I don’t know whether this is because of a hunch of mine or because of his willingness to skip parts that he believes you should know; “to add binary the computer does this, this, oh and there’s this bit but who cares lets move on”, while we’re left there thinking “argh go back!”. This isn’t bad though. Raj makes sure everything is still covered, and 10 minutes after the class we’re standing at the station laughing about it. As scary as it is to watch Raj assume we know so much, I still have 100% trust that we’re in good hands. The subject was something very different to what I had previously experienced. The teaching was to be enjoyed as much as absorbed.
- Difficulty
- The subject was actually so simple that it was hard. That makes sense right? I guess what I’m saying is that the subject practices alot of logic which is so simple that we’re not used to thinking that way. With a bit of practice though, the subject was fairly comfortable in regards to the difficulty.
- Overview
- An eye-opener, this subject makes you appreciate the microprocessor. Thoroughly enjoyable.
- 9/10
#3 Favourite: Database Analysis and Design
- Content and Structure
- One 2-hour lecture, 1-hour lab, 1-hour tutorial.
- DAD is a subject which is definately of valuable use to those chasing a career in software development. I think it achieved exactly what I expected. Not only were we taught what databases are and a bit of SQL etc, we were taught the rock solid stuff. The relationships and complex diagrams to go along with them. How we can take from a case study, our design for a database. To be exact, the subject enabled students to:
- Understand relational data models
- Use SQL to define, query and manipulate data
- Create entity relationship diagrams
- Perform analysis on entity relationship diagrams and make corrections
- The content was precise, and had an obvious and clear focus. A solid subject.
- Teaching
- Although the subject was interesting at first. I think something surely could have been done to prevent my rapid increase in distraction from this subject. It just became a real arduous task to sit through 2-hour lectures of this subject. But I suppose the subject was delivered adequately, and my attention span can be to blame for my ease of distraction in these lectures. However I did find the lab quite a task. The teacher for my lab had extremely poor english and was only just understandable at the best of times. This made things… well… pretty much impossible when it came to asking help. I did try to ask her for help once, only to find myself asking her to go away within the same 5 minutes because I simply could not understand what she was saying. A shame really, because I knew she was intelligent and was more than qualified in database, just a shame about the communication barrier.
- Difficulty
- The subject was fairly easy-going. At least the first half. The second half gets complex pretty quickly, but is still more than do-able.
- Overview
- It’s a good subject, I think a few things just weren’t going for me in it (like the lab teacher’s english or lack thereof)
- 6/10
#4 Favourite: Introduction to Business Information Systems
- Content and Structure
- Same structure as Databse Analysis and Design, a 2-hour lecture, a 1-hour lab and a 1-hour tutorial.
- I’m not going to lie. The content sucked. I still to this day struggle to recall specifics about this subject. The constant beating around the bush sent me chronically fed up with IBIS within the first 2 weeks, if not sooner. Apparantly the subject taught us a whole bunch of stuff to do with the way information systems help in organisations. The subject in my opinion was just a great big ‘state the obvious’ contest.
- The content of this subject was very unclear, and was in no way relevant to the work completed in the labs.
- Teaching
- Lectured by Catherine Lang, I could tell she was confident in the business side of things. But I think it would really help if the subject were lectured by someone with a bit more technical knowledge. I’m not going to go out of my way to belittle the lecturer, I know she didn’t wake up with a degree under her pillow, but she was constantly getting things wrong on the more technical side of the spectrum, which I think would have had negative effects on the students who didn’t know better.
- I really liked Rajiv. Rajiv took my lab and tutorial. He kept to the topic, made things clear and simple, and taught things in an easy-to-understand manner.
- Difficulty
- The subject was VERY easy, the main difficulty about the subject was really just trying to understand what the lectures were supposed to be teaching us.
- Overview
- When the PSD team had a meeting, all students recommended that IBIS be removed from semester 1 of the PSD. Not long after this meeting we found out that next year’s lucky PSD students will not be doing IBIS in semester 1 of their course.
- The subject felt disorganised and undirected.
- 3/10
I’d hate to finish on a sour note, maybe I should have commented on my subjects from least favourite to most favourite.
Anyway, apart from one particular subject (need I really name it?) the PSD is an excellent course so far! I’m absolutely rapt with it! Ofcourse, it’s not just the subjects and teachers, but the other students which also make the PSD a really enjoyable course. So I’d like to give a thankyou to all the guys doing the PSD!
So far, I give the PSD 9/10. I know there is a fat 3/10 in there but I’d hate to rate PSD lower than 9/10 just because of one crap subject. After all, this is the first year of the PSD! Can’t get it perfect on the first shot.
Next semester I will be looking forward to doing the following subjects:
- Object Oriented Programming
- Internet Technologies
- Usability
- Computer Systems
Looks like a promising semester (I think I’m supposed to say teaching period 3) 2 coming up!
Good luck to all PSD’ers in the upcoming exams!