Hacker News new | past | comments | ask | show | jobs | submit login
Khan Academy: Computer Science (khanacademy.org)
336 points by johns on Aug 14, 2012 | hide | past | web | favorite | 54 comments

The videos for CS are brilliant. I don't think programming videos could possibly be more perfect than this.

For example: http://www.khanacademy.org/cs/booleans/839898911

So you can scrub through the lesson and play and pause it, and the instructor can type code into the editor directly causing it to output on your screen in real-time. But the amazing outcome of this is that the viewer can pause the lesson at any time and fiddle with the code directly, instantly changing the outcome. The downside to this is that if the lesson is then resumed, your modifications are kept and the code will be out of sync with the teacher's.

Another cool thing is that the teacher can draw directly onto the program output section just like in normal Khan Academy videos.

Brilliant. I'd say it's almost just as good as having someone right next to you teaching you how to code. The virtual teacher is typing the code directly into your computer!

Awesome - glad you're enjoying it! One thing to note: If you make changes to the code and then hit play again right now the user's changes are lost (making sure that playback will continue to work). We definitely want to persist those changes in some way, automatically, although in the worst case the user can always make some changes and hit 'Save' and they'll be saved to their own account.

Thanks for dropping in.

As long as you're here, I'd like to bring to your attention a UX issue that might deeply impact first impressions. If you visit the site for the first time and click the play button, there's a good chance that, immediately following this click, the mouse cursor will stray into the code area.

This causes the code to turn white, and so the viewer just sits there listening to the lesson and watching things change in the running-program frame, oblivious to the fact that the code is invisibly changing, too (one of the coolest parts of the product).

You might want to unfade the code and get rid of the "Pause" button if the cursor hasn't moved in a while, to ensure first-time visitors don't miss the awesome code-to-audio syncing.

Other than that, I'm super impressed with the site.

My ideal scenario would be to have the student's code saved in a sideboard, while the teacher's code would take over the forefront. Sort of like a really minimalist branch feature.

If you could make it work with the layout, it would be really cool to have the student's code window physically move off to the side, indicating that the teacher was taking over, but their code would still be there whenever they wanted to get back to it.

That's a pretty good worst case scenario. I wouldn't change how it works at all.

It is great, but in my opinion "almost as good" is a big stretch. Having a tutor right next to you is fundamentally different in a number of ways. For one, you can ask any question and likely have it answered immediately.

Of course, the KhanAcademy course actually exists whereas private tutors for all students do not. So my point only stands in an idealized world were we assume cost/time/space are no obstacle.

I think there is some bug here? Clicking on the above link about booleans leads to code about how to draw ellipses.

No, it's about booleans all right. Scrub through the lesson and you'll see how.

Methinks "Computer Programming" or "Information Technology" would be a better title for this section than Computer Science. They are more general and applicable to the content.

I disagree. We're working towards the goal of having a comprehensive Computer Science curriculum and this is just the first step. I talk more about our reasoning and methodology here: http://ejohn.org/blog/introducing-khan-cs/

I really love what is being done here so far, especially the voice overs and live code editor, but I think it might be helpful to first-time visitors to put some more of that info on the khanacademy.org/cs page as well.

Right now, at first glance it just looks like the Khan "Computer Science" curriculum is solely about learning how to make drawings and animations with processing.js. It can be a bit confusing to the first-time visitor, who might be asking "What is this page going to teach me exactly?".

This. I appreciate the goal of the program most certainly, but I'm having a little trouble seeing a road map from the current spot to something like the theory of computation or complexity theory. It'd be cool if once the KA people have sort of a direction or loose map of how this is going to work that they could blog about it again.

It's cool, regardless, I'm just personally a bit of stickler for calling things Computer Science. I think the term is overused to the point of losing its original meaning.

This. Exactly. I was really confused. I've been trying to learn JS on an off for about a year. When I was shown the new CS program at Khan Academy today, I was instantly confused because...I was drawing pictures using processing.js. So..was I learning javascript or was I learning this processing.js that runs on top of javascript? As a beginner, I think it's super important you clarify this.

John, while I think that a lot of value will be derived from this (the environment is very cool!), your blog included the following:

