I just started my next set of courses on Coursera this past week. If you haven't heard of it, Coursera is an organization that hosts free online university-level courses in topics ranging from calculus and philosophy to song writing and operations management. While there are lots of educational resources on the web, what makes Coursera especially appealing is its courses are developed and taught by real professors in brick & mortar universities around the world (including my alma mater). Coursera provides a framework for these professors (well, their grad students) to publish their material for the web. Some courses even provide a certificate of accomplishment at the end.
I've taken only one class so far—Functional Programming Principles in Scala—and I really enjoyed it. It was taught by Martin Odersky at EPFL who is the designer of the Scala programming language itself. Scala is currently in use at some of my favorite web companies, so it's not a purely academic exercise. This course's structure is as follows: there are 6–8 lectures per topic each around 10–15 minutes long over the course of 7 weeks. Each video has at least one mid-lecture quizzes to test if you're following along. You can stream these lectures over the web, but if you're on sub-standard internet like me, you might prefer to download them all at once and watch them offline (my iPod Touch was able to play them without any reformatting). Each week, there was a homework assignment on the week's topic which was definitely hard and required a fair bit of deep thought to work through efficiently.
This course served as my first "official" (i.e. taught by a professor) programming course. Until now, most of my programming knowledge had been self-taught. In the past, I would pick up a book like The Little Schemer, or The Structure and Interpration of Computer Programs, and start working through the exercises. This works well enough, and these books in particular—with their heavy focus on recursion and functional programming—gave me an advantage coming into the course. But what Coursera provides is a nice framework for interaction and feedback. There are massive active forums where one can post questions about the course or receive feedback on assignments. Without this kind of feedback, being an auto-didact can be sort of difficult to maintain. I feel I've learned a lot more about the craft just in these 7 weeks than in any previous 7 week period. Even better, I was fortunate enough to find, through the forums, an IRL study buddy in Johannesburg, which only enhanced my appreciation of the course.
I signed up for Coursera as a way to test the waters of online education. I've been considering a return to University and, given our potentially long term stay in Africa, an online degree seems to make sense. I fear I've been spoilt, though, by the free, high quality education I've been able to get through Coursera, but I suppose that's not really a bad thing.