Showing posts with label honours. Show all posts
Showing posts with label honours. Show all posts

Sunday, 14 August 2011

Robot Monster

I had finished my undergraduate degree and I didn't know what the hell to do. I knew I wasn't ready to join the workforce. So I started looking at post graduate programs.

One of the universities was offering a postgraduate diploma in Robotics. Anybody with a comp sci or an engineering degree could apply for it. So I collected up my transcripts and sent them in. I received an acceptance letter in fairly short order... followed by a second letter informing me that the course had been cancelled, because there was only one person enrolled in it.

My dreams of robotic world domination dashed, I went an enrolled in a one year arts program at a different University. It was fantastic. Lots of great subjects, and not a career in sight. I asked if I could overload my course and do some extra units, but the course coordinator adviser refused: these were Arts subjects an it was  unthinkable that a student should want extra work. I went from having 28 hours of classes a week to eight, with no big assignments and no exams. It was easy and rewarding. At the end of the year, my supervisor asked me where I was going to have the work I'd done for his class published.  It didn't have robots in it, but it did have space ships and quantum physics.

Once I had graduated, I needed to get a job. This wasn't so easy: most of the companies I talked to were confused by the fact I had qualifications in Computer Science, Psychology and English, and I wasn't getting very far. My old university asked me to show up and enrol in subjects for my deferred honours year, and even though I'd had never intended to go back there I went and did it. I had nothing else to do.

We had to choose a thesis topic before the year began, but I was so disinterested in it that I did nothing about it. At the last minute I went through the handbook advertising which topics were being offered by the various faculty members, and I found one professor who had five topics I liked. I went to talk to him.

It turned out that Professor Gupta was the head of the department. I had no idea, even though I'd been in the department for three years already. He looked at my background, raised an eyebrow at the second major in psychology, and agreed to let me do one of the thesis topics I was interested in. He chose the topic. And he told me to write a much more general topic heading on the form than the one we discussed. I should have known that something was awry.

At the start of the year we were told that honours level subjects would be much more difficult than undergraduate subjects, but I found the opposite to be true. The classes were easy, the assignments were easy, the exams were easy. I wondered what I was supposed to be learning. How was this preparing me for the real world?

My thesis was another matter altogether.

The first thing that Professor Gupta did was tell me that I would be co-supervised by another lecturer, Dr Victoria  Wong. This, I was later informed, meant that Gupta wanted me out of his hair unless I produced something worth publishing, so that he could take the credit. Vicky was kind and supportive, so I didn't care. I did care that Gupta had decided to change my topic. He had some students building a piece of software for him that would measure certain aspects of human behaviour and he needed somebody with a psychology background to develop an experiment around that. I was unhappy, but it was easier than the thesis I had planned. I was given an alpha of the software to play with and told to begin my literature review.

The lit. review was easy. I read all of the research and found it patchy, unscientific and generally a load of hot air. Being the angry young man that I was, I proceeded to tear it apart. This actually impressed both Gupta and Vicky: they were unused to seeing students who were a/ critical, and b/ able to frame a coherent argument. They rewarded me with good marks and told me I was PhD material.

The alpha software I was supposed to be testing, however, was a problem. It did work... sometimes... but it failed to harvest the data correctly, and it would freeze or crash frequently. There was no way I could use it in the state it was. I was not allowed access to the codebase or the team of students who were developing it for Professor Gupta, but he assured me that it would be ready.

I went away and designed the experiments I would perform with the software. I framed my argument, developed my hypothesis, worked out the metrics I would use. I got the whole thing ready to go.  Eventually Gupta took an interest, and invited me to a few meetings in his office. During those meetings he'd make me sit while he read what I'd written. Then e'd explain my ideas back to me as if they were his own... and I was a turnip. I just nodded my head and agreed with whatever he said. After every meeting I'd ask "How is the software coming, Professor?"
"It will be ready. Don't worry about it."
After a few weeks Vicky called me into her office.
"The software is broken. The students who are writing it have gone on holiday. Professor Gupta says you won't be able to use it."
"But... my whole thesis is about this software." Gupta had forced the topic on me to begin with. It wasn't Vicky's fault. "What does Professor Gupta say?"
"Professor Gupta says that you should just do some manual testing instead."
"My thesis topic is 'automated testing'."
"Not any more."

