the building blocks of software


As usual I kept a blog during this course.

who is this course for?

I’d say that this course is for anyone who has any interest in programming at a non-trivial level or for those interested in the mathematical under-pinnings of computing.

Personally I wish that I’d done this course years ago. I don’t know whether that it has made me a better coder, but I do know that it has made me a more careful and thoughtful one. I now start a project in a completely different manner—I make a plan, I draw up a specification, I consider testing from the off and I think hard about the algorithms that I’m going to use. I could/should have done it this way before, but I didn’t; doing this course has given me [some] discipline.

Things still end up in the same dreadful mess of course—once I’m head-down in the code good intentions and plans are forgotten.

what’s involved?

Quite a lot! For me [and I think everyone else on my presentation] the course fell into two parts:

  1. Blocks one and two—function specifications, course code, sets, datatypes and classes.
  2. Blocks three and four—formal logic, databases, recursion, proof and efficiency.

Blocks three and four are significantly harder than blocks one and two, by an order of about ten. My advice is to get well ahead during blocks one and two—when the second mailing hits the doormat it is not the time to be playing catch up.

That said, if you have some programming experience, reasonable mathematical skills and you don’t panic at [perhaps] some unfamiliar notation and ideas, then there’s nothing too hard to grok.

the exam

This was my first in a long, long time and I wasn’t looking forward to it. As it turned out for completely the wrong reason—three hours seemed way too long. Don’t worry—you won’t notice the time, it’ll seem like minutes and you’ll be scrambling to finish at the end. And from other peoples’ blogs and posts I know that others felt the same.

Plan to get lots less marks in the exam than you did on the TMAs.

a good course?

Well from my introduction above you’d guess that I’m going to say yes, and I am, with some reservations.


There isn’t much here that is [immediately] applicable to day-to-day programming. There were a couple of techniques that I rather liked but, apart from those, not much stood out in a ‘yes, I’ll use that there’ fashion. Much was theoretical.

This very point was raised in the café, where I [reflexively] argued against it, but the argument has merit.

Interestingly although we were using a made up language there wasn’t a single complaint about that. During the tts there was much grumbling about learning ASP and ClodFusion—not marketable skills.

So be warned, don’t expect this course to be a toolbox, it’s more a discussion of what we might like hammers to do—without mentioning a bell-peen, a claw or a pin.

where do i go from here?

This isn’t a flaw in the course itself—it’s more a personal gripe. Having got me interested it seems cruel that OU-wise there’s no where else to go. I suspect that some of the third-level maths courses will be in the right ball park, but it would have been nice to have been told go here next.

So for me this was a course that didn’t go far enough, but for many people it may have been a course that went too far.

to sum up

Personally I really enjoyed the course, felt that it was useful [in the long run] and would recommend it to all.

Be warned though—there are some difficult[ish] concepts to get your head round, it’s hard work and the slightest slip will lose you marks.

Here’s what other students thought about the course.

There are also some good M263 blogs, my favourites are A BSc for Me!, an open university blog (not official!), OU Geek and Open University Study Journal. And, although he isn’t/hadn’t taken M263 the TMA machine should always be consulted [on this subject].