Khan Academy: Computer Science
khanacademy.org
khanacademy.org
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!
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.
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.
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.
http://www.quora.com/Khan-Academy/Is-there-a-Khan-Academy-li... (warning, turn off the "spy me" flag ;))
Computer Science and programming are not separate... Programming is just one part of it.
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?".
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.
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).
"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.
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?
Maybe I'm biased, but I prefer "pick the one that appeals more to you" style.
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.
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.
The program was actually written to match the video though, not the other way around.
I'm talking about the actual videos, not the intro one (narrated by Sal Khan and John Resig)
e.g. this one
http://www.khanacademy.org/cs/intro-to-drawing/848372201
Sounds Vi Hart to me...
she sounds a lot like Vi, and this comment on this one, 5 seconds from the start helped my confusion...
http://www.khanacademy.org/cs/1-welcome-to-codecanvas/882454...
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.
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.
Example:
"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!
http://www.khanacademy.org/cs/1-welcome-to-codecanvas/882454...
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.
A better description would be sandbox.
http://www.khanacademy.org/cs/tutorials/drawing
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.
Ha, too bad to. I thought it was a nifty idea of driving home the point that information should be free :)