Vicky was sympathetic, but she couldn't do anything... or say anything. The faculty, I had discovered, were paranoid about Professor Gupta finding out that they'd said anything bad about him. The ears had walls.

"I'm going to go and speak to the Professor."

"Um... Professor Gupta is actually at a conference overseas for the next month."


My thesis was gutted. I performed some manual tests and collected some results, but I had nothing to write about anymore and I had to pad to reach the wordcount. I thought I would bring some of the scientific rigour to my thesis that the studies I had criticized had not: I would perform some statistical analysis on my data to see if it was any good or not. When Professor Gupta returned from his junket and I told him about this, his face darkened. "No statistics," he said.
"But..."
"This is computer science. We don't do statistics."

I did the analysis anyway. That was as close as I came to expressing my frustration at the way the thesis had turned out.  My marks fell from an A to a C, but I didn't care. I was glad to be out of there. I was glad to be leaving this hell of Academia, where everybody was paranoid that their seniors were out to get them; where incompetence was rewarded, innovation was stifled, promises were broken, and ideas were stolen. Out in the Real World,  I reasoned, when there was money on the line, none of that would be permitted to happen.

Yeah, I know. You can stop laughing now.

Friday, 22 July 2011

Misfits of Science

University was a bit of a shock. I had a very heavy courseload in first year... more contact hours than I had in my last year of high school... and it fell to me to make sure that all of the prac classes and tutorials I would have to attend were timetabled correctly. I didn't actually know what a 'tutorial' was, and I wasn't much interested in finding out.

The other thing was the maths.

I had never enjoyed maths, but I was good at it. At High School, maths was one of my best subjects, at least in terms of grades. But apparently the university wasn't happy with the standard of maths from incoming students, and we were all subjected to a preliminary test before the first term began to prove our competence. And it was just as well. I scored 12 out of 15 on the test, but all three of the questions I got wrong were all the advanced trigonometry questions. My class at high school had done a different unit when others had done trig, and I hadn't learned any of the advanced stuff. So, on top of the heavy courseload, during first term I had to take extra classes in high school level trigonometry. But it paid off: when I resat the trig test and my marks went from 0 to 100%.

But all the classes were dull. They were teaching Pascal, which I was already bored with, and I didn't learn much in the first semester. My most difficult class was Deductive Logic, administered under the philosophy faculty by a lecturer, Hermann, who was no longer teaching any comp sci because he'd failed most of his students in his subject area in prior years.

Hermann taught us formal reasoning, and it was a lot more difficult than I had expected. They were small classes and I on one occasion fell asleep sitting in the front row, directly in front of him. By then I was starting to perfect the art of only working as hard as I had to, so I got through it with reasonable grades.

I soon found in the following semesters when we took boolean logic in maths and computer science units that I had already covered the material in much greater depth, and those subjects proved easy. A valuable subject, as much as I had disliked it.

But then I pretty much hated everything. I had made a few friends, but I wasn't enjoy  my subjects. I wanted to drop out every single semester. Later in first year we were taught about dynamic memory... pointers... and this was something at least new to me. I quite distinctly remember the a lecturer telling us that pointer arithmetic should be done on paper; it was too difficult to do it in one's head... which any commercial programmer working in a native language (at that time, the vast majority) will tell you is patent bullshit. But it was true that pointers were something many students couldn't master. Pointers, I think, are the first big conceptual leap you need to make in order to become a real programmer.

I did not, at that stage, appreciate that most of the people in my classes would never be able to be effective programmers in the real world: even if they could master the technical aspects, the ability to sit down and solve difficult problems all day long is not one that most people are wired for. For my part, I enjoyed the problem solving and I flat out just liked making things, but I felt like I'd already done all of these things before. I wanted to build Skynet, but nobody else was interested in that. It was data structures and algorithms I mostly already knew, employed in the service of meaningless tasks that had already been solved a thousand times. At the end of the day I was promised a semi-lucrative career maintaining ancient software on obscure hardware that would likely be used only by banks, for exciting banking purposes.