"When I look back at how I became interested in programming, or ask other programmers about how they started to program, the answer is very frequently: “I was given a [Basic/QBasic/Python] compiler and a bunch of programs and I wanted to understand how it all worked so I could write my own!” It was only after digging in to the code that the student wanted to understand how to tackle certain programmatic challenges – but they then did so with great gusto!"

Which sounds great, but speaks directly to what cantankerous mentioned: this is more about computer programming than it is about hard Computer Science. Programming is just a subset of CS, and I've personally known several CS researchers who haven't touched code in years. This topic has been beaten to death, but this approach is conflating the tool (programming) with the study (CS). I realize that there's much more to come, but the introductory material that I've viewed thus far does nothing to dissuade me of this fact.

Again: I think that this is a laudable effort, and hopefully will encourage many more youngsters to get into programming. I was just hoping to see material more along the lines of computer numerical methods, computer architecture, data structures and so forth, that would be a true introduction to the wider world of what CS is.

We also do already have some more theoretical material.

For instance, I just published a Turing Machine simulation (http://www.khanacademy.org/cs/turing-machine/938201372) and we have a random walk simulator (http://www.khanacademy.org/cs/random-walk/803118438).

Awesome work! But I have to agree with cantankerous. This is more about programming than computer science. If the premise is that a student should learn programming before computer science that's fine, but the curriculum should be labeled as such. The drawing tutorial video highlights this point for me when it makes a false assertion about coordinate systems in "computer science". More than just arguing semantics, this could create false expectations among students of what they are learning compared to university computer science programs.

John - a complexity and algorithm program done the "Khan way" is what I secretly wish for since I found out the great math videos. looking forward

http://www.quora.com/Khan-Academy/Is-there-a-Khan-Academy-li... (warning, turn off the "spy me" flag ;))

I see no reason why this can't "lead on" to the analysis of algrothims, after all it's probably best you know how to implement them before hand...

Computer Science and programming are not separate... Programming is just one part of it.

Information Technology is not a good title. Incidentally, Knuth said that he was interested in computer science and had little interest in Information Technology. IT is subject to fads, such as ITIL, the Information Technology Indoctriation Library, which is an outlet for the frustrated British colonialist impulse, and all that implies.

Interactive numbers in the UI: seriously awesome. LOVE that they did this. Hopefully we'll get live updates to code in more systems, it's wonderful.

Lack of a 'course' to go through: ? I have no idea where to start. Nor can many of these be applied outside of the little editor with the 'tutorial'. Elsewhere, KA has a nice 'do this, then that (or that)' set of branching paths that give you a reasonable path to take. I see none of that here. Am I missing something?

I also really enjoyed the interactive numbers - I thought that it'd be overkill and not at all useful, but you're really more likely to try things out if it's dead simple.

I don't see a problem here. I really like the playground feeling it has all around.

Maybe I'm biased, but I prefer "pick the one that appeals more to you" style.

Playgrounds are fun, and I've done a huge amount of learning in them (and building them for my own play).

I'm not convinced that they develop great foundational knowledge about a system; they tend to favor quick, narrow dives (to any depth), rather than mucking around in all the boring bits that actually make the whole system. Great for getting the gears turning and keeping interest levels up, not great for full comprehension.

This looks like it has more to do with programming than computer science. That's a good thing, in my opinion, since I think programming is probably more generally useful. But it's a little misleading as the title.

I would really like to see something like a Khan Academy for introductory computer science. As it is, it seems there's nowhere to learn computer science basics at a below university level.

What about Coursera?

I haven't checked out Coursera, but isn't it more of a college course that you can take online? Khan's videos seem much more accessible and are mostly aimed at a high school level. There are many people who browse through Khan's videos who don't have the time, motivation, or ability to take a Coursera course.

I think that basic computer science (or at least basic theory of computation) is at least as important to understand in the modern world as algebra or calculus, and I don't like that it isn't more widely taught. I looked at Khan Academy hoping to find a good introduction for someone and was disappointed when I found that all it had was an introduction to programming.

Coursera is more like college course in that it has lecturs and after that you have 'homework' but its much better then normal college stuff put on the net. It is made for the internet not for offline and thrown on the net.

I'm checking CS on Khan academy every few weeks with hope for something like this, the Python class was great, but this is really exciting, and having Vi Hart do the videos is cool (or someone with a very similar voice...) - correction: it's narrated by Jessica Liu, who is doing an amazing job too

I wonder why they didn't do the Computer Science class in Python, especially that now more schools are adopting Python. Isn't Python better for learning than Javascript? Did they choose Javascript for this one just because they already had a Python course and they wanted a Javascript one now?

It seems pretty clear that it's for practical reasons: you want that sort of rich in-browser experience, it's going to be easiest to provide using JS.

What I think is a more interesting discussion is why they're not using CoffeeScript or some other flavor of JS that glosses over a lot of the idiosyncrasies of the language and arguably offers a more beginner-friendly syntax.

I think that python is the better choice for an in-person class, but building an in-browser js interpreter is a lot simpler than an in-browser python interpreter.

Hmm. that makes sense. because browser have been handling js for a longer time and so there would be more support for a in-browser js interpreter. I have seen some python in-browser interpreters, which are good though.

I don't think it would be possible for them to have the type of environment they've got set up if they used Python.

It's not Vi Hart doing the videos. See http://ejohn.org/blog/introducing-khan-cs/

eranation might be referring to the programs that have associated videos by Vi Hart - like this one: http://www.khanacademy.org/cs/pascals-triangle/803149756

The program was actually written to match the video though, not the other way around.

I saw, couldn't find the name of the narrator

I'm talking about the actual videos, not the intro one (narrated by Sal Khan and John Resig)

e.g. this one


Sounds Vi Hart to me...

They're narrated by Jessica Liu, more details here: http://ejohn.org/blog/introducing-khan-cs/

Jessica is doing a great job as well... :)

