All / Featured / Technology & Society

MOOC Overload (Or, The Day The Code Came)

I may have overdone it slightly. I signed up for three MOOCs all running concurrently. Two of these are computer science/programming courses and one is a business school/social sciences course on organizational analysis, just for a bit of variety.

I’ve already told you about my adventures with CS50, Harvard University’s well-known introduction to computer science course. I was so flushed with success after finally building that blasted half-pyramid that I never actually completed the second assignment of Week 1 homework and I’ve basically been avoiding the course ever since.

In part this is because I’d meanwhile run off and joined a mobile game course run by Reading University through the platform FutureLearn, designed to introduce basic programming concepts in Java for developing mobile games on the Android platform. This course is very differently structured: where CS50 is designed to give a broad understanding of computer science concepts–the philosophy of computer science, if you will–starting from the very basics of machine language on upwards, Build Your First Mobile Game is a much more vocational approach designed to teach the practical skills needed for crafting a game. It might be a crude game (or a very sophisticated one, depending on the level of skill you came in with) but it’s the start of something bigger, even if you don’t understand the reason behind each instruction or line of code. It’s a bit like the difference between taking a course on the history of art and an actual painting course. Though the metaphor isn’t perfect, as there is coding to be done for CS50. It’s not all essays on the purpose of code libraries and the development of functional versus object-oriented languages. Similarly, Build Your First Mobile Game is also designed to teach some generic concepts that can be used across multiple languages and general strategies to solve various kinds of programming problems, it’s not solely focused on this one particular game.

Yesterday I had the sudden rather panicked realization that we were nearing the end of the final week of Build Your First Mobile Game and I hadn’t looked at the material in several weeks. Online courses are flexible to access whenever you wish, but that does make them rather easy to ignore also. Worse, though, was the knowledge that I was still only halfway through the coursework for just week 1 of CS50. It was time to make amends.

One thing that never ceases to surprise me about programming is how long it takes just to get the tools set up so you can actually do any work. CS50 requires a virtual machine to be set up on your computer so you can do things like run your code through a test system the staff have built to check for bugs. My virtual machine had been working fine the last time I used it but when I logged in this time, all my files were missing because it had lost connection to the internet and therefore the Dropbox folder where I keep all my notes and the code snippets I’m trying to wangle into shape. This resulted in much panic and flailing on my part, but eventually I manged to sort it out (turns out that Windows upgraded to 8.1 while I wasn’t looking and somehow this corrupted the installation of VMWare Player such that it wasn’t able to connect to any network adapters any more. Rerunning the installer fixed the problem, just in case anyone else runs into this issue.)

Then there was more flailing and quite a bit of foul language while I tried to figure out how to actually do the problem. My very patient housemate once again sat down with me and reminded me that the best thing to do once you have a solution in mind is to walk through it the way the compiler would in order to see what it’s doing at each step, and therefore where any problems might be happening with the way the code is executing. Eventually I arrived at a successful solution to the problem and this resulted in my housemate’s new catchphrase, which I anticipate will be in use several times over the next few weeks as I approach problems of increasing complexity: “Less complaining, more compiling!” (I’m sure someone has written a compiler that swears for you when it encounters an error, so I’ll just pretend to be that compiler next time.)

I celebrated completing the CS50 week 1 problem sets (and successfully submitting them via the course’s web interface, which was a feat all its own) by…taking all the final tests for Build Your First Mobile Game! I did very well if I do say so myself: perfect score on the first exam and not too shabby on the other two. In fairness I am still quite behind on the practical exercises we’re supposed to have done each week, but at least I can take pride in my conceptual knowledge. (Even if the philosophy part isn’t what this course was supposed to be about!)

Having sated myself on a code binge yesterday I can now look forward to catching up on my Organizational Analysis lectures sometime this week.  I’m in the middle of a lecture on the Cuban Missile Crisis, which makes a change from C and Java.

In the meantime I’m off to a very well-deserved celebration at the Real Wine Festival this afternoon.  Over 700 organic, biodynamically produced, or otherwise ‘real’ wines available for sampling.  I wonder what kind of algorithm I can dream up for that challenge!