The University Challenge

I’ve just booked my place at a degree ceremony and arranged the hire of my robes. I’m at the end of my Open University study journey, so here is a summary of it, condensed into one (still too long) post.

The first year of study was gentle enough. Module TU100, “My digital life” was an introductory course, intended to cover a broad range of topics including rudimentary programming, ubiquitous computing and the internet. The highlight was the SenseBoard, a little device containing various sensors (motion, temperature, light) which could be connected to your computer and programmed using Sense, a programming environment “based on” (i.e. the same as) Scratch.

TU100 was intended to get complete beginners “up to speed” so many more experienced computer geeks, like myself, found it quite easy. Indeed, after slacking off midway through the course, I got way behind and had to do one of the assignments without having read any of the previous chapters of course material. I somehow managed to score 99%. Ahem.

One strange moment came halfway through the course, when the student chat forum on the OU website had to be closed down due to persistent abuse from a minority of members, foreshadowing 2016 Twitter by a number of years. Given that a part of the course had been devoted to the concept of Netiquette, this was a bit worrying.

I had barely finished TU100 in September 2012 before I immediately launched into MST121 “Using Mathematics”. This was actual scary maths like what you would get in school. Integrations, cubic functions, differential equations, population modelling. One unusual thing about this course was that assignments had to be submitted by post and, because of the need to draw graphs and write complex formulae and symbols, parts of the coursework were handwritten. A few times I would relax, thinking I had plenty of time to finish my assignment, before suddenly remembering that I had to post at least five days before the assignment was due. The side effect of handwriting was that I had to be very careful not to make mistakes. Perfectionist that I am, I found myself tearing up whole sheets of paper and rewriting them from scratch, rather than messing it up by crossing out bits.

Waste Paper Basket with discarded homework in it

The most terrifying part of all, though, was that this module had an exam at the end of it. June 2013 saw the first of many visits to the Gateway Conference Centre on London Road, to sit a three-hour exam. I felt good about the fact that 60% of the marks were from multiple choice question, but upon opening the paper I was disappointed to discover that this was not ITV Daytime style multiple choice (“Q. What is 2 + 2? Is it (A) a million (B) 4 or (C) My shoes”) but one which required actual working out of answers. It was my first exam in 14 years and my technique was all over the place. I spent so long dithering over a couple of questions that I actually failed to finish the paper in time. Luckily I scraped enough marks to claim my second Distinction grade.

Maths exam question: A function is defined by f(x) = 1 4 (x − 1)2 −9 (1≤ x ≤ 7). Choose the option that gives the domain of its inverse function, f−1.

I had studied only one module at a time so far, however I soon realised that keeping up that pace would take me approximately ten years to finish the course, so I needed to speed things up by doing two 30-point modules concurrently (in fact, the OU recommend that you study 60 credits at a time). After a welcome break for summer, I enrolled on two programming modules in the autumn of 2013.

MT264 “Designing Applications With Visual Basic” did exactly what it said on the tin, covering the development of several simple applications using Microsoft’s popular (well, it was then) introductory programming language. We learned about planning and designing applications, a helpful topic for me, who has always adopted the “Make it up as you go along” design pattern when writing software.

M250 “Object oriented programming with Java” was much more theoretical. Diving in depth into the principles of object-oriented programming using an adapted version of BlueJ. Throughout the course, OO principles were explained using the metaphor of frogs. We created instances of frogs and they would pop up in a window on screen. We wrote methods to make the frogs hop, jump and croak. We created a toad subclass. We created interfaces to frogs. Abstract classes of amphibians. I wanted to create actual programs, but I was disappointed. It was frogs all the way down.

Both these modules had end-of-year exams, which raised the terrifying prospect of having to write blocks of code by hand, under time pressure. Lots of the students complained about this, although it might have been better for them to spend their time practising instead. Fortunately, I had no such problems: I’m not one to blow my own trumpet (I’m not supple enough any more) but I scored 98% in the Java exam and a frankly unbelievable 100% in the Visual Basic exam. I’m not quite sure how I did that.

Think I've got my exam technique all worked out.

A post shared by Robert Hampton (@hampo) on

There were slightly worrying times ahead: the OU notified me that, due to curriculum changes, the version of the BSc Computing & IT degree I was studying would be withdrawn at the end of 2017. A quick back of the envelope calculation confirmed that if I carried on studying two modules per year, I would not complete the course in time.

So, in the 2014/2015 academic year, I enrolled on three modules. I will say from the outset that this is not a recommended course of action. However, one module was a level 1 course, which I hoped would be straightforward enough to slot around the two level 2 courses.

There were two very different modules this year. TT284 “Web technologies” was an interesting module, covering… well, web technologies. HTML, CSS, JavaScript were all covered, although the nature of the topic meant that we barely scratched the surface. Mobile application development was also touched on, using AppInventor to create a simple Android app. It was all quite enjoyable, although regular expressions can fuck off forever.

On the other hand, M269 “Algorithms, data structures and computability” was a chore to get through. I signed up for it because the course description promised material based around Python, a programming language I wanted to learn. However, the Python stuff was secondary to a lot of theoretical work involving computational thinking, complexity and algorithms. There was lots of work on sorting algorithms, search trees and graph searches. The final section, on logic and the limits of computing, baffled me. ¬(P ∨ Q) ⇔ (¬P ∧ ¬Q), indeed.

