I’ve been putting off a review of these modules because covering all three is a lot of work. And a great way to make that worse would be to split it into three different posts. So that’s exactly what I’m going to do. First up will be M269, with a breakdown of what’s encountered on the module, how I feel about the various sections, and then an overall reaction to the module.

Note that I’m not going to discuss actual programming here. M269 happens to use Python as its language of choice, but that’s just a vehicle to demonstrate algorithms. University is not the choice place to learn a progamming language, and the concepts in M269 are language-agnostic.

M269 starts by considering the concept of abstraction, and multiple ways it can be used in computing. This is excellent, and fills a major gap in M250 caused by the language choices employed by Java. It’s a gap that made M250 more difficult to study, so that might be a reason to consider taking the two simultaneously … But then you’d have two different programming-heavy modules using different languages, and that could prove confusing, especially come exam time. The conventional wisdom is to take M250 the year before M269, and I wouldn’t disagree with that.

From abstraction, it considers (abstract) data types. I think a lot of the instruction here implies without stating that there’s a natural link between the shape and definition of your data, and how you can use that data. It’s explored more explicitely in some MOOCs I’ve done, and it feels useful. Still, students who pay attention will find the connection. Using the data leads to solving problems (such as searching and sorting) using algorithms, and then evaluating between multiple useful algorithms. This provides the context for discussion of algorithm complexity. So far, so good. This is covered in many introductory-level computing MOOCs from other universities. Frankly, I didn’t find the OU model particularly compelling, aside from laying the foundations of abstraction. But it wasn’t much worse than other methods I’ve encountered, except that it’s rather dry. It’s not as fun or entertaining as MIT-OCW, HarvardX, or UBCx MOOCs, and contextless programming challenges (aside from the iCMAs) aren’t engaging as they’re encountered in the materials. On the other hand, I found the Big-O (being changed to Big-Ω for future presentations, and the module actually explains the difference) discussion more academic than I’d encountered, which I found really useful.

The module also covers formal logic, and it does this beautifully. My dad used to lament that Geometry was the closest that students got to formal logic in school, and thanks to computer science that’s no longer the case. The largest, gaping problem here is that there’s no feedback to students on this portion of the module. Along with computability, this is assessed only in the exam, and detailed feedback is unavailable. This does a disservice to students, but one that’s likely welcome to both the majority of students and tutors alike … It seems like a lot of work for everybody.

I never got a word from my tutor, aside from a bizarre marking on a TMA. The TMA asked for changes to an existing function, and I was able to get the job done without changing the inputs and outputs, which is essential in a multi-programmer environment. She criticised me for not making a completely different function which couldn’t be used as a replacement. Fair enough. But I was able to get help from other tutors, and the tutorials from these other tutors were always engaging and enlightening.

I think there’s a lot that M269 does right, but there’s a lot that freely available MOOCs do better at an introductory level … M269 was a bit basic for a second-stage module. It does some things, like formal logic, abstraction, and complexity, better than those MOOCs, but it’s not as engaging. And for an eight month module, engagement is critical. It’s a good and important module, but it could do with some fresh, colourful paint.

Results have come in for the 2019/2020 academic year. This is a strange year for results, because they’re not necessarily based solely on the efforts of the students. For modules with cancelled exams (as opposed to those which substituted an EMA or did a home-exam alternative) students got an adjustment to their OCAS score in line with how module students have done on their OES relative to their OCAS over the last three years. As students typically do worse on their exams than on their coursework, in practice this means that students get a deduction of their OCAS based on previous years’ students.

It hasn’t been pretty. There are a lot of unhappy students, and some quite understandably so. Students of M250 are reporting deductions against their OCAS by as many as 10 marks, so you may have needed an OCAS of 95 to get a distinction. (Note that these figures are not verified, just social media chatter.)

My only module to fall into this category was M269. My OCAS was 95, and I got an adjustment down to 93.1 for my module result. Somebody else said a 5 mark difference cost them a distinction.

For TT284 and TM257, I had a standard EMA (with TM257 being informed by a very non-standard day school alternative). I didn’t do as well as I’d have liked on either (91 and 89 OES respectively) but I just couldn’t focus for anything in lock-down. And to paraphrase someone on the OU STEM Discord server, it reflects my effort level fairly.

Anyway, long story short, I’ll take three distinctions and run this year. It was never going to be easy doing three modules in the same year, so I’m grateful to have done it during a pandemic.