I wanted out, but I didn't really know what else to do.  I made the Dean's list in first year despite my misery. Second year my courseload was lighter. No more maths, no more deductive logic... but the comp sci classes were less interesting. We did a lot of hardware and operating systems subjects, the only one of which interested me was the brief unit we did in assembly programming. For the third time I found myself studying boolean algebra. I was still bored and I still wanted to drop out.

In third year we got to choose subjects. I knew I didn't want to take anything to do with networks; I was terrified that it would lead me to a career as a system administrator. Sysadmin, I reasoned, was the most miserable job in the world. If the network is running fine, nobody notices. If the network goes down... which they frequently did, and do... even if it's no fault of your own... everybody hates you. Not for me. I wanted to get out of university with as little work as possible, so I tried to sign up for a bunch of easy subjects... but those all had Databases as a prerequisite. I signed on for Databases and somehow then found there was no room for the easy subjects. Databases proved to be the second-most useful subject I took, although it was a long way from being my favourite.

I enrolled in COBOL. I wanted to do C++, but, owing to the strange degree I had enrolled in, I didn't have the prerequisite year of C programming. Third year had a lot less contac hours than first, so I went to the C++ lectures anyway. Within two weeks I decided that I had to find a way out of COBOL and into C++. If I learned COBOL there was the horrible possibility I would one day have to program it in the real world. By the same token, I knew that C++ was a viable language. COBOL was for retirees; C++ was for powerful young men. Besides: at that time the only language I was any good with was Pascal, and I knew that there were no careers in that.

I had to get into C++. There was nothing for it but to try it on, and see what I could get away with... but in the end it was no difficulty. The professor had seen me in his lectures and he just signed me into his subject, without even asking if I had the prerequisites. I dropped COBOL as quickly as I could.

This was the single best thing I ever did in my five years at University.

I liked C++. I had a bit to learn, but I was able to pick up most of it out of the book. I knew it would be valuable and I paid attention and that, more than anything, is the basis of my career in software. Naked C++.

The other big challenge of third year was the Software Engineering team project. I wound up on a team with one friend and four strangers. The project itself was dead boring... an inventory management database app... but we divvied up the work and I buried my head in my area, which was the User Interface. I took on board my task and decided to let everybody else get on with their own. This was a bad idea.

For all the time we spent in documentation, we really had no plan for how to integrate all of the pieces, and ground zero for this was my UI. When the time came, and I saw how inconsistent and flat-out terrible my teammates' work was, I had to get up and leave the lab. I wanted to punch someone. Did they have no pride int heir work? What the hell was I going to do with that mess? The team lead had flown off to China to look for a wife. The programmers who'd made the mess had no idea that they'd done anything wrong. That left me and the 'chief coder', Adrian, whose job it had been to oversee everybody else's work and make sure it would all integrate. I'd done my bit; I decided that it was on him.

This was very selfish of me, but I had big projects due in other subjects that the rest of the team did not. I went off to work on those and I left Adrian to it. Luckily, he rose to the occasion. Adrian worked long hours, day and night, and he got it done. He made it all work and I think our project scored better than anybody else's. I felt bad about having left Adrian to all the work and resolved to never do that again... and karma has since paid me back many times over.

I didn't make the Dean's list in third year, but I didn't go to many classes, either. All the same, I completed my degree with good enough marks that they offered me an honours year, which I accepted... and then deferred. I couldn't handle another year on that campus, with those subjects. Computer Science? What does that even mean? We don't say 'physics science' or 'chemistry science' or 'mathematics science'. A computer is a device, it's not a branch of science.

And what exactly had been scientific about my degree, really? What sort of research did we do, what new discoveries were we making? I had taken classes in other science disciplines, and even the 'soft' sciences were more research-oriented than CS. What I'd learned was really a kind of engineering, no matter how my degree was named. Since leaving I have never once had the word 'scientist' in my job title (although I would, for a time, hold the title of Advanced Researcher).

Did I want to be an engineer? Did I want to go and work for a bank? No, I decided.

I wanted to build killer robots.