It’s been several weeks since I posted anything about my Udacity CS101 course… mostly because over the past several weeks I’ve been spending every evening working on the course and not blogging about it. But now I’ve completed all 7 units, and the final exam, the grading robots are hard at work, and I’m waiting on my exam grade.

While I haven’t been blogging about CS101, I have been making notes. So now let me try to stitch my notes together into a semi-coherent post.

First of all, there’s been a hell of a lot written about Udacity, MITx, and disruptive innovation in higher ed generally, both in the higher ed press (The Chronicle, Inside Higher Ed, etc.) and the mainstream press (Wired, the NY Times, etc.). I won’t even try to sum it all up. But if you’re in higher ed and you’re not keeping up on these developments, well, all I can say is, you’re part of the problem.

There are two pieces that I will mention, however: One, Yvonne wrote a post on the CIT blog about her experience in MITx 6.002x: Circuits & Electronics, MITx: A view from the inside. Two, for my money, the most interesting piece on disruptive innovation in higher ed that I’ve read so far is Kevin Carey’s piece in The New Republic, The Higher Education Monopoly is Crumbling As We Speak.

Now on to CS101.

It was in about week 5 that I started to feel like a real student: the self-assessments were getting difficult, and I was actually concerned about getting the correct answers on the homeworks. Even though I enrolled in the course largely to experience their instructional design, I very quickly came to actually care about doing well in the course. I was also in it for the Python, of course, and so my geek pride demanded that I do well on that front. And, on that front, I have learned a good deal about Python. Evans, the instructor, kept it as simple as possible, and as a student I appreciate that, and as an instructor understand why he did so. But even so, we still learned a lot of Python, even if we only scratched the surface.

And now I’m a total Python convert. For the homeworks we often had to write code, and of course for the final exam. I tried as much as possible to use only the Python that we had learned in the course. Even though it was clear that not all students were doing that, as evidenced on the discussion boards, and even according to a comment that Evans and his TA Peter made in one of the office hours videos. But at certain points I thought it would be easier to just “cheat” and look up Python functions that we hadn’t learned in the course and use those. But honestly, I don’t really consider that cheating: if (part of) the point of the course was to learn Python, then teaching myself more Python surely isn’t cheating. But I’m telling you this as a way of explaining why I’m a Python convert: because every time I thought, “hm, maybe there’s a built-in function that will allow me to do X,” I went looking, and lo and behold, there is such a function! I read a comment in some discussion board post to the effect that “Python makes the difficult simple, the impossible feasible.” I totally buy it.

And in that vein… I found myself really enjoying programming again. It’s been yonks since I’ve done any programming of significance, anything more complicated than a one-line Unix script. I mean, who has the time? But I was really enjoying spending significant amounts of time in the evenings getting my head into coding again. I’d almost forgotten what that headspace felt like — where I used to live so much of the time, in a previous previous life — where I could lose time coding, and even after I stopped, some part of my mind was always churning on the algorithm I’m working on. I really enjoy that, and now I think I need to find reasons to do more development as part of my research, so I can have some of that back.

But anyway, on to the instructional design.

Each Unit has an associated set of notes, which is easily accessible throughout the entire Unit: below the video / Python interpreter block (they occupy the same real estate in the browser), there are 2 tabs, Instructor Comments and Supplementary Material. A link to the unit notes are always in the supplementary material. Anyway, I found it incredibly helpful to have these to refer to. For a while I had the notes from Units 1, 2, & 3 in 3 different browser tabs, just for reference. In I think Unit 4, they added a Python Reference document, which contains all of the functions that we’d covered up to that point. With each new Unit, they updated that Reference document. I kept that document open all the time, and that was incredibly helpful.

As the course progressed, I found that I backed up videos more. In the first few units, I watched videos once and moved on. But as the content got more challenging for me, I found that I had to re-watch bits. I rarely re-watched a whole video, though I did do that from time to time, but I frequently re-watched parts of videos. I found that these re-watchings fell into 2 categories:

  1. Backing up a video to make sure I understood some point, because I tuned out momentarily or didn’t fully understand something; or
  2. While I was working on a quiz or a Python exercise, re-watching part of some previous video that explained some salient point for completing the assessment.

I also found myself pausing videos to mentally replay steps to make sure I got something, and then backing the video up to watch that bit again.

Anyway, not that I was skeptical about the pedagogical value of short instructional videos before, but I’m really sold on the pedagogical value of short instructional videos now. I’ve read in several places that one of the most useful things about video instructional content is the ability to back up and replay something. It’s one thing to read that as an instructor; it’s quite another to experience it as a student.

On the subject of videos, however, I do have one issue. The video solutions to the homeworks were posted after their due date, which was usually a day or 3 after I finished them. By which time I’d usually started on the next unit. So the details of what I was thinking, and how I solved the homework problems from the previous unit were no longer fresh in my mind. So I found it a bit disorienting to go back and look at the homework video solutions. I found myself wishing they were available immediately.

Finally, I found that as the units progressed & got harder, I was looking at the discussion boards more frequently for help on the self-assessments and homework. I kept up with the course, but there were students who were clearly devoting way more time to the course than I was: by the time I got to the discussion boards for any given issue, there were always several threads on the topic. Yvonne is finding the same thing for her MITx course. On both the Udacity & MITx discussion boards, posters can earn badges for various things (Good Question, Good Answer, Civic Duty, Editor, etc.), which I think is a nice touch. To be honest, I was a complete free rider on the discussion boards: I read threads, but I posted no questions or answers. Maybe if I had more time to devote to the course I would have participated; I don’t know. I treated the discussion boards more or less the same way I treated the many sites on the Intertubes that contain Python Q&A and code snippets, and the Python Software Foundation’s documentation: as a resource to fulfill my information needs. I suppose this is very selfish of me, and very not community-minded (Wikipedian? Crowdsource-ish?). But there it is. As an instructor, I need to think about whether it’s important to try to draw out lurkers who could potentially be valuable contributors (I suppose I’m flattering myself that I would have been a valuable contributor). In a course on the scale of Udacity, with thousands of students, you only really need a smallish percentage of those to actively participate in discussions, to be useful to us lurkers. And I suppose, like everything else in human information-related behavior, there’s always going to be your basic long-tailed distribution of participation. Of course, to get students to do anything, you make it a graded assignment… not to be cynical, but it’s true. That was of course not the model for grading in CS101, and it might not be feasible on that scale anyway. (And there’s another question: is there a way to semi-automate evaluation of contributions to online discussions?) But for my teaching online, for small (compared to Udacity and MITx) courses, it is an issue. I suppose the question is: is it important to try to draw out lurkers? At what course size is it important, at what course size does it become unnecessary?