The school I work at is in its second week of the year, things are held together with Sellotape and bailing wire and just about functional, so of course I spent most of my morning dodging in and out of the new module sites for TM129 and MST124.

The nearly-default Moodle theme I familiarised myself with last year has been reskinned with a flat theme.  It’s easy on the eyes and extremely usable on mobile platforms, so thumbs up from me.  (Actually, the high level of usability makes the rest of the OU site a bit embarrassing, really.)  Great UX planning.

MST-124 is about what I expected: A solid university course translated to an online medium.  TM-129 is also about what I expected: Chaos and insanity doled out as if to children.  Well, no, that’s what I expected.  It seems to be more like watered down squash.  It’s what you asked for, just less of it in the same sized glass.

MST-124 (Essential mathematics 1) isn’t bad.  It’s an obviously mature module which has honed its methods over decades.  There’s just the right amount of hand-holding (to me) for things like preparing assignment formatting, progressing from unit to unit, checking knowledge, and asking for help.  The ragged screams and buckets of tears from students in years past have obviously not gone unnoticed, and the result is a very logical, almost soothing trip through intermediate maths.

TM-129 (Technologies in practice) is like someone had a dream about being taught the perfect module, but got it a bit wrong when they woke up and tried to write out all the details before the dream slipped away from memory.  I’m sure somebody thinks it’s highly logical, but it’s really a bit weird.

There are three blocks in TM-129: robotics, networking, and Linux.  The only other organisation to the tutelage is by breaking it into weeks.  So there aren’t units, sections, or sessions, as such.  Just Robotics week 1, Robotics week 2, etc.  It’s my first day with it, but it seems difficult to learn the concepts in a flowing way.  Concepts appear to be explored and limited based on time, rather than a balanced or comprehensive understanding of it.

Thankfully, I’m not here to get an understanding of the topics.  As with TU100, I’m here to gain practice in learning.  I can’t see the networking information, as that’s entirely in a Microsoft book that has yet to be shipped (I hope Microsoft Press isn’t as bad as their edX team), but I don’t see any glaring omissions from the other two topics.  They’re only meant to be introductions, so it’s possible they’re as useless as OpenLearn MOOCs, or they could be dead useful.  I probably won’t be able to offer much of an objective view even after the module’s over, due to my familiarity with all three topics already.

Mostly I’m excited that I can study again.  I enjoy the process.

Despite what I said in my last post about how difficult LaTeX was to learn compared to how much use I’d probably get out of it … Well, I’d already invested the time in learning it, so why not give it a proper go?

I decided to make a proper template based off the ideas in MST125 Unit 2 (which is available for OU students to view, but they must be logged in).  For any experts out there who are bothered by the methods used, please keep in mind that this was literally my first day with LaTeX.  It gets the job done, and looks pretty … well, prettier.  Some features of the template:

  • Put your name, personal identifier, and TMA number in once, and the title section and footer on every page is updated from it
  • Typing \section{} will not just give the new section, but type Question # for you, with # being the next section number
  • Subquestions are likewise auto-incremented on every \item
  • The text font is a Helvetica sans-serif clone, but the maths font is still serif, making it easier to read

Obviously some parts will need to be cut and pasted, or otherwise modified to your needs.  The actual template I’m using, for instance, is slightly different in that it has a multi-line header instead of a footer, and it’s greyed out rather than having a delineation to match my Word template from last year. (Well, it was.  I’m starting to like this template more.)

Anyway, here’s the template I’m using for MST124.  I’m not taking MST125, so I don’t know whether or not this is part of a TMA question in and of itself.  If it is (or, frankly, even if it isn’t), please keep OU academic integrity practices in mind.

\documentclass{article}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{enumitem}
\usepackage{fancyhdr}

\def\myname{Your Name} % change this
\def\identifier{F0000000} % change this to your OU personal identifier
\def\tmanumber{TMA 00} % change this to appropriate TMA number or TMA title
\def\presentation{MST124-17J} % change to module presentation or TMA subtitle

\pagestyle{fancy}
\rhead{}
\lfoot{\myname}
\cfoot{Page \thepage}
\rfoot{\identifier}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{1pt}

\author{\myname, \identifier}
\date{} % remove this line to have date printed on title section
\title{\tmanumber\\\bigskip\normalfont\large{\presentation}}

