Wednesday, March 28, 2012

Udacity: How it’s been so far

It’s been a few weeks since I started Model Thinking on Coursera and CS101: Building a Search Engine on Udacity, so I thought it would be an opportune time for me to update the world on how the two courses have been for me so far.

I’ll concentrate on CS101 on this post, and talk about Model Thinking in a separate post.

Executive summary: The CS101 course offered by Udacity has been amazingly fun. I’d encourage you to sign yourself up for an appropriate-level course at Udacity to see what it’s all about. It should require between five and eight hours per week, but don’t take my word for it. The next round begins on April 16th. Read on for a more in-depth review.

What is CS101?

CS101 is a seven-week course, and, despite its title, its main aim isn’t to teach students all about search engines. Rather, the instructor, Professor Dave Evans, on a one-year sabbatical from the University of Virginia, uses the structure of a search engine to teach students about Python, one of the more popular programming languages out there, and, also, one of the two languages used by Google. The course is aimed at people without a programming background, i.e. people like me, but there are many of those taking it who’ve had a considerable amount of experience in programming, albeit in different languages.

How is it taught?

The course is taught via a series of online video lectures hosted on YouTube, with units consisting of between 20 and 40 short videos, depending on what’s being taught in that unit, with quiz questions interspersed throughout the videos. The videos are, for the most part, of Professor Evans’ writing code or drawing diagrams on a white board. Quizzes can be in the form of multiple-choice questions or programming exercises which run on a web-based Python interpreter.

There’s a homework assignment for each of the units, with the due date for this particular courses being at 11.59 pm GMT on Tuesday, which is why no one really hears from me on Monday, as I’m struggling to get through the videos and homework in true procrastinator's form. The instructors use an auto-grader to mark each submission. I’ll talk a little more about the auto-grader later.

The final grade for this particular course will be based on the better of the average of your homework grades and what you score in the final exam (max(homework average, exam score), if you will). I’m not sure if that’ll be the case going forward, as a number of students signed up late following a feature in the New York Times some time in the third week of the current run of CS101.

[Edited on April 3rd as the grading structure has now changed, according to the e-mail for Unit 7] If students are able to solve at least three questions in the "Regular" section, he/she will earn a "Certificate of Accomplishment" for the course. Higher level certificates will be awarded to students who are able to answer more of the "Regular" questions correctly, and the highest distinction will require answering some of the "Starred" questions in addition to the "Regular" questions.

In place of study groups, Udacity offers an online forum for each course whereby students can post comments and questions, whether it’s on requests for help on homework questions (the questions I’m usually looking at) or general comments on how the format of the course could be improved or higher level discussions on what makes a good search engine and so on. It goes without saying that answers shouldn’t be posted on the forum, and, as far as I can see, the forum has generally been pretty well-policed in this regard.

What have I learnt?

This week, we’re on Unit 6 which is about recursive definitions. If you asked me to tell you what I’d learned in each of the previous units, I’d be hard-pressed to condense them to a few short phrases, but I’ll try. Up to this point, we’ve learned about strings (Unit 1), procedures (Unit 2), lists (Unit 3), indexing and how networks work (Unit 4) and dictionaries (Unit 5). Unit 7, Professor Evans says, will be all about field trips and interviews to put everything we’ve learned so far into context.

How have I found it?

So, how have I found it so far? It’s been incredibly fun, much to my surprise. I don’t have a programming background, as my undergraduate degree was a social science one, while my professional qualification is in finance. That being said, the Logic course I took in my first year in university seems to have helped, as a fair amount of programming seems to be very similar to structuring a clear argument. Also, my pattern recognition abilities aren’t too bad, so if you put a programme in front of me, there’s a fair chance I’ll be able to modify it to get the answer required. It’s the starting from scratch that is a bit of a problem for me. In any case, the boyfriend – who has years and years of experience in programming – has been quite impressed by how much I seem to have picked up.

I’ve quite enjoyed Professor Evans’ teaching style, although I’m aware that this may not be a style suited to everyone. I’ve seen some people comment elsewhere that they don’t like the ‘unsophisticated’ nature of someone writing stuff down on a board. I don’t have any issue with it whatsoever. All I can say is that I am learning, and, for me, that means he’s doing it right.

That’s not to say that I’m finding it incredibly simple. Not in the slightest. I’ve definitely struggled through certain units, and, for the most recent unit, my brain just shut down, although this could have been due to the fact that I haven’t had a good night’s sleep in a while. In any case, I found myself browsing through Python references online, trying to make sense of some of the concepts that have been taught, and that’s really why I like Udacity so much, because it’s making me put in the effort to understand things.

I’ve passed all of the homework assignments so far, with my lowest grade being 50% for Homework 3, arguably the toughest unit so far. I’ve mentioned that homework is graded via an auto-grader, and this has resulted in some submissions being marked incorrectly, for instance, if there’s an additional comment outside the code itself even though this doesn’t have an effect on the programme written. Students can be pretty vocal about this on the forum, and the teaching assistant for CS101, Peter Chapman, has been very prompt in addressing such comments.

Would I recommend it?

Oh, yes, definitely. In terms of the time CS101 requires, I’d estimate it at about two to three hours per unit lectures, and perhaps another three to five hours for homework, so perhaps five to eight hours per week in total. This obviously depends on what level you’re approaching the course from. It’s definitely doable even for someone with a full-time job, although I’d say doing more than one course at a time may be pushing it. I’m a bit apprehensive about the final exam, not least because I’m fairly certain it coincides with my first weekend break outside of England, but, at the very least, I know I’ve learned something.

And, you know what? I’ve found it so much fun that I’ve signed up for CS212: The Design of Computer Programmes, taught by Peter Norvig, Director of Research at Google. All that’s needed is what’s been taught in CS101. Alternatively, there’s CS253: Web Application Engineering taught by Steve Huffmanm, Hipfunk and Reddit co-founder, and CS262: Programming Languages, taught by Professor Westley Weimar from the University of Virginia.

The next round of Udacity courses starts on April 16th. What are you waiting for?

Related links:

No comments: