« GRUB on Mac OS X through VPC | Main | Clustering: Coming soon to a PC near you! »

Another painful HECS debt

SENG3280, Computer Networks

Every now and then I enroll in a subject at uni which serves only to remind me how much money this "education" is costing me. I am a bit of an alien in this class, coming from a Computer Engineering background into a 3rd year Software Engineering subject, but I still cannot beleive I am the only one disillusioned by the content and assessment criteria. Now, the lecturer is trying hard and has his ideals and priorities in the right place, but it is still not working for me, and I need a rant. And its a long, rambling, poorly structured, self-serving rant, of no real worth to anyone but myself.

The course started with information theory stuff, which is a reasonable starting point for a computer network subject. Unfortunately, the immature and irresponsible treatment and application of the theory of information transfer put me off right from the start. The Nyquist and Shannon coding principles are extraordinarily important theories on the limits of information transfer, but you simply cannot take their most famous equations, substitute numbers in, and assume you've actually calculated something real!

This is a rant in itself actually - the tendancy to treat the equation as gospel and only worry about substitution and calculation is a dangerous skill to teach in any situation, let alone in a 3rd year technical uni subject.

Then we moved on to checksums and CRC, which is interesting stuff when you look at error recovery abilities and redundancy. Unfortunately, the treatment in the lab (very, very difficult to learn this stuff off boxes and words on lecture slides) was robotic. Our lab demonstrator just started writing the solutions to shift register/XOR calculations without discussion or explanation. Apparently this fellow is very clued up. Unfortunately I don't speak Indian, and it is very hard to learn from him. He also is a bit unfamiliar with the course, and is stumped by questions which he cannot substitute numbers into his little set of equations to get an answer for. He was unable to give an answer to my question as to why Nyquist's equation and Shannon's equation give a greater data throughput when noise is added. I was pretty sure it was just because the equations had no place being used in the situations he was using them, and that they actually described (very well) a significantly different concept, but I was curious to see the justification for using them. No such justification was available. In the lab on CRC, we all watched as our demonstrator demonstrated how he could write out equations on the board for an hour without any discussion towards why they were being used, what significance they have or why they were being done the way they were. So the class learnt how to adds 1's and 0's. I've seen error detection and error handling using data coding before, and it is a very interesting topic and so much more than doing XOR arithmetic for an hour. There is no way someone without transmission coding knowledge would have gained anything from that lab (except that 1+1=0 when the lab dude says so), and therefore would have great difficultly visualising and understanding the lecture content. Pity.

And that's where the good content started to dwindle. The lecturer honestly dried to liven things up with real life examples, like the extraordinary long explanation of firstly that there are actually 8 wires in an Ethernet cable (a room full of LAN geeks and computer nerds could probably name the colours of the wires in order), and secondly that to remove an Ethernet cable from a socket, you should actually press down on the plastic tab and pull on the plug. Something that will be useful when we get out in the real world.

We also rushed through a terrible explanation of socket programming, complete with Powerpoint formatted function declarations with incorrect capitalisation and return values. However, we are never going to actually do any socket programming, because as the lecturer told me - the department have made a booboo in teaching SENG students solely Java. To present them with some C code would be a terrible strain on their now damaged intellect.

We continued to learn questionable and outright incorrect things, like the Internet being purely "virtual" (many pictures of blue clouds helped us understand that); like the loopback IP address being a testing address (better not tell Authoxy's author that his application is "testing"); like distributed programming or distributed computation being about client-server models like HTTP and FTP servers (the Lecturer did his PHD on distributed systems for $DIETY's sake, you'd think we'd leave distributed computation until a subject on clustering).

