One of my professional plans for this semester was to take two of Stanford University’s massively-open online courses (“MOOC” for short), one on Introduction to Computer Science and the other on Cryptography. I had planned on taking these, that is, until the courses started suffering repeated delays. The last email I received from Stanford cited “legal and administrative issues” that have pushed the Cryptography course -- which was originally slated to start in January -- back into March, and the CS course that was originally scheduled for late February has also failed to materialize. I think I’ll be writing a separate blog post regarding what I think about these delays and what it might mean for Stanford. Let’s just say it doesn’t make Stanford look good. In the meantime, I decided I was ready to learn and didn’t want to wait around anymore, so I signed up for the CS101 class offered by Udacity.
You’ll remember that Udacity was formed by Sebastian Thrun, who was involved with Stanford’s MOOC on artificial intelligence. That class enrolled 160,000 students, putting the “M” in MOOC and driving Thrun to believe his reach as an instructor shouldn’t be limited by physical classroom space.
The CS101 class focuses on Python and consists of seven one-week units. We just completed Unit 2, which focused on procedures, if-then statements, and loops. It’s been an interesting experience so far.
The pedagogy of the class is quite sound and well-designed. Each unit so far has consisted of 20-30 short lectures (averaging around 2-3 minutes in length) on YouTube, many of which are followed by quizzes that are either multiple choice (think: clicker questions) or exercises in writing code in an interpreter. These don’t count towards one’s grade (yes, there are grades; more in a bit on that) so they are risk-free. And as we know, frequent low-stakes quizzing is an excellent way to improve learning. The main body of student work comes from weekly homework sets, which consist primarily of code-writing exercises that are graded by scripts.
Maybe it’s my lack of programming skill, but I’m surprised at how rigorous the course has been. It’s not a cakewalk at all for people who are relative beginners --- I’ve seen more than one “farewell” post on the discussion boards from students who just can’t keep up with the pace and are dropping out. The quizzes, although they entail no risk to my grade, have been quite challenging times, as have some of the homework problems. (One problem from Unit 1 -- to write a procedure that rounds a number to the nearest integer using only string methods and basic arithmetic -- took me multiple sessions to figure out.)
The rigor on the “micro” scale is balanced by good instructional design on the macro scale. Everything in the course is focused on a single, overarching project: building a web crawler. We are learning about control structures and loops and string methods and so on, not as isolated topics, but because we need them to complete the project. Even the title of the course reflects the project orientation: it’s called “Building a Search Engine” rather than the usual “Introduction to Python” or something similar.
So, whether or not the Udacity people realize it, they’ve set the course up with several design points that promote engagement and creative flow: clear goals and a ready-made structure (the web crawler project) into which new concepts can be placed, immediate feedback (since quizzes and homework are auto-graded), a balance between ability level and challenge, and a sense of personal control over our activities.
Another thing the course has going for it is a highly robust discussion forum. I don’t know how many people are enrolled in CS101 right now, but the forum for the class is constantly churning with new posts and replies. I regularly learn as much from interacting on the boards as I do from the class itself, and the esprit de corps is fun. (It’s amusing to see the same kinds of students on the boards here as you would find in a “real” CS class -- the complainers, the overachievers, the grade-grubbers, etc.)
There are definitely some kinks to work out in the course. Occasionally the pedagogical goals for a unit are not entirely clear, and a quiz or homework question doesn’t see m to assess the right thing. For example, in the Unit 2 homework there was a question that gave three code snippets that involved loops, and we were asked to determine whether each loop always finishes, sometimes runs forever, or whether it’s unknown to anyone whether the loop finishes or not. One loop was an implementation of the Collatz conjecture. It seemed that this question was not testing one’s knowledge about the termination of loops but rather whether you could recognize the Collatz conjecture, specifically the fact that it is a conjecture. Is that the pedagogical goal for the problem? If so, is it an appropriate one? I imagine there will be some discussion-board controversy on this once the homework is graded. (We did get this xkcd comic as a hint -- I suspect the only people who understood the hint were the ones who didn’t really need it in the first place.)
Back to grades for a moment. There are, apparently, going to be grades in the course. It’s not completely clear what the purpose of these grades will be other than as a summative measure and as a motivator. There is currently no Udacity “degree” that would require maintaining a certain GPA. But looking at the list of courses that are coming up at Udacity, I wonder if that’s going to change. I also wonder about the eventual pay structure for Udacity; it’s currently labeled as “Beta”, which translates into “Eventually this will cost money”. Is Udacity taking a “freemium” approach in which they’re giving away CS101 for free but will charge for more advanced courses? We’ll see.
Could CS101 be replicated in a traditional university setting? Maybe, with modifications. I could definitely see the setup of CS101 being mapped onto a traditional Computing 101 course in college, with an inverted classroom structure that keeps lectures with frequent quizzing outside the class (as CS101 does) and puts a portion of the homework, or a more advanced project, as the focus of the class meetings. It’s certainly an engaging way to run a class like this. People who like computer science like doing things, and that seems to be what CS101 is all about so far.
I don’t know if Udacity poses anything like a serious threat to the traditional university, but I do think traditional higher education should start paying attention to what Udacity is doing. It’s a serious class with a lot of good things going for it.