Udacity , the online learning startup that spun out of Stanford’s Artificial Intelligence MOOC last year, is wrapping up its first courses, with final exams due this week and grades soon to follow. After 7 weeks in “CS101: Building a Search Engine,” I received the end-of-term email from Udacity: “Congratulations to those who finished CS101!”
Unfortunately, I’m not one of them. I didn’t finish the class. I tried keeping up with the videos and exercises, but I gave up on completing the homework weeks ago. Initially I thought I’d skip the homework and just take the final. (There were two options for completing the class: a grade based 50% on homework and 50% on the final, or a grade based entirely on the final exam.) But as I fell behind in the watching the videos, I knew I wasn’t going to be able to do well on the final. So I gave up. I “dropped out.”
That’s becoming a fairly standard occurrence for me with my attempts to learn to program through these sorts of online classes. I get the weekly emails from Codecademy  too, for example, reminding me that I left off on “Code Year” around Week 4 (in other words, around January 30).
My inability to complete these classes does make me look closely at my motivations for signing up in the first place. Sure, it’s all under the guise of “learning to program,” but what exactly does that mean to me? What do I want to learn? What do I want out of these classes? What do I need to get out of these classes to do the sorts of coding that I’d do for my job? How is that different from the sorts of knowledge I’m interested in simply for the sake of having a better understanding of computer science? And finally, even if I’m a highly motivated student (wait, am I?), what works and what doesn’t work for me in these informal online learning environments?
There were a lot of things I really liked about Udacity, and frankly when the course opens for sign-ups again, I’ll probably re-enroll. But I’m also signed up for the CS101 course that Coursera  (the other startup that spun out of Stanford’s MOOC experiments) is offering. And so we’ll see what sticks – what I like in terms of the instructor, the course design, and the platform via which the class is delivered.
What I liked:
1. Project-oriented: The class was subtitled “Building a Search Engine,” and indeed by the end of the 7-week class, students had done just that. I really liked the idea that there was a specific, concrete objective that I was working on (although admittedly, I care little about this project, in actually building a search engine).
2. The instructor: The class was taught by University of Virginia professor David Evans, and I thought he did a good job with the lectures, the explanations, and the demos.
3. Short videos: Each week’s materials included 20-40 short (2–5 minute) videos, breaking the concepts down into small chunks. This worked well for me as I could find the time to watch just a couple of videos, rather than feeling I had to carve out the time for 90 minutes or so of lecture in one sitting. It also made reviewing concepts easier as I could find and replay a specific video rather than having to scroll back and forth in a lengthier clip to find that moment where the professor explained it.
4. Frequent quizzes: Almost all of these short videos were followed by a short quiz. These didn’t count towards your grade, but they were a way to check to make sure you’d grokked the concepts from the video.
What I’m not sure about:
1. Level of difficulty: I have never taken a college-level “Introduction to Computer Science,” so I really don’t know what to expect when it comes to the typical introductory-level CS course. As I watched the first few videos during the first week, I was thrilled to see some basic CS concepts, such as strings, explained. It felt as though -- finally -- I’d found an introductory class that wasn’t assuming students had a CS background already. But while the class “started simple,” the complexity ramped up pretty quickly, even in the first week’s materials. I don’t think the class was necessarily “too hard,” but I do wonder how much was being assumed about students’ background knowledge. This is a tough question, I think, due in part to the open enrollment and the wide diversity in the class make-up. And when you don’t know and can’t see your students, it’s hard -- if not impossible -- for the instructor to modulate a lesson.
What I didn’t like:
1. The forums: The forums for CS101 were meant to be the place that students went for peer support and discussion. There was some moderation, and you could vote answers up and down. There were also different badges issued for being helpful and the like. But there were times in which the forums struck me as mirroring almost every other programming-oriented site – that is, a fairly unfriendly place for novices. The students in CS101 were quite diverse, with a wide range of backgrounds (geographic, academic and otherwise). But clearly a lot of folks – particularly some of the ones that were really active on the forums – weren’t at an “introduction to CS” level, but were well beyond that (in fact, I was surprised at the number of students who said that they were professional Python developers). I don’t think this diverse student population is a bad thing. In fact, it means there are lots of interesting opportunities when it comes to peer support. But participation in a forum isn’t necessarily support or supportive. There were several threads that started as “hey I’m stuck on the homework” that became boasting sessions for who had the cleanest code, who found the problem the easiest to solve, and so on. Meh.
2. The robot grader: There’s that sheepish, satisfying feeling when you get a quiz back and you see the teacher has made a grading error in your favor. It’s not to satisfying when the grader is a robot. Udacity’s homework and exams were automatically graded, not by hand by the instructor – the latter would require hiring a ton of TAs to handle a class this size. But when the robot grader made errors on people’s homework – errors that were perceived in the students’ favor or not – it was just a bit unsettling. I had this experience during the first week where I banged my head against the wall for hours on the last homework question and knew that what I’d submitted as an answer was only partially right (and when coding, partially right is still totally wrong if the program doesn’t run.) But when I got my grade back, the robot had given me full credit – something that, truth be told, made me feel really skeptical of the whole assessment process.
Of course, the biggest problem I had with the class was my own inability to follow through, so take all my feedback with a grain of salt.
I’d love to hear others’ thoughts on the Udacity classes. Did you enroll? Did you complete the class? Are you signing up for the new ones that it’s offering? How does Udacity compare with the MITx class?