Khan Academy’s Introduction to Programming Modules Are Really Something Special

Khan Academy released their Introduction to Programming modules today and they’re really great. Go play. Here are my favorite pieces:

Changes to the code affect the output dynamically. No rendering, no compiling, no reloading. Change the width parameter of a rectangle in the code and the rectangle changes without any extra effort on your part. You can hover your mouse over any parameter and a slider appears, letting you change that parameter smoothly over a range of values. (Bret Victor modeled this kind of programming environment in his Inventing on Principle talk. Try it out on the tree generator.)

Contrast this with Codeacademy where you have to click “Run” or press “Enter” to see the result of your work. Or just now, when I was working on my front-end web development final project, I would make a change to my code in one window, click over to my web browser in another, and then click “Reload” to see the result. That friction may not sound like much but it often makes programming feel less creative and more mechanical.

You can interrupt the lectures at any point and mess around with the lecturer’s code. You press play on the video and you watch the lecturer type code on the screen. You hear the lecturer talk about the code as she types it. This is how I’d predict “Khan Academy does introduction to programming” would look. But the student can press pause at any point, mess around with the current state of the lecturer’s code, and watch the result change in the output window. She presses play and her changes revert back to the lecturer’s code and the lecturer continues on.

Don’t underestimate this feature. This means that if an explanation is unclear, if the student doesn’t understand the effect of a given parameter in a function, she can pause the explanation and instantly generate a series of examples of the parameter’s effect. (eg. “Oh I thought that parameter was the top coordinate of the rectangle but now I see it’s the height.”)

The lecturer is Vi Hart Khan Academy intern Jessica Liu. That’s (still) fun.

Students are doing and listening simultaneously. This isn’t the place to contrast Khan Academy’s treatment of math against its treatment of programming. Let’s just note that students play a very active role in these lectures. They’re going to love it.

2012 Aug 14: John Resig has an interesting write-up of the development process and explicitly namechecks Bret Victor’s talk as an inspiration.

Featured Comments:

The Puzzle School:

If we can add in challenges (e.g. Angry Birds) where students have access to environments and tools that offer this type of instantaneous feedback so that students can solve those challenges through hypothesis that can quickly be validated or invalidated through the feedback loop then I think we will have a learning environment that completes the loop by providing intrinsic motivation to engage with the environment by solving the challenges.

Michael Pershan:

I love that the lectures are from a woman, that she uses “her,” “his,” “he,” and “she” in roughly equal proportion and talks about “your mother, the programmer.”

Matt McCrea:

Wouldn’t it be great if the math section were executed in a similar way? Imagine a video that poses a question with a scratch space to execute and test solutions. Obviously much more complicated, but I’d bet there are certain situations in which at least it’d be a great step in the right direction without too much effort.

David Patterson:

I think most Computer Scientists would cringe at this being called “Computer Science.”

About 
I'm Dan and this is my blog. I'm a former high school math teacher and current head of teaching at Desmos. He / him. More here.