\parindent 0pt % remove for paragraph indent
\parskip 4pt % also remove this for paragraph indent

\usepackage{titlesec}
\titleformat{\section}{\normalfont\Large\bfseries}{Question \thesection}{0em}{ }

\usepackage{nimbussans}
\renewcommand*\familydefault{\sfdefault} % remove for serif font

\begin{document}
  \maketitle
  \thispagestyle{fancy}
  \section{} % writes Question and incremental number
  \begin{enumerate}[label=(\alph*)] % auto-formats item decoration
   \item First subquestion.
   \item Second subquestion.
   \item Third subquestion.
  \end{enumerate}

  \newpage
  \section{}

\end{document}

Well that was earlier than expected!  I didn’t expect them to ship the books for MST124 out for another two weeks, but they were waiting for me when I arrived home yesterday.

The box is heavy.  My son picked up just one of the books inside and grunted under the weight.  It seems to be about a quarter acre of rainforest in the box.  The box contains:

  • MST124 Book A
    • Unit 1: Algebra
    • Unit 2: Graphs and equations
    • Unit 3: Functions
  • MST124 Book B
    • Unit 4: Trigonometry
    • Unit 5: Coordinate geometry and vectors
    • Unit 6: Differentiation
  • MST124 Book C
    • Unit 7: Differentiation methods and integration
    • Unit 8: Integration methods
    • Unit 9: Matrices
  • MST124 Book D
    • Unit 10: Sequences and series
    • Unit 11: Taylor polynomials
    • Unit 12: Complex numbers
  • Computer Algebra Guide (about using Maxima)
  • Handbook (74 page cheat-sheet you can take with you into the exam)
  • MST124 Guide (as “worth while” as every other OU module guide)
  • TMA form PT3 for posting assignments (Ha!)
  • Specimen exam paper, new for this year
  • Contents list

Here’s an “unboxing” photo with a bonus of my study area:

I had a look through the guide, the handbook, and the computer algebra guide, and then searched through they Labyrinth of Hidden OU “Support” Forums to look for anything interesting to do before the site opens.

The first thing of note was that the guide actually encourages students to start as early as possible on the material (literally as soon as they get the books, and before the site opens) and stay ahead until they’re done and it’s time to revise.  Cool!  Finally a module for the hares!

I downloaded and installed Maxima, and will use it as required, but as soon as the module’s over I’ll go back to doing what I used to do: WolframAlpha.  Maxima basically takes the place of requiring everybody to buy an expensive graphing calculator.

Then I looked into typesetting.  I have a lot of conflicting thoughts on the typesetting.  The first is that during the exam, I won’t have a computer to make my work pretty, so I may want to simply practice writing it out by hand for performance sake.  As I browse through the specimen paper, I don’t think this is much of a concern.

So for computer typsetting of my TMAs, I can either use LaTeX or MS Word’s equations.  (Or OpenOffice, I suppose, but I’m intentionally using MS through this degree course.  Another option would have been to use LibreOffice with the TexMaths LaTeX plugin.)  Last night I went through the guides for both.

Going in, I thought that LaTeX would be the better solution, as everybody glows about it.  It’s more work to learn, but apparently worth it in the long run.  In my opinion, the long run would have to be very, very, very long indeed.  It took about five times as long to learn as Word, because in addition to speaking its language for the maths, you also have to build the entire document around it.  Making a decent TMA template would probably take an initial few hours to get it looking as good as Word, with researching all the required functionality.  That said, if I were doing an entire maths degree, or was writing a book or thesis, it’d probably be worth the investment.  It’s absolutely professional quality.

Word, however, was much easier, quicker to learn, and was just barely behind in professionalism.  The only drawback was that the size of dynamic brackets wasn’t as nice as it was in LaTeX.  In exchange, you get to not worry about the rest of the document, easier and more intuitive codes, the ability to avoid codes altogether and instead point-and-click, instant rendering and feedback, and the data is then extremely portable rather than locked in a PDF.  If I need to write equations in another module (as I had to on every TU100 TMA) or elsewhere in life, the Word experience is also more portable.  If I needed complete control and customisation, then I’d probably opt for LaTex, but don’t see that happening in my current life tragectory.  It’s possibly worth it to learn the LaTeX codes, however, as they can be used in the Open University forums.

There are a few pre-module tutorials they’re running through September, and I’ll probably check one or two out, but I’m not that concerned.  After the Khan Academy prep I did this summer, I’m pretty confident already with about half the module.

Something my nine-year-old self would be horrified to hear me utter: Will summer break just end, please?

In addition to being a part time OU student, I also work in education.  Well, okay, I work in a school.  I’m not sure it has much to do with education.  The point is, both my full time job and my part time studies shift considerably during the summer.

For work, I stop fixing small, day-to-day things, and start fixing enormous things that take months.  It’s normally fun, because I get to do a lot of research and learn a lot of things.  However, this summer I’m alone in my department for various reasons, so don’t have time to do any of the large projects, so we’ve outsourced them all.  I mostly keep things running in between looking over the shoulders of consultants.  It’s frustrating, but hopefully this will be the only year.  (Although we’re converting to an academy, so who knows what to expect next.)

For my studies, I transition to MOOCs of personal interest.  This year has been wonderful for that, because I’ve really come a long way both in terms of programming languages and programming design concepts.  But … It’s just small hobby stuff.  And I can’t get involved in big hobby stuff, because I don’t want it to overlap and eat into my OU studies.

Last summer by this time, there was an Introduction forum open, followed by course-specific early-bird forums.  I’m anticipating early-bird forums amost as much as my grandparents used to anticipate catching dinner at Sizzler at 3 PM.  I hope they still have them.  (The early-bird forums, not the early-bird dinner special.  Though if Sizzler’s around when I retire, I’m definitely down for dinners before the school run.)  It seems like a good way to gel the nation-wide footprint of students for the presentation before splitting us off into tutor groups, so that we can bond and feel more comfortable in the FB groups.

But really, I just want to get stuck in again and be studying properly.  My poor nine-year-old self would have fainted by now.

Course Title: Software Construction: Data Abstraction
Provider: University of British Colombia via edX
Price: Free
Level: Introductory
Effort: 8-10 hours per week, 6 weeks
Prerequisites: How to Code series or Systematic Program Design series (same tuition)
Completion awards: Verified Certificate for $125 as part of their Software Development MicroMasters course of 6 similarly price modules

About the course:
I had amazingly high hopes for this course.  In fact, it’s difficult to judge it fairly because of how high my expectations were, which caused the very wide gulf to reality.  I’ll do my best to judge it on its own merits, but can’t help comparing it against UBCx’s stellar How To Code / Systematic Program Design course linked above.

As I started taking the course, I became ever more sceptical (skeptical for the yanks) of the the entire philosophy of the course.  It doesn’t start with theory, and it doesn’t start with academic information.  It starts with what is claimed to be a practical approach, much like learning a spoken language through immersion.  Except that while immersion is necessary for actual fluency, the best foundations of learning that language generally comes first from an academic study of it before the practical use of it.  Had I not just barely completed the mooc.fi Object Oriented programming with Java course, I would have felt frustration beyond measure.  They never teach enough to do useful things, and often only teach the bare minimum to answer a question after they’ve marked a quiz about it.

Beyond the approach, the technique they teach is … Well, it works.  It’s fair.  But students are expected to accept it as a religion, rather than as an education.  Edicts are handed down from on high, and we’re meant to accept them as though a flaming shrub had demanded them.  We’re not walked through the process of why.  We’re not lead to creating these tools in a meaningful way that they can be internalised and remembered, truly becoming a useful addition to our bag of tricks.  We’re just generally warned, “You must use these techniques … Or else!”  I lost count of how many times I quoted Sir Didymous saying, “Well, if that is how it is done …”

The point of this course is a tests-first abstract design of programs.  Define your program as a series of responsibilities, and devise tests for them, then code to your tests.  In my doubt, I had thought that it didn’t really unleash the power of object oriented programming.  And I was right, it didn’t.  But what it did was even more powerful: It allowed you to bring any tools you wanted to the party to get the job done.