I was moved by a small tribute to Alan Turing in the module materials. This came not long after his posthumous pardon from the Government. It was pleasing that, long after Turing’s untimely death, his work was living on and influencing my own future.

Alan Mathison Turing (1912–1954) helped establish the discipline of computer science. In the 2012 Alan Turing Year, 100 years after his birth in London, Turing’s life and work were celebrated across the world. Many of the key ideas in this book can be traced back to Turing’s seminal work.

In between those modules I squeezed in TM129 “Technologies in Practice”. This was a welcome change of pace as it was back to level 1. Some of the stuff contained within actually turned out to be relevant to my day job, as it covered computer networking and virtual machines. There was also a fascinating section on robotics, which involved watching an old James May documentary for some reason.

By the time my level three modules rolled around, I was starting to flag. Spending hours poring over textbooks, diligently making notes and completing assignments. I spent all day at work staring at a computer screen, then came home and did the exact same thing there for hours on end. My social life, never the most active, was suffering greatly. I started to wonder whether it was all worth it.

I was inspired to press on, however, by a new ad released in 2015, which depicts people studying and earning a degree, overcoming the debilitating condition of having a Tom Odell song stuck in their head.

My first level 3 module was TM354 “Software Engineering”, which covered the basics of professional software development. Requirements analysis, architectures, UML diagrams (so many diagrams). There were a few bits about Agile techniques tacked on, too. Until I did this course, “scrum” was a word which brought to mind naked rugby calendars. Not any more. Well, not entirely.

Again I was disappointed that it was all very theoretical, although there were a few practical exercises using NetBeans.

The second module, studied at the same time, was M364 “Fundamentals of Interaction Design” covering the design of user interfaces of products. I was on the very final presentation of this module, which meant that a lot of it was amusingly out of date – Blackberry phones were referred to in the present tense, the iPhone touch screen was talked about as a bold new interface paradigm for the future, and the TiVo was held up as an example of good interface design (Virgin Media customers may beg to differ on this point).

Combined with the OU books, there was also a book Interaction Design: Beyond Human-Computer Interaction, an 800-page tome which could almost certainly crush a puppy to death, were it unfortunate enough to be sitting under the letterbox when the postman delivered it.

A lot of this module was “go and read chapter X of the book” which meant hours of reading and not much else. There were some fun exercises which involved sketching user interfaces, and the one concession to modernity was coming up with the design for a self-driving car app.

Again, both these modules had exams, helpfully scheduled on consecutive days. I managed to turn myself into an absolute nervous wreck about both of them. There just seemed to be so much stuff to learn, more than any human could reasonably be expected to retain. I spent hours writing hundreds of little flash cards, endlessly testing myself. The day before the exam was the closest I have ever got to a full-scale panic attack.

I was incredibly happy to get out of that exam hall, get home and binge-watch a week’s worth of Countdown with chippy tea in lap and glass of wine in hand. I was cheered greatly by the knowledge that those two exams were the last ones I would ever have to take.

Post-exam de-stress.

A post shared by Robert Hampton (@hampo) on

And so, it finally came: the final year of study. TM352 “Web, mobile and cloud technologies” built on the previous level 2 modules, going into more depth. The stuff on cloud computing was interesting, discussing how Amazon Web Services could be used to replace traditional hardware.

This was the first presentation of this module and unfortunately some teething problems crept in, particularly with the associated software. We had to build a mobile app using Apache Cordova and some very vague instructions supplied by the university. I spent literally days trying to get particular parts of the software to do what it was supposed to.

After a lot of work, I managed to cobble together something functional. Not everyone was as lucky as me: some couldn’t even get the software installed by following the vague instructions given. Others found that the level of JavaScript knowledge required was beyond them.

My final module was TM470 “The Computing and IT Project” – a standalone project of my own choice, building on the modules I studied previously. No course materials as such, just go off and research and pull all the materials together to do the project. You’re assessed not on the project itself but how well you report on it.

Things got off to a shaky start; the module was vastly oversubscribed and a lot of students were summarily kicked off (yes, really!) with a terse email telling them their registration was cancelled. Luckily for me, my place was “prioritised” because I had to complete my studies by the end of 2017.

My tutor was very helpful but obviously couldn’t advise on specifics. I built a web-based database application using PHP and MySQL, two technologies that I was vaguely aware of.

This got very challenging for a while. From February to June, I had two modules overlapping. For those five months, I had to spend weeknights working on my project, while weekends were spent working on TM352. I essentially had no free time whatsoever.

Things eased up a bit from June, when I finished my penultimate module. Still, there were nights when I sat in front of my computer, staring blankly, unable to work or do anything much. There were moments when I genuinely believed I would fail at the final hurdle. Fail the project and there is no resit available – I would have had to redo the entire final year from scratch.

I persevered, battling on, tweaking my project until finally, on the evening of September 10th, 2017, some five-and-a-half years after I started studying, I submitted the finished project report – a 274 page opus (including Appendices). I went over the recommended word count by a huge amount, but my tutor assured me it was OK, as the count is just a guide. And, upon re-reading it just now, I realise I forgot to include a table of contents. Bugger. That’s probably a mark or two lost.

I felt strangely deflated afterwards. The feeling of satisfaction I expected didn’t come to me straight away. So I just went back to work and, in the evenings, enjoyed this strange thing called free time. I binge watched the first season of Riverdale on Netflix, and waited.

The rest, you know.