26 Comments

  1. This type of environment is a big step in the right direction.

    If a student is required to do some work or derives inspiration from this site or others then you’ve got a good complete system.

    Ideally you wouldn’t have to require students to engage with learning and it’s not guaranteed that a student will be inspired enough to create their own work (although if they are then great).

    If we can add in challenges (e.g. Angry Birds) where students have access to environments and tools that offer this type of instantaneous feedback so that students can solve those challenges through hypothesis that can quickly be validated or invalidated through the feedback loop then I think we will have a learning environment that completes the loop by providing intrinsic motivation to engage with the environment by solving the challenges.

    To me that represents one of the greater ideals in education. This is a step toward that and the fluidity of the feedback is very well done.

  2. There’s also nothing to install, and you can upload fun projects. It’s a bit of a hybrid between Scratch and CodeAcademy.

    I personally prefer walkthroughs to lectures when I’m learning to code, but I’m open to that being a matter of preference when it comes to short, laser focused videos that have lots of room of real interaction.

  3. Also, I love that the lectures are from a woman, that she uses “her,” “his,” “he,” and “she” in roughly equal proportion and talks about “your mother, the programmer.”

  4. Michael P,

    I think this is the biggest issue with Khan Academy’s current execution. Most people will sit down to it and not know what to do. They may figure out that they can tweak the code and play with it, but they won’t know how to move beyond that step (if they even figure out that step).

    This is why I think you need to introduce challenges that leverage these tools that students need to solve that start out very easy and progressively get more challenging.

  5. Wouldn’t it be great if the math section were executed in a similar way? Imagine a video that poses a question with a scratch space to execute and test solutions. Obviously much more complicated, but I’d bet there are certain situations in which at least it’d be a great step in the right direction without too much effort.

    Anyone have any ideas for areas of K-12 math where this might be done?

  6. I am so pleased to see this interactive demo on “rotation”, because it does exactly why I tell my little artisty kids why they need geometry. I can see giving this as an option for transformations, as it is accessible enough for students who are interested. for I hope they fix the errors in the show and tell, because the picture does not stay on their canvas.

  7. Richard Lewis

    August 14, 2012 - 4:25 pm -

    6 Matt McCrea
    Wouldn’t it be great if the math section were executed in a similar way?

    There maybe a workaround to that; in an integrated math/science/programming class, the KA CS platform (with supplements) could be used to teach math/science so that the benefits of this CS curriculum extends to other subjects.

  8. KA seems to be experimenting with more discovery learning recently; a while back, a team member at the Discovery Lab blogged about a PBL lesson here – http://tinyurl.com/9ufgv8s Seemed to match the 3 Act structure very closely.

  9. Richard,

    Are you thinking along the same lines as Conrad Wolfram’s TED Talk? Check it out if you’re not sure what I mean – http://bit.ly/azCYie

    The integration solution is definitely interesting, and probably the easiest route to execution at least for parts of math that are more algorithmic. Anyone have anything that’d work for something along the lines of a PARCC assessment or a 3 Acts problem?

  10. I agree that this is impressive stuff.

    @Matt I hope it will not be like Wolfram’s TED talk. I think he places too much emphasis on automatic calculations without specifying when doing ‘steps by hand’ IS helpful. Following this through he seems to prefer a function “drawHead()” without bothering too explain ellipses, lines. After all, you could argue, why learn them if every programming language has packages and APIs anyway?

  11. David Patterson

    August 15, 2012 - 5:59 am -

    There’s a Math section of the “Computer Science” section that does cool things like Pascal’s Triangle:

    http://www.khanacademy.org/cs/pascals-triangle/803149756

    Watching the video made me feel like I was drinking from a fire hose…I didn’t have time to think while watching it.

    As a Computer Scientist myself, I think it is cool that this opens up basic programming to many people. But the subjects and things you learn here are like learning how to paint and decorate a house. You still wouldn’t be able to build a house or fix a leaky pipe. I think most Computer Scientists would cringe at this being called “Computer Science.”

  12. While in isolation each of these modules is interesting, the sum total is still a series of skill-building blocks, on the web. Start with variables, or syntax, etc. That’s all Khan Academy ever is.

    If anyone wants to really learn programming from scratch, or needs to teach it, I highly recommend the Greenfoot environment, where students are immediately thrown into a game world that they can easily customize. A series of “scenarios”, or mini-games, are used to present programming concepts. The co-creator, Michael Kolling, is still producing short videos that present each concept, and students play with their own scenarios to implement their learning.

    That is what teaching is, not the Khan Academy route.

  13. Technically the environment is actually kind of similar to the Squeak or eToys environment, just much, much, much less ambitious and way more straightforward. But Squeak’s Smalltalk environment lets kids edit live objects in a similar way.

    I guess this is one of those cognitive load issues though, because Squeak tends to be overwhelming because you can immediately do anything.

    I guess the big question is whether Sal Khan and Alan Kay will slowly converge.

  14. The introductions are good, simple and short. I like that it defines the elements as it moves along. They should connect the introductions of new elements to the documentation more. Software language documentation has a style and form to it that evolved to the way programmers think. Like the way music is written for musicians. You pick up on this early, even as a novice. It is like a catalog of lego blocks.

    As an exercise, list all the ways that programming is different than math.

  15. I think the criticism of Khan is important in order to continually push innovation and improvement. However, Khan does demonstrate an important life lesson: “Don’t wait until you’re perfect, JUST START!” How many times do we let our insecurity, inadequacy, and fear of criticism keep us from starting on a great idea in the classroom? Khan started off with videos that were barely readable and completely sucked, to videos that just suck. Things keep getting more and more and more interesting though. And Khan will always be a major player in education, because he doesn’t wait, he just does it!

  16. I like KA. When my high school students come into my math class with chem or physics homework and ask questions I can refresh myself on how to do whatever it is they are doing. The students can use it the same way in my math classes, as a reference or reinforcement. I put these programming lessons in the “cute but not really useful” category. They are not good for reference (which one do I look at?), the narrator talks at warp 9, and many of the explanations are in the categories of “huh?”, “what did she say?” and “that makes no sense”. I know how to program so everything makes sense to me. For a newbie this would be a disaster. With a teacher discussing and supervising as the lessons are being done I think these would be cool. But then you have lost the whole point of KA lessons. In Programming I basically teach the same material as the KA programming lessons using Small Basic, Scratch and Corona. A lot more fun, a lot more versatile and a lot more exploratory. Teaching programming is more than teaching code. It has to include IDE management, file management, experiencing multiple environments and a number of other things that do not come to mind at the moment. These KA programming lessons are not a step in the right direction.

  17. A lot of great commentary here, incl. criticism for KA that I didn’t touch and praise that I didn’t even think about (ie. the significance of a female narrator). I pushed a bunch of you guys up to the main post. Thanks for helping out.

  18. Question for you programming teachers: I have a student who’s interested in wolves. I’m thinking he would enjoy doing a simulation of a wolves-deer population problem. I haven’t done any fun problems like that in 12 years, and I’m way out of the loop. Any recommendations on what programming language would be good for this? Or links to discussion of similar projects?

    Thanks!

  19. Kudos for Dan not just correcting but lining out the fact that it was a mere earthling Jessica and not an obvious alien plant (Vi Hart) who did the narration. And for those who haven’t followed the obvious breadcrumb trails to Processing that John Resig has left…look again.

  20. Does anyone find it ironic that the first thing KA does well is teach people how to train their computers to jump through hoops?

    I hope Sal has a holodeck in the wings so that we can start doing history, science, real math, and whatever else as nicely.

    The stopping the lecture to play thing is awesome though.

  21. Hi Shawn, your own programming video lectures are also clear and engaging, and probably a lot of fun for your students. But if they were to be strictly reviewed by someone experienced in the subject for conceptual and factual correctness, problems would arise there as well.

    For example, does the following demonstrate a good conceptual understanding of Boolean variables?

    If (on) then on = false; else on = true;

  22. “For example, does the following demonstrate a good conceptual understanding of Boolean variables?

    If (on) then on = false; else on = true;”

    That would be a very good conceptual question for a CS student. That is the basic pattern for a state toggle. A question like “What does this statement do and tell me where you might use it?” would be superb, on all fronts. To the general population though, I might as well have asked what a C7Dim chord is, and where you might use it.

    Bob Hansen