Recording a Class at Udacity

A good chunk of my time between the end of Spring semester and now was spent recording a class on software testing at Udacity. This piece isn’t a coherent essay but rather some random impressions and thoughts.

The main questions are: What is an online course supposed to look like? How can we keep students engaged and interested without in-person contact? Nobody really knows the answers but Udacity’s current solution is:

  • A course consists of seven week-long units.
  • A unit contains about an hour’s worth of nuggets: short video segments (one to 10 minutes, usually) mainly showing either a programming environment or a person’s hand writing on a tablet, but supplemented by interviews, field trips, and other material.
  • Nuggets are punctuated by quizzes: multiple choice, short answer, and coding in the online Python IDE.
  • Units are followed up by homework assignments.

After spending some time going though their course material, I decided that I like this structure. For one thing, it matches my short attention span. After talking to Dave Evans and some Udacity TAs, it became clear that designing good programming quizzes is one of the keys to turning lecture material into actual learning. Tight integration between listening and hacking is one of the reasons that online learning will — in some cases — end up being superior to sitting in class. So this became my main challenge: creating a sequence of programming quizzes that basically leads students through the material. It was hard and I probably succeeded only unevenly. The other really difficult thing was creating course material without the continuous feedback from students that I’m used to getting (even if it’s only counting how many people are working on their laptops during lecture).

The recording process is this. You shut yourself into a dark, soundproofed room, put on a mic, and turn on a video camera and a program that records the tablet. Then, record written and spoken material. The editors can remove bad takes and pauses, which after years of lecturing to a live audience was hard for me to internalize. However, in the end it was very freeing since I could draw pictures, change colors, lookup details on Wikipedia, and attempt to write neatly (always a struggle for me) — all without boring anyone except the editors.The editors are 100% crucial to what Udacity is doing, and the difference between unedited material and the final output is striking. I can’t say enough about how good their work is.

Initially I lectured from a very detailed script, which was useful at first, but eventually I felt that it wasted too much time preparing things that didn’t quite work, so I switched to going from coarser notes. However, even these coarser notes were quite a bit more detailed than what I’d typically put on Powerpoint slides. Recording for 8-12 hours a day was intense and left me fried, but on the other hand this has advantages. When spreading course prep across an entire semester, it’s sometimes hard to see the big picture and there are often some unfortunate compromises due to work travel and paper deadlines.

In addition to learning how to teach in a new format, I learned Python in order to teach this class. More than 15 years ago I realized I needed a scripting language and chose Perl since I hated Python’s significant whitespace. I still find it extremely annoying, but many other things about the language are beautiful and it’s probably the best current choice for teaching lower-division CS classes. My imperfect command of advanced Python may actually work in the students’ favor since it lead me to write obvious, not-too-idiomatic code.

To better support programming-intensive courses, Udacity’s Python IDE is going to need to support additional features such as access to documentation and access to saved files and to previously submitted solutions (ideally, it’ll connect to my Dropbox). A workspace something like Matlab’s is what I think it wants to evolve into.

The people working at Udacity are mostly young and work super hard: there were always people in the office when I recorded on evenings and weekends. Basically they’re in full startup mode. Food and drink is available, and even beer which came in handy after a long day recording.

Although I have sort of a faint dislike for some parts of Silicon Valley, the California Ave neighborhood in Palo Alto where Udacity’s offices are located is very pleasant, with plenty of mom and pop businesses and great espressos available at Zombie Runner nearby.

After my first day recording, Sebastian Thrun had me, the two other profs recording classes at the time, and several Udacity folks over for dinner. This was a great way to get to know people and it was fun trying on the Google Goggles and hearing Sebastian’s views on education. He has a huge amount of passion for this topic, as you might expect. He made an interesting analogy between university education now and show business around the time when film was invented. It took years for people to figure out how to use film and indeed, conventions are still evolving. Moreover, film didn’t eliminate theater, it just replaced a significant part of it. I’m reproducing his points badly, but the analogy stuck with me and I think it is one that has value.

My class hasn’t gone online yet but I’ll try to post more updates as that happens.


7 responses to “Recording a Class at Udacity”

  1. Very interesting! Do you think this basic pattern would suit any course/topic?

  2. Emanuele, I spent a while going through testing books at my university’s library a few weeks ago and didn’t turn up any books that I wanted to use. There are several that would make perfectly good textbooks for some other testing course, but none that does a very good job covering the material that I wanted to teach.

    Michael, that’s a pretty interesting and hard question. I think it would be hard to scale up a humanities course where, for example, you’d be grading people’s essays. Can the students grade each other? It seems difficult. For technical courses where we can design grading scripts, I think there is definitely promise.

  3. I am also finishing up cs253 after successfully completing the Feb cs101 course. I think that this could be a very useful class to take next, testing is often the root of all evil when it comes to production problems. looking out for the announcement.

  4. Paul, I hope it is a useful followup to 253 — a course I’d like to take myself. Hope to see you there!

  5. “Tight integration between listening and hacking is one of the reasons that online learning will — in some cases — end up being superior to sitting in class. ”

    I agree with this point. Go Udacity, bring a revolution in self-motivated learning.