Online classes

This fall, Stanford has been offering free online classes this fall in three subject areas of computing: Artificial Intelligence, Databases, and Machine Learning.   It’s different from MIT’s excellent OpenCourseWare series in that Stanford is offering a course you can play along with while MIT is providing the materials for self-study.

For two of the courses, two tracks were offered: “basic,” in which participants watch lectures and do homeworks, and “advanced,” which adds exams and programming.  Since I have a full-time job, am participating in NaNoWriMo again, and am taking three of these, I opted for the “basic” track of each, though as a stretch goal, I tried to keep up with the advanced track as much as I could.

With the classes winding down, I thought it would be useful to jot down some notes:

I first learned about the Artificial Intelligence class ( on HackerNews before the buzz spread to SlashDot, Wired and other geek venues.  By the time the class started, there were over 80,000 people signed up.  I think they were stunned at the huge interest.

Overall, the course has been disappointing.

  • Lectures were a seemingly never-ending series of watching Sebastian Thrun’s hand draw probability graphs for us to interactively answer.  Comments directly on the video hosting site show the same amount of frustration and confusion that I had: it was unclear until the fourth week that we were supposed to possess and be reading specific sections from Norvig’s textbook.  (I have an older edition from a few years ago, I just would have liked knowing this sooner.)
  • The website was missing a lot of the infrastructure the other classes had.  For example, there was no official forum.  Instead, people were directed to two external social networking things, or to monitor the fucking overbusy Twitter feed.   But back to the previous point, the section with specific readings was not readily exposed on the site.  I found it through three levels of clicking on random links.   Duh, that’s why these quizzes make no sense.
  • As a philosophy, they are focused on grades rather than learning.  For example, only the first attempt on an exercise is considered.  In contrast, the other two courses mix up the questions a bit, expect you to make multiple attempts, and take the best score of the lot.   Though I’m not taking this for any kind of credit, certification, or endorsement, having the score positioned in a positive way is much more motivating.

After  the second exam, I decided I have other things I’d rather do right now.  I have the textbook and the videos are online should I want to revisit the material later.

A few years ago, I had the opportunity to audit an excellent Machine Learning course, doing everything except the project (for logistics reasons).  I saw an opportunity for a refresher in Andrew Ng’s Machine Learning ( course.

Overall, the course has been fun.

  • The material is self-contained.  While there are links to other references, everything you need is accessible on the site.
  • Professor Ng is very personable.  His lectures are presented in topics chunked into 8-10 minutes each – a pretty nice block to sample at intervals during the day.  There are interactive quizzes – but usually never more than two per lecture, and only then to help reinforce the material.  (Whereas the AI class, the quiz was the material.)
  • As a philosophy, the course is focused on learning.  The quizzes draw from a body of questions.  You can retake them – and indeed are encouraged to.   Only the highest score is recorded.   (Yes, I know I’m auditing – the overachiever likes to see faux numerical progress.)
  • Programming assignments use software that’s available on multiple platforms.  During the course, I’ve run Octave on Windows, Mac and Linux, cuz that’s how I roll.  The first assignment was essentially a tutorial of the software, walking you through the material in the prior lectures.   You were encouraged to keep trying until you got the answer correct.

Though I did the first programming assignment, I had to taper back due to time constraints. I am behind a couple of lectures, but otherwise current on all of the quizzes.

I was doing well until the material started delving into hardcore notation.  I’m soooo not an abstract thinker.  When I see something like this:

$latex min_theta space C sum_{i=1}^m y^{(i)} text{cost}_1(theta^Tx^{(i)}) + (1-y^{(i)}) text{cost}_0(theta^Tx^{(i)}) + sum_{j=1}^n theta_j^2$

I have to pause, deep breathe a few minutes, then think really hard about what the question is really asking.  If the same question is presented with a graph or prose, I do very well.

Finally, the Introduction to Databases course ( was something I learned about only a week before it started.  Though I have some SQL-fu, I don’t have any formal training in databases — my university just didn’t offer that sort of thing.

I enrolled, thinking I’d just check it out.  To my delight, it’s been the most rewarding of the courses.

  • As with Machine Learning, the course is self-contained.  While there are links to other references, everything you need is available on the site.
  • Professor Widom is very personable.  Her lectures are also presented into topics chunked into 8-10 minutes each.  Each week, she organizes a “screenside chat” on YouTube where she wraps up material, administrivia, and calls out any specific learnings from the classes.  It’s low-budget (she and two student volunteers), but it works very well.
  • Her class has a similar philosophy in wanting to emphasize learning over a score.  The quizzes draw from a body of questions.  You can retake them – and indeed are encouraged to.  
  • The various programming assignments have a pretty novel workbench that shows you the result.  For example, when writing an XML query with specific database schema used throughout the course, you’re presented with the results of your solution and the “correct one.”  This has been invaluable to my understanding of this stuff works.
  • The web site has a fairly active forum with a vote up/down option.  The discussions have been very useful because the biggest problems I’ve had with the programming is the syntax, not the logic.  For syntax problems, the workbench hasn’t been helpful.  Perhaps Visual Studio and XCode have spoiled me, but a “Hey, dumbass, you forgot the semicolon at the end of a statement” would have saved a lot of time.

The course has exposed me to relational algebra, DTDs, XML, XQuery and XSLT — not that I want to use them again.  An analogy would be getting the MBA is great for knowing enough accounting to ask useful questions of the lady I’m paying to do it for real. 🙂

The SQL-related components are done with Sqlite, though I have access to MySQL and SQL Server.  I was so excited when I discovered a solution that reported different results on each database, and that this was covered in class a week later.

In January, Stanford is offering several other courses online:

*Lean Launchpad Technology Entrepreneurship Making Green Buildings Information Theory
CS 101 Machine Learning Software as a Service *Human-Computer Interaction
Natural Language Processing Game Theory Probabilistic Graphical Models *Cryptography
Design + Analysis of Algorithms

Lots of cool stuff!  My big decision will be whether I want to invest my time in trying the three I’ve asterisked, or start the iOS series at UW.

6 thoughts on “Online classes”

  1. Your dedication to learning is admirable, but don’t expect me to imitate. I can’t imagine learning more at my age – I think that gene has gone dormant. Plus, the gray matter is a little brittle these days. Do you think you found the DB class more enjoyable because it was more practical than AI?

    1. ]] Do you think you found the DB class more enjoyable because it was more practical than AI?

      That may have something to do with it. I generally enjoy learning more if I can be hands-on in some way.

  2. Did the DB course cover DB design, in particular, data normalisation? We’ve had some great fun* this week trying to figure out the best way to normalise some of the data we’re going to store in a new DB we’re designing…

    * both literally and in the ironic sense (ie “fun”)

  3. Steve – normalization was mentioned in one of the lessons, but as a theoretical point. The class would certainly benefit from a real-word “clean up this mess” exercise. It’s not dissimilar from operating systems classes omitting actual system administration. (Or: “your IT guy quit, now what?”)

  4. I enjoyed your summary and critique of the classes. These experiments, and the results of the experiments, can help shape how online education progresses. It also gives me ideas for my own in-person teaching!

    Thanks for providing the list of upcoming classes too! I’d love to sign up for one. Of these, Cryptography appeals the most; let me know if you do end up signing up and maybe we can be study buddies!

    They have also added an Anatomy class that I’m curious about (fewer details provided about the course topics and structure than for some of the others).

    P.S. Nice nod to the prior ML class you audited. 😉

  5. Thanks, Kiri. I just finished both classes this weekend. I really like the concept of the test harness the database course used for its exercises. While it’s still very rough around the edges, it kept me interested in doing all of the queries.

    There are a lot of interesting sounding courses on the docket for early next year. To be honest, I can’t decide which ones to take. I’d love to learn more about cryptography, but if it gets too heavy into pure mathematics (lots of Greek symbols without a textual explanation), my brain could ‘splode.

    Anatomy would certainly be an area that I’ve never explored — they’re covering *just* the arm. The abstract for Model Thinking and Probabilistic Graphical Models also sound very interesting. Since they appear to be staggered, I may take a shotgun approach and see what sticks.

Comments are closed.