This was populated with entertaining anecdotes designed to extend us, and give us a feel for what we were going to do in the real world when we are consulting for IT departments. Things like how to get the IP address on Windows (at least on 2000 and XP, older versions use something else that didn't quite come to memory). Very important stuff in a third year software engineering subject.

Meanwhile the labs drifted further away from the lectures. Rather than seeing some of the theory we waded through on slides in practice, the labs were designed to extend us, and deliberately didn't cover what was in lectures. Instead, we followed some cookbook equations and produced some numbers. How they related to a copper wire, a computer or a network was still a little vague.

Then the clincher, Assignment One. What, from all the theory on network architecture, could the assignment be based on. Nothing of course. Write a client and a server capable of 3 messages in Java. In other words, use the sample code provided, which shows how to write a client and server in Java, change the messages the example sends to those in the assignment spec, and submit that. We'll be marking your Java skills. Firstly, Java? There had been *no* mention of Java in the course so far (the prerequisite for the subject was an intro to software contructs in Java), only C. Secondly, write a client and server? We had been talking about network topologies, transmission mediums, packet structures, frame headers, all sorts of good, hardcore network theory, and now we are writing a client and a server? The price of eggs has gone through the roof.

Maybe I have done more network programming than the mean of the class, and perhaps it is exciting to someone to write something which seemingly sends data across a network (although we had to do it all on localhost - there was no actual network requirement). But shit, in Java, that's less than 50 lines of code. The majority of the code goes into non executable framework code. But here's come the clincher. The assignment specification gave no indication of assessment criteria and asked for a Readme, and the source files properly documented. The Lecturer thought it might be nice to clarify that a little by quietly posting a notice on the subject web site stating that the assignment actually required UML diagrams and class descriptions. So the day after the assignment was due I happened to take the long way out of the classroom, and overheard someone else discovering the little documentation requirement - and that the assignment will not be marked unless it has an official cover sheet. These cover sheets are another great invention from the powers that be but never see, to force us to hand all our work over to the plagiarism detection software the uni had invested its money in. Apparently providing this document (supposed to be a cover sheet!) electronically is as good as a signed assignment cover sheet. So they are now able to take our 100 line Java client-server applications and check if anyone else has used the same code - of course, everyone will be using the same code, because there is only one reasonable way to write a client-server app in Java.

Grudgingly I reopened my assignment, spent far more time on the documentation than I did on the code, found a copy of Word and filled in the cover sheet, which just repeated all the things we already had to include in the Readme and source files and resubmitted. But not without a large and growing disdain for the course - particularly in that we had to do an assignment on Java, and on UML diagrams and class descriptions. Nothing to do with the lecture content, and more importantly, nothing to do with the course outline.

Of course, the assignment was returned with 3 marks lost out of 15. The comments were that:

"User interface never shows instantly what letter you are typing in.". Of course, this has nothing to do with my Java application, as it controlled by the terminal it is invoked from. I explained the concept of local echo, and suggested a faster computer might get close to "instant" feedback. In my terminal, the characters show as quickly as I can type them.

"Error messages are not handling enough.". Whatever the hell that means. Messages don't handle anything, they are notices to the user. And every exception in the application was caught and reported with the reason and message for the exception. Not that this was ever specified in the assignment spec, nor came close to being a point made in lectures.

"UML diagrams and Class descriptions were not provided as a document.". If a png of the diagram and a website of the class descriptions, plus instructions on creating more or other documentation is not satisfactory, I'm beat. But it turns out that the earlier submission was marked - this one with the assignment sheet was looked at, but not assessed. Whatever.

So its all crap. As I've done in the past, I'd be content to cruise along, confident that at least I had the background to see where the mistakes are. But it changes when I loose marks because of incompetance on the behalf of the assessors. When I am supposed to accept that I am not qualified in computer networks, despite the lectures holding nothing that is new to me, that's when I get the shits.

Rant off. Time to move on. These things happen, and my stubborness and arrogance only intensifies the issues. Best to be optimistic and take what I can from the course. Pride is being swallowed.

Comments

Lightyear, I'm also a software engineering student except I'm at the uni. of Technology (UTS). Its very interesting to see whats similar and different about our comm net subjects (Same name by chance). While i agree about your ramblings about the powers that be and the coding submissions, I envy you. As our communication networks is primarly theroy based. Forget coding in the subject, we do pure maths & physics of telecomm networks. Maybe they forget that not everyone is going to be a telecomms engineer.

We do have some practical components, followed by online tests, but these all relate back to theoretical knowledge. Be happy in the fact that you have programming in the subject as - even though it is a simple client server type java programs I like to be doing some code at least.

Also the java vs c debate. There is a strong movement towards teachings students java only (Its like that for IT students) however we do a fair bit of c, c++ and java in our course. Which I guess gives us the advantage however no .net

But basically if you know java inside and out, advanced levels its not that much of a jump to c and c++. And working in industry you will see that allot of companies do utilise java in projects over c++ simply due to the fact that all the people they have really only know java.

I guess the siutation we have with software engineering is, its up to a student to tailer their degree through submajors/electics to ensure that they have the skills (a variety of languages) when they complete their degree

qdbwkrm aqcivg dbek mzxa nmse ghtcudjl tgvqf

Post a comment