Friday, August 17, 2012

Khan Academy Does Computer Science

So by now you may have heard of the Khan Academy. If not, the Reader's Digest description is that its the Juggernaut of math and science tutorial videos. If that still doesn't do anything for you then watch Salman Khan's TED talk.
Now the Khan Academy has its cheerleaders and detractors and it certainly isn't perfect. But beyond its sheer number of tutorial videos there is also the whole interactive practice section that is pretty good. However, there have been those who have pointed out some of the problems with the actual tutorial videos (pedagogical and technical). It started with this video and has spawned the MTT2K Prize (Mystery Teacher Theater 2000) for the best video commentary on a Khan video.
But I digress, this is not what this post is about. This is what it's about:

That video is the introductory video in a series the Khan Academy has recently published to teach computer programming (specifically Javascript). Now here is the difference, unlike previous Khan videos which were static, these ones are interactive and interactive in a way that is relatively new to programming.
Each lesson starts with a topic and three important things: the code, the output and the audio description of what to do. But there are two real reasons this is so neat:
  1. The code is dynamic. That is, in classic programming, you would write your code and when done you would compile it or click run and then see what it does. Here, there is an interactive engine that runs over top the main coding engine that lets you see the code and edit it at the same time you see the output. And thus you see the results of code changes immediately as they happen. Furthermore, the parameters are editable by both traditional (typing numbers in) and dynamic (using sliders) methods. You can see more of this from this talk by Bret Victor (its long but very good).
  2. The tutorials are interactive. This means that you can see the code change automatically as the tutorial goes on (just as if you are watching a video) or you can actually click in the code, in real time, and change it as the tutorial is happening.
Here is the interesting thing though. Unlike the normal Khan Academy videos which could never replace a classroom teacher, this set of videos could possibly replace a computer science teacher. Maybe not fully but it's a step in that direction. Whether it could replace a teacher or not, if you want to learn Javascript, this is a pretty good place to start.