Near the end of the course, I doubled back to an earlier project.  I had used the recommended methods to solve a problem, and they were ridiculous methods that utterly discounted both Java’s power in specific and object oriented programming in general.  I wanted to fix that, and re-wrote nearly all the methods.  But I stayed true to the precepts of the course as I did it.  And what I found was amazing.  I’d already done all the hard work.  I changed nearly EVERY LINE of actual implementation, but nothing more.  I didn’t even have to change the tests!  It took twenty minutes to rewrite eight classes, and then not only was it done, but it was tested, and I was completely confident in it.

So the course teaches good things.  It teaches powerful things.  The lecturer is easy to understand and isn’t boring.  But the things it teaches aren’t very complex, and could be boiled down to a thirty minute lecture, and that lecture would still involve the students more in understanding the reasons and therefore making it more absorbable and useful.

If you’ve got 30 to 50 hours to kill, give it a look.  But don’t reschedule anything, it’s just not that vital.  And definitely learn Java first.

Course Title: Object Oriented Programming with Java, parts I & II
Provider: University of Helisinki
Price: Free
Level: Beginner
Effort: 2 modules, 6 weeks each (by ECTS reckoning, as many as 300 hours)
Prerequisites: None
Completion awards: Free certificates of completion for each module

About the course:
In short: highly recommended.

This is not a computer science course, but it doesn’t claim it is.  It really is two (nearly) completely different courses.  The first one is about learning Java syntax and semantics, and the second one is about object-oriented programming in general, and some intermediate Java-specific techniques, as well.

It’s also not a MOOC, making their URL ironic.  It’s online, and it’s open, and a lot of people take it, but it’s not Massive Open Online.  It is an online textbook, and a very cleverly written code testing system.  You’re on your own.  Allegedly there’s someone to answer your questions in a few hours on IRC, but IRC users won’t really need the help, and answers to emails might take a few days, but again, you’ll almost certainly be past that “week” by the time you get an answer.  There’s no online community, no forums, no helping each other.  It’s an online textbook, an IDE, and nothing else.

(As there’s no video of anybody reading the book or walking your through its examples, it strongly parallels Open University modules without the support.  If you’re looking for the perfect module to taste what online study is like, this is it.  Imagine this course, but eight months long instead of a few weeks.)

Part I is a tutorial for basic Java usage, and is brilliant.  It’s quick, it’s informative, it’s very accessible.  It took me a week in my spare time, and was blown away at how quickly I picked up the skills with how they were taught.

Part II has a massive jump in difficulty, especially the week-ending challenges, where you’re welcome to use any programming techniques you care to in order to solve the problem, so long as its behaviour is exactly correct.  It highlights what I really love about programming:  There’s only ever one right answer, but there are countless ways to get there.

Being presented by the University of Helsinki, it’s an English course, and the vast majority of the content is very well written.  There are some peculiarities of language, however.  For example, the course keeps referring to built-in classes as made-up classes, which is … pretty much the antithesis of built-in.  So there are a very few minor confusions.

The certificates you get at the end are very clear about what has been studied, and even states that had it been accompanied by the university’s overseen exams, each would be worth 5 ECTS.  For the 10 credits between them, that’s 20 OU credits, and a little less than TM111 or TM112.  I’m guessing it’s not quite that impressive, but it does highlight that it’s the exact course their students take, and it’s definitely fit for purpose.

I’d like to thank Newbie from a comments page for pointing me in the direction of these modules.  They’re everything the Microsoft course wasn’t.  It’s not perfect.  It doesn’t include recursion, doesn’t discuss why one method is preferable to another, and states that abstraction is very important, but doesn’t teach any actual techniques for it.  Still, it’s a coding course, not a computer science one.

A highlight for me was using both NetBeans and IntelliJ IDEA to write the code and interface it with their testing system.  It’s a slick system, and couldn’t really be better.  It’s by far the best automated evaluation I’ve ever seen of checking code, including the one from CS50.  (Also, I enjoy both NetBeans and IntelliJ, and their ability to both prompt and automate things, but found myself working about twice as fast in IntelliJ.  If you have a student email address, do yourself a favour and get a free license for the full version.  If you don’t, at least check ot the community version.)

Course Title: CS50 Introduction to Computer Science
Provider: Harvard via edX
Price: Free
Level: Introductory
Effort: 10 – 20 hours per problem set, 9 problem sets and a final, self-paced
Prerequisites: None
Completion awards: Verified Certificate available for USD$90