she sounds a lot like Vi, and this comment on this one, 5 seconds from the start helped my confusion...


+1 for the Python class

Great work, but I have some feedback about the first video shown to everyone who visits the Computer Science page.

1) It jumps right into talking about syntax of programming instead of showing screen shots of what a person will be able to build after completing the lessons, the benefits of learning about Computer Science, some cool problems they will know the answer to, etc, like Udacity does.

2) It is spoken way too fast. It's going to turn off almost all non-native english speakers, as well as confuse many english speakers.

3) As if that's not bad enough, anyone who turns on closed captioning to get a transcript will be even more confused, as YouTube's transcription is both messy and flashes quickly. It's so useless, you should look into disabling the CC button for the videos while looking into other approaches in the mean time.


"according to a common just by out of the two facets to the front and we call this commenting out coat now the fun we skipped and sometimes this can get away with the land was for".

4) When re-recording it, I hope the speaker (who is female) says "men and women" rather than "dudes" when talking about programmers several times. Lots of women have contributed to software development. Otherwise, she made some great jokes!


Speaking slower would make the videos much longer, which would lose viewership. I'm in favour of having the presenter talk quickly, thus making the video shorter. The words are all spoken clearly; it's easy to pause and rewind if you need to.

It is spoken way too fast. It's going to turn off almost all non-native english speakers, as well as confuse many english speakers.

That's what the 'rewind' button is for. There is nothing more frustrating for those of us who do understand English than a slow speech track on a video.

Maybe a great solution would be to allow other users to record their own explanations for the lesson, so that the viewer could choose (and vote up) the ones they like better (by clarity, preferred accent, a different human language altogether, etc.)

That is really incredible work! I bet Codecademy is happy they already received their $10m round...

So what's the difference between this and any other tutorials on the internet?

Try it. Go here, have a look around for a minute or two, maybe fiddle with some code:


It really improves on the classic style in two ways:

1. It's very easy to get started. There's no setup; just click a link.

2. The connection between the code and what it does is made very clear. The picture depends on the code, and changes when you change the code. There are sliders you can adjust for each integer literal. Bam!

This is exciting stuff.

It's not a tutorial in the traditional sense of the word, so there are a lot of differences.

A better description would be sandbox.

I just noticed the Khan academy website has no logo

What website are you looking at?

Never mind, it's appearing now. Maybe Chrome messed up because it wasn't appearing on any of their pages =/

Ha, too bad to. I thought it was a nifty idea of driving home the point that information should be free :)

The "How to read documentation" link is dead...

Applications are open for YC Summer 2019

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact