Sorry to be gone for a few days without posting. It’s been basically triage here as we move toward the end of the semester. It’s also nearly the end of the CS101 course at Udacity (whose courses come in “hexamesters”, six times a year), so this week I’m planning on giving a sequence of posts that sum up my experience.
I almost didn’t do the CS101 course at all. I was waiting for Stanford University’s similarly-named course, but its repeated delays compelled me to look into Udacity. (I’m wondering if those delays, which were explained as legal and business issues in Stanford’s emails, had something to do with Udacity’s and Stanford’s courses being similarly named and similarly timed and potential legal action between those two orginzations.) I was really motivated to learn Python and tired of waiting on Stanford’s course. I wasn’t sure what to expect from a startup that wasn’t formally affiliated with a university, but it was free after all, so what did I have to lose?
Overall I’ve been very pleased with my experience in CS101. I’ve tried to learn Python (or some other language besides MATLAB) many times, usually by reading through books and trying the exercises. This is the first time any of those attempts has really stuck. For those who don’t already know, the course was broken into seven Units, each consisting of about 30 short videos with embedded quizzes, followed by a homework set, and there’s a final exam that’s now available (due Sunday night). I’ve been thinking about what’s made Udacity’s CS101 so effective with me:
- Each video was focused on a single, well-defined topic and was short. I’d estimate the videos were an average of 2-3 minutes in length and never more than 8 minutes. This made it easy to “snack” on one or two videos when (like me) you have very little time to sit down for a 15-25 minute video that covers several topics. (Stanford, take note.) Important screencasting (and lecturing) principle at work here: Focus on a small number of things for a short period of time.
- The production quality of the videos was professional. They are using some pretty sophisticated equipment to make the videos and have an editing team in place at their studios. Dave Evans does a great, understated job of lecturing (and uses lecture in appropriate ways and amounts). The audio is good. In short, you can tell this isn’t just being thrown together — there is craftsmanship at work in how the course content is put together. Important screencasting and teaching principle here: Put some effort into the quality of your teaching, and you can expect students to put in effort themselves.
- The use of frequent quizzing throughout the lectures is key in making sure we remember and process what we hear. If this were a face-to-face class, these would be clicker questions, and they are used to great effect. Important teaching principle here: Don’t just lecture. Assess student’s formative stages of learning frequently and in risk-free ways.
- I’ve mentioned this before, but the fact that everything we do in the class is driven by a single overarching project has really helped to provide coherence to what we’re learning and addresses the all-important notion that students learn best when they have a framework in which they can put information to see connections. Personally, I must admit I don’t care very much whether I actually built a search engine. But knowing that we learned about dictionaries because they are useful implementations of hash tables which speed up search query lookups, or that we learned recursion so that we could make some of our lookup routines clearer, helps to put concepts into their appropriate context, which helps me remember and recall the information better. Important teaching principle: Learners can’t learn things in isolation and be expected to use or remember them. The class has to provide a way of connecting ideas together and put them in place
Overall I was really impressed with how well-designed the course was. The fact that this one project — building a search engine — actually could lead, in a very natural way, to many of the fundamental concepts of computer science struck me as kind of genius. I wonder what it would be like if we taught calculus that way? Pick a single project, like “modeling a highway system” or something, and then let the notion of derivatives and integrals flow out from it naturally? You might not hit every single important topic that way, but you’d hit a lot of them, and I bet students would accept the content more readily and learn it better.
In the next post I’ll discuss how Udacity and other online education startups (including the ones based at universities) figure into the so-called “higher education bubble“. That’s a topic I’ve been studiously avoiding ever since I first heard of it well over a year ago.