About the course:
A lot of people view this course as the gold standard in introductory computer science MOOCs.  Having been through it now, I’m afraid I have to disagree.  It is an amazing course, though, and the one best placed to get you into the middle of useful coding as quickly as possible.

The structure of the course follows what you might expect of a university course translated to an online MOOC: each week has a very, very long lecture, followed by shorter bits from teaching assistants highlighting important concepts, and then there’s a problem set which is a series of challenges which ostensibly can be solved using the techniques introduced that week.  There is an exponential increase in difficulty from week to week, because both the material covered is more difficult, and the amount of documentation relating to solving the challenges is reduced.  This is meant to foster habits of independent study to resolve such challenges in the future.

This structure is the first relative weakness of the course.  (Relative to the MIT CS introduction course using Python.)  The MIT course imagines education looking more like the web.  The Harvard course spends countless resources trying to make the web ape its own institution.

As a former trainer, the most important thing about educating people is keeping them awake and interested long enough to learn, so it’s really about entertaining.  The lecturer, Professor David Malan, is extremely entertaining on stage.  The format is fundamentally outdated, however.  There could be a hundred clips where there’s currently a 105 minute video, each collated, indexed, and cross-referenced.  A build-your-own lecture series could take the place of an impending Sander’s Hall nap.  MIT did this beautifully in their latest foray into CS as a MOOC.

The languages “taught” are fantastic.  They start by giving a few rules-of-thumb in Scratch, and pretend that they’ve therefore taught it.  They next spend several weeks on C, and this is an impressive tutorial for the language … for any language.  They then give a small grounding in Python, and then a cheat sheet for SQL, JavaScript, and maybe a few others.  Really, I think they’d do better by having a hard limit on two languages, because everything beyond Python was literally worse than having no experience at all.  Students are expected to meaningfully interact with those other languages, without sufficient preparation.  In solving PSets, students already know those topics, or they luck into trying the correct technique the first time, or they end up chasing their own tails for hours and hours before giving up and asking on a public forum for help.  I spent many hours answering questions in the CS50 subreddit to alleviate some of the pain of such students.  (An example is that they expect students to use object-oriented programming techniques, but never discuss what an object is, let alone what object-oriented programming is.)

I would disagree that it is an introductory module.  It may be introductory if you’re on campus at Harvard, and can stop in and chat to a staff member for twenty minutes, and you’re literally spreading this across a third of a year.  If you’re doing this on your own, you’re going to have to come with a pretty strong intuition of why computer programs don’t do what you expect, and how to troubleshoot to figure out where it all went a bit wrong.  (The tool created to understand this in C is fantastic.  Because of this, they don’t teach how to figure out how to do it when learning C, and therefore students have no concept of basic troubleshooting techniques once the module moves away from C and that tool is no longer available.)

If you survive through to the victory lap of the final (which is really just whatever personal project you want to make a video for), you’ll be ready to take on any formal CS education.  I doubt you’ll be prepared for properly undertaking independent study, however, because the theory behind the coding is often ignored.

The real time I put into this was between 4 and 12 hours per PSet (typically on the lower side), so maybe 60 hours, plus another two hours each “week” watching lectures.

I’d recommend people interested in CS and coding take this module … but only if they also undertake the MIT or UBC introductory modules.

A couple of months ago, I predicted a score on my EMA between 93% and 95%.  I’m pleased to have outperformed the prediction, and achieved a 98%.  My OAS for the rest of the module had been 97%.  It’s gratifying to see these two numbers so close, as it means my tutor was well calibrated to the overall module requirements, which means I can be confident when I rely on her recommendations going forward.  (Listening to her recommendations definitely helped in this score.)

It is all downhill from here, though.

Course Title: Learn to Program in Java (DEV276x)
Provider: Micosoft via edX
Price: Free
Level: Introductory
Effort: 6 — 10 hours per week, 4 weeks, allegedly self-paced
Prerequisites: None
Completion awards: Verified Certificate available for USD$99
tl;dr: Take the University of Helsinki Java courses, instead

About the course:

No.  Just no.  Don’t even think about taking this course.  Run away.  Invent your own rules for how you think Java might work, and use those instead, because they’re sure to be more useful than this course.

