Why I'm excited about Khan Academy Computer Science

      Filed under: Articles   

A modified version of this post was published on EdSurge under the title “Stars and Kisses for Khan Academy’s CompSci Program.”


While it’s not going to revolutionize education (or even computer science education), the Khan Academy’s new Computer Science program marks a great step forward for the Academy by making the lessons open-ended and tinker-ready. Critics take note: Khan Academy is on the move.

Last week, KA’s “resident Javascript expert” John Resig announced a new addition to their curriculum, a Computer Science section that features an unusual interface merging a recorded screencast with an interactive programming environment. Even if you’ve already read John’s post, you should try a programming tutorial to better understand the experience. Like all Khan Academy lessons, you begin by pressing the play button, and then you watch and listen to explanations of new concepts and a few worked examples. But since most explanations and worked examples about programming can take the form of computer code (rather than free-hand drawings), there is really no reason for the visuals to be locked up inside a high-bandwidth pixelated video. With some technical magic, you can have the code “playback” happen directly in the webpage, no flashy youtubes necessary. Once you break the code out of the confines of a video, all sorts of new possibilities open up. John and team demonstrate a few: their codecasts are viewer-editable, code changes are auto-evaluated, everything is forkable and shareable. Why does this matter? It lets students effortlessly switch between instruction and experimentation, encouraging tinkering as a mechanism for learning. In the Khan Academy system of template-generated, machine-graded practice problems, this open-ended messiness is a breath of fresh air. Yes, the side-by-side editor may look a lot like Codecademy, but there’s more to it than that: the experience is equal parts Codecademy, Khan Academy, and Studio Sketchpad.

I have to admit, part of the reason that I’m excited about this new platform is that I could have penned a near-replica of John’s announcement to describe my own recent work on Studio Sketchpad. In 2010, I began building this website based on a similar concept of tinkering, using code that generates interactive graphics as a fun way to learn to program. There are many such sites around today (and Sketchpad certainly wasn’t the first), each of which has a different specialty: OpenProcessing is portfolio-oriented, Scratch is drag-and-drop simple, Kodu and PlayMyCode are game-oriented, AppJet was webapp-oriented, Codea is iPad-classy, JSBin is developer-functional, Mozilla Thimble is webmaker-targeted, Programr, TryRuby, jsdo.it, wonderfl, sketchpatch, and the list goes on. Earlier this year, I organized a panel discussion at the Digital Media and Learning conference solely to compare notes with some of the other people building these tools: Building four communities for learning, tinkering, and remixing with code.

Motivated by John Seely Brown’s argument for the atelier model of learning (JSB inspired the open Studio in Sketchpad), Sketchpad is deeply collaborative and visually interactive: it builds on the real-time collaborative Etherpad text editor, the interaction-oriented Processing language, and a Github-like network of forking and remixing. (Processing, I should note, was first ported to Javascript in 2008 by none other than John Resig). The Etherpad-based code that’s powering Sketchpad is now old and quite creaky, but several college courses and programming workshops use it, and I still try to push it’s limits every now and ten. Thanks to a flash grant from the Shuttleworth Foundation (via Philipp Schmidt of P2PU fame), I was able to take a few weeks off between my time at Grockit and the Minerva Project to build something brand new: sketchcasting.

What I built – inspired by an experience I had running a P2PU course using Sketchpad in 2010, and enabled by the great Mozilla Popcorn project – functions a lot like the new interactive code-casts on Khan Academy. Watch the code being typed as you listen to an accompanying audio narration, pause playback to fork and experiment yourself with the code at any moment, then show and share what you create (an example). The best part is that anyone can record a sketchcast, not just me. Here’s how this works:

Sketchpad’s sketchcasting is technically inferior to Khan Academy’s interactive code tutorials, but sketchcasting does have three great things going for it that I’d love to see the Khan Academy incorporate in the future:

  • Anyone can record a sketchcast. Open the normal code editor, press “record”, and talk as you code. You’ll get a unique URL to share with others.
  • Sketchcasting is collaborative. Groups of people can code together while recording a sketchcast, and groups of people can code together while experimenting with forked versions of existing sketchcasts.
  • All viewer comments and Q&A are automatically time-coded. While I’ve argued for and hand-built time-anchored Q&A learning tools in the past, I got it here for free as a part of the excellent Soundcloud audio player. Thanks, Soundcloud!

Hats off to Sal, John, and team at Khan Academy. It’s great to see this new approach of weaving together instruction with open-ended experimentation. True, it’s not true scaffolding that fades, but modding/tweaking/remixing are arguably a new form of structured support: letting learners choose their starting point and their own goal. This is a common thread in learn-to-code community websites: Finding and tweaking existing work acts as a great entry point for later creating original work. I’m excited to see Khan Academy enable this sort of structured experimentation. I look forward to hearing status updates from Sal, John, and team in upcoming months and, if all goes well, hope to see more open-ended messiness make its way into other parts of Khan Academy.