Course Title: 6.00.1x Introduction to Computer Science and Programming Using Python
Provider: MIT via edX
Price: Free
Level: Introductory
Effort: 15 hours per week, 9 weeks (really 8 weeks and 1 day) — about 120 hours
Prerequisites: Basic algebra, aptitude for mathematics, prior coding experience helpful
Completion awards: Verified Certificate ($49) with at least 55% course marks, and 3 credits “Academic credit” through Charter Oak State College (65% course marks and $100 in addition to the verified certificate)

About the course:
This course is heavy on the “Introduction” and “programming using Python” portions of its title, and somewhat lighter on the “computer science” section, but it does a credible job of each.

It dovetails beautifully with the Systematic Program Design series I reviewed a few months back.  On one hand, this course gives object-oriented context to the basic principles in the SPD course, and provides a great roadmap of what’s next.  On the other, the SPD course fills in a lot of the data structure and raw theory gaps in the MITx intro course, as well as showing recursive design in a much more powerful light.  Taken together, they really feel like solid first steps into really understanding what’s going on under the hood, and how to direct the processes.

This edX course is an updated and platform-specific version of the MIT Open Courseware teachings on the same topic.  I flipped back and forth between the 2011 version and this one for at least half of the course, so some of the specifics I remember may actually be from the OCW course.  It’s difficult to choose a favourite lecturer between Profs. Grimson and Guttag; they both present the lectures with humour and clarity that’s easy to follow.  The bite-sized pieces of the edX course are generally better, but the poor “finger exercise” knowledge checks count against it.

To help students gauge their comprehension of the material, these finger exercises are interspersed between lecture segments.  Often, though, it seems like they’re just there to make busy work, as they’re not checking knowledge that’s useful, they’re just exercises that test nothing so much as your patience.  The worst of these are when they test concepts not in the lectures, which is defended by the TAs as inspiring independent study.  This excuse is somewhat undercut by the text on some finger exercises which states not to get too frustrated with a concept, as it’s explained in a later lecture.  If it’s explained later, then clearly that’s where we’re supposed to learn it, not through independent study, or they wouldn’t ever explain it.

There are so many concepts taught (well) through this course, I really can’t pull out a list.  In general, there’s a lot of coding principles, such as operators and operands, expressions, variables, calls, specific data structures, loops, recursion, conditionals, etc.  Discussion of address pointing supports lessons on mutability and cloning. Functions and objects, heirarchies.  There’s a fair bit to do with abstraction, though I feel this is handled better in SPD.  On the other hand, this course did a much better job of exploring algorithm complexity and costs.

Among the most useful (to me) portions of the course were the problem sets.  These were typically program problems you were let loose on to solve however you wish. Well, that’s how it was on the OCW version of the course.  In the edX version, which grades your programs and therefore has a very narrow interpretation of success, you mostly had to solve the problems how they wished.  It was really frustrating after the freedom of the OCW problem sets, especially when the same problem sets from one couldn’t be used on the other, and one case where the accepted solution technically required a different answer than what the problem description requested.

The required time for this course is way off.  First of all, this is not a self-paced course, and each “week” is released serially.  However, though it takes eight weeks before the content is all dished out, there’s really only six and a half weeks of content.  There’s a two week break between the third and fourth week releases, and the midterm exam is then inserted AFTER the fourth week begins, so it’s not to allow time for that.  Then the last week and a half are likewise empty of content, aside from the final exam.  (The final half week isn’t really useful, feels tacked on to advertise the next course, and falls well short of the OpenLearn data science introductions.)

The time you spend is then split three ways: Time watching the lectures and doing the exercises, time doing the problem sets, and time researching and revising.  If all the problem sets were written lucidly, I’d estimate about 10 hours per week, or about 65 hours.  Poor writing on the problem sets (similar to the above issues with poorly written finger exercises, but with an emphasis on the required solution differing from the requested solution) probably expand it to roughly 12 hours per week, or around 80 hours.  This is very close to the 50 to 80 hours of the SPD course, but I feel the SPD course is more informative of computer science, and less frustrating.