I apparently signed up for this module on the day it opened, but I’m not really sure how that happened.  Anyway, the discussion forums were filled with people enthusiastic about what they were there to do.

There was no syllabus stating what the structure of the course was.  There was no course news, no updates, no welcoming letter, nothing telling you what to click on first.  The first week’s instructions, however, made it clear that the IntelliJ IDEA was an absolute necessity for the course.  (It’s not.  Feel free to use whatever IDE you enjoy.  They do at one point discuss how to set up a new project in IntelliJ, but they skip most of the difficult steps, and get another step wrong.  I learned much more about Java following the IntelliJ instructions for setting up a new project than I did in the first two weeks of the Microsoft course.)

After a few days, several of the students had finished the first week, and even though the course description said it was self-paced, there was no second week.  Some people asked in the discussion forums when the content would become available.  Other students were asking for help on things.  Some for clarification.  There was no response from anybody associated with the course’s presentation.  They had hit a button to upload a third of the course, and run away.

One step up in seriousness was that response was necessary, because much of the documentation is wrong.  Some of it over-simplifies things by saying this-or-that doesn’t exist, when it does, or you can’t do this-or-that, when you can.  Other times, the script-reader’s information is just incorrect, and other times the questions they quiz with have 0 correct answers from which to choose.

Another step up in seriousness is that the course is completely uneven.  The script-reader reads a mind-numbingly patronising script which insults the students’ intelligence.  Then the documentation and quiz questions expect the students to have a much higher degree of understanding than what was just discussed.  (Some courses claim this is a feature encouraging outside study, but this is a different beast entirely.)  Many times, there’s no indication of a correct answer in the script or the documentation, and it can’t be learned practically by experimentation.

I refer to the “instructor” as a script reader, because that’s what she’s doing.  I have no doubt that she does understand the subject content, but she’s just reading a script, and not teaching.  Worse, it’s clear that she didn’t write the script, because she often stumbles when something is wrong, not being clear enough, or she’s simply struggling with it not being the right way to present something, but she just ploughs on through it regardless.  One (patronising) committee wrote the script, a different person read it, a different team wrote the documentation, and someone else wrote the questions, and clearly none of these people ever met each other.

There were at least two questions which showed that the person who wrote the questions had no idea how iterative loops worked.  One had a question with zero right answers, and another with two right answers.  And, of course, there’s no way to get them fixed, because nobody from the presentation is there.

Anyway, when the second week was finally released, randomly nine or ten days after the course opened, and there was still nobody to answer questions, and the documentation was worse than ever, I finally just bailed.

To sum up: No.

When the University of British Columbia‘s edX group put up information about a new MicroMasters program for Software Development, I was excited.  (I get excited by not having to pick my son up from karate, or finding paninis in the canteen.  So keep in mind I have a low threshold for that word.)  Not because of the silly certification it could bestow for US$832.50 (currently about £650), but because I loved their Systematic Programming Design series I took last year, and was looking forward to new content.  The first course in the MicroMasters series is How to Code: Simple Data, and it started in April.  I wanted to finish up this year’s university stuff before tackling it, so I jumped over there sometime last week.

For good or ill, the first two courses in the MicroMasters program are just the original three courses in the SPD series.  In the SPD series, they broke the 11 weeks up over three courses, and now they’re breaking them up over 2.  There appears to be a benefit if you do pay the optional amount for the certificates, in that you get contact time in the form of Q&A sessions with the staff, so you can ask for assistance understanding whatever is personally confounding you, and you get your final project marked by staff, too, so you’re not just going off of your own potentially flawed understanding of the material when grading your own work.  (“Mark yourself out of 10.”  “A million thousand bazillion.”  “Fair enough.”)  I don’t know that it’s worth $125, but it’s not worth nothing.  (You could buy more than 100 tacos for that.  Now tell me it’s worth it.)

Anyway, they won’t move onto the new material until August, when they apply Data Abstraction to Java.  This is good not because I care one way or the other about Java (I get as uptight about people debating programming languages used in computer science as the people who are doing the debating), but because I can see how to apply their techniques to Object Oriented Programming … Though, to be honest, it’s much easier to see after studying what I have over the last year.  Systematic Program Design isn’t OOP specific, but it is beautifully closely related.