I won’t officially have my results back for M250 for another five weeks or so, but the exam question paper’s been released, so I have a pretty good idea of how I did. I’m not 100% sure if I missed one of the sections. I practiced my exact answer to that exact question so many times, that it’s difficult to remember if I actually wrote the answer on the answer book, or am just remembering one of the times I practised it. Note to future self: If you gotta visit the loo, visit the loo. Don’t rush to finish early and decide not to double-check that you’ve answered all the questions.
Anyway, if I answered that question, I’ve definitely got a distinction. If I didn’t, I think that I probably got between 86 and 90 (possibly even 94) marks, and still got a distinction. (I definitely dropped at least two marks, and six if I didn’t answer that one question part.) The worst case scenario is that if I’m very harsh in marking myself, and I assume a few mistakes I didn’t realise on the day (like reversing a greater-than sign, for example), I mark myself an 84, which makes me an edge case that the results team will have to consider. Considering my OCAS is 100, I feel I’d do pretty well in such a circumstance. So it’s a very, very narrow path to me not getting a distinction, but it’s possible, and I guess I’ll see.
How do I feel about the course itself? First, it’s very well laid out. Rather than subdividing every section as much as possible, they break the learning into two-week chunks, and allow the students to manage their time appropriately. This is much better than smaller one-week chunks, as it gave me the ability to focus on my other module (while I was still pretending I cared about it) when I had to without feeling like I was slipping behind.
Having also taken Helsinki University’s MOOC.fi Object Oriented Programming with Java I & II, Harvard’s CS50: Introduction to Computer Science, MIT’s OCW Introduction to Computer Science and Programming Using Java 6.00.1x, and UBC’s Software Construction: Data Abstraction (we’re going to ignore Microsoft’s shambles of a DEV276x Java offering), I have quite a few OOP study introductions to compare M250 to.
It compares very favourably. Most importantly, this is the most academic offering of the lot, which was surprising with so many universities in that list. However, aside from UBC, the others are all introductory level courses, whereas the OU module is for second year university students who are in the habit of studying. While the Helsinki module is very good at teaching coding skills, and both the Harvard and MIT offerings take the red pill and show the maths and memory calls that make this stuff work, M250 is the best at explaining logically (as opposed to physically) how this stuff works. It borrows the concept of message sends from the Smalltalk programming language to explain how objects interact to form complex code. That one tiny way of looking at objects shifted my entire approach to the OOP paradigm, and it’s much, much more natural for me to use than it was after the previous courses. Whereas before I was following rules I was told to follow, now I’m letting my code communicate using what feel like natural tools. The instruction is absolutely rigid in definitions and boundaries between any two related principles (for instance, between data hiding and encapsulation, between substitutability and polymorphism, etc.), and this gives a much better language for discussion about how and why OOP works.
Previous courses I’ve taken haven’t all been exclussively about the OOP paradigm, but some have. While I’ve been able to use OOP better after each one of them, M250 is the first time that I really feel like I get it. It’s an excellent course, well structured, plainly explained, gives both academic and practical views of the subject in an understandable way, and is fairly assessed (despite finding an impossible question on an OU exam for the second year in a row). It is the exact antithesis of TM254.
Beware that it is not a coding module. It is a module about Object Oriented Programming concepts, and happens to go over how to use Java as an example of how OOP works. If you want a Java coding module, I recommend the excellent MOOC.fi course mentioned above.