I think if I had it to do over, I’d do the OCW version instead of the edX version, just because it’s easier to evaluate my progress on my own than to have a computer do it.  Oh, the irony.

While the TU100 module doesn’t actually start for nearly three weeks, I’ve gotten a fair head-start on it, so that I could learn more about how I’m currently learning.  The Good Study Guide hits the concept of self-evaluation quite hard, and I agree with it.  Six years is a long time, there’s an enormous amount of work ahead, and I want to give myself the best possible chance.

One problem I have with this is that once I start, I’m finding it difficult to put down.  First of all, it’s fun. I really enjoy this limbo of structured independent study.  Second, I’m desirous to prove to myself that I can make this a habit, and stick with it.  I find myself making excuses so that I start working as soon as the children go to bed so that it becomes second nature to me. (For example, last night I spent ALL my down-time in the kitchen, but with the door open so I could still share snarky comments about the TV with my wife, and didn’t even realise I hadn’t had any relaxation time.)  So the end result is that I’m a good deal further ahead than I’d really wanted to be.

I’d finished Block 1, Part 1 (‘Parts’ seem intended to basically take a week) after a few days.  I’m now in the middle of Part 2, but have also already completed my first TMA.  So that people understand what I mean when I say ‘finished’ a part or session, I thought maybe I’d describe some of the techniques I’m putting into effect so far.

I have difficulty concentrating while reading text, and I don’t think I’m alone there.  I can read the same passage of text about a dozen times without concentrating well enough to absorb any meaning, or even remember what I’d just read.  The most useful active learning technique that I’ve found to counter this is taking notes while reading.  Basically, it just makes sure that my brain engages in comprehension at every thought along my reading.

I use a 10″ tablet to flip open to my reading material (so far in e-books), then go online with my laptop to fire up OneNote Online to take notes in the cloud.  My notes then progress paragraph-by-paragraph, because I often find that doing so retains the clustered ideas found in each paragraph, and linking from paragraph to paragraph serially helps the flow of my notes.  (I said this much more succinctly in my TMA, and may be back to edit this section after the TMAs are marked, but I’m leaving my exact words out in case someone else subconsciously uses similar wording on their TMA and it triggers the OU’s anti-collusion software.)  I then write out a simplified bullet-point outline of the text.  So by the time I get done with a section of reading, I’ve re-written that section with a handful of words.

Then when I need to revise, I can read just my notes, which bring up the memories I associated when taking the notes, and I retrieve the entire meaning in a fraction of the time.  So how much writing am I doing, and how much time am I saving during revision?  Good question.  Let me check my numbers.

TU100 My Digital Life Block 1 Part 1 is roughly 14,000 words long.  Reading all of that and taking notes on it took approximately 6 hours (including activities), and condensed it down to roughly 3000 words (not including activities).  3000 words may seem like a lot, but I can barely keep birthday cards down to 3000 words.  (Imagine how I feel when a TMA says I have 200 words to say something!)

But that’s an excellent example that I have to do better.  I’ve cut down what I’m reading a lot, but 1 in 5 words still leaves a loooot of words behind.  On the other hand, it doesn’t take me much time to type the words, and the result is that I can recall them and their meaning very easily.  It might take MORE time to try increasing brevity beyond what I’m already doing.  If retyping every word would help me learn the information better (which, it won’t) I’d probably do it.

On a completely separate note, I’m also concurrently doing the MIT Introduction to Computer Science & Programming Using Python course on edX.  I really want to complete the entire course, but worried that I wouldn’t have enough time for both that course and my actual university course.  But it seems I needn’t have worried.  The MIT course takes about a night of my time a week, and the TU100 stuff (so far) takes about 4.  But we’ll see, as they’re both likely to ramp up.  As it stands, though, I could stop working on TU100 entirely until a week and a half before the end of the MIT course before I had to do any more work.