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.)