Forgot your password?
typodupeerror
Education Programming News

Khan Academy Launches Computer Science Curriculum 146

Posted by Soulskill
from the make-with-the-learning dept.
joabj writes "Expanding beyond math and the physical sciences, Khan Academy has added a set of computer science courses to its popular collection of learn-at-home instructional videos. For the project, Khan tapped jQuery creator John Resig, who chose JavaScript as the first language to teach students. The initial set of tutorials cover drawing, programming basics, animation and user interaction."
This discussion has been archived. No new comments can be posted.

Khan Academy Launches Computer Science Curriculum

Comments Filter:
  • by Intrepid imaginaut (1970940) on Tuesday August 14, 2012 @05:00PM (#40989629)

    Every language has its ups and downs. Javascript has the advantage that it bears some similarities to non-scripting languages and will produce instant results without getting too heavily into theory.

  • by timothyf (615594) on Tuesday August 14, 2012 @05:04PM (#40989675) Homepage

    Name a language that is easier to get started in. You already have a browser that runs Javascript, regardless if you're on MacOS, *nix, or Windows (or whatever system you use most likely), now all you need is a text editor, which is built in on most systems. I don't know of any other language that doesn't require you to download and install some sort of compiler, interpreter, SDK, or whatever, all of which are barriers to entry. Plus, you have the advantage of using one of the most widely used languages on a platform that can distribute your code very easily and very portably.

    You may not like Javascript--and granted, as a language, it's got plenty of warts. (Note that you can fix a great deal of these warts on modern browsers by simply including a "use strict" declaration at the top of your code). But it's a great language to start out in, if for no other reason than that the start-up cost is very close to negligible, and it's a useful language that enjoys a level of ubiquity that most other languages only dream of.

  • by dgatwood (11270) on Tuesday August 14, 2012 @05:16PM (#40989837) Journal

    It also has a number of rather large disadvantages: requiring an understanding of closures, no real notion of classes (objects are just glorified key-value stores), implicit variable scoping, implicit insertion of semicolons (in ways that can actually cause errors in some cases), and the confusing (ab)use of the plus operator for string concatenation... and that's just the language itself. As soon as you start adding in the brain damage that is the DOM, it quickly becomes one of the worst programming languages you can possibly use to teach young minds, posing a very real risk of turning them off to programming rather quickly as soon as they try to step outside the narrow confines of the lecture material.

    Want to make someone swear off programming for good? Make them write any sort of complex web-based text editor using ContentEditable. It makes my i386 assembly days seem sane by comparison; you spend more than 99% of your time working around bugs in one browser or another, and less than 1% of your time actually writing code that actually does something useful.

  • by Anonymous Coward on Tuesday August 14, 2012 @05:21PM (#40989891)

    (catches missing semicolon, catches typos of function names, allows editing color values via GUI, automatically runs the code on each change, etc.).

    Or you could acquire a little skill.

  • by Anonymous Coward on Tuesday August 14, 2012 @05:56PM (#40990233)

    Which part of "Academy" confuses you?

  • by vux984 (928602) on Tuesday August 14, 2012 @05:59PM (#40990279)

    Name a language that is easier to get started in

    C

    I don't know of any other language that doesn't require you to download and install some sort of compiler, interpreter, SDK, or whatever, all of which are barriers to entry.

    You are allegedly learning "computer science" or at the very least "computer programming". Being able to perform rudimentary tasks, such as file download and software installation on a computer is a reasonable prerequisite.

    Just as someone taking a course in "toaster repair" or "toaster design principles" should already be familiar with toaster operation.

    Plus, you have the advantage of using one of the most widely used languages on a platform that can distribute your code very easily and very portably.

    Because after a few course hours on Javascript your main concern is how to distribute your apps? That's pretty optimistic. ;)

    The problem with javascript is 2 fold:

    a) its a pretty warty language that's easy to hang yourself with, that's not a good teaching language.

    b) the DOM is still pretty messy as a platform. Javascript on its own isn't the worst thing in the world, but the last thing you want for while your are teaching programming fundamentals is to get side tracked by some browser specific DOM issue.

    The benefits of javascript that you highlighted are what make it a good language for consumer application development. But that is orthogonal to being a good language for learning how to program.

    The fact that its everywhere really has no bearing on it being any good to learn with.

    I'd honestly recommend anyone serious about learning to program start with something with a strong IDE (code formatting, syntax highlihgting) and an integrated debugger, good variable watch windows, good code stepping tools, accurate complilation error reporting, compilation warnings (unreachable code etc; assignment where equality testing is likely, etc), ability to set breakpoints/conditional breakpoints, and so forth.

    Keep the focus on writing code, and watching it run.

    A text editor and a browser and some "developer plugins"
      is simply NOT a good learning environment, nor a good development environment. It may be what a lot of us are stuck with in the real world, and it maybe everywhere but that's not important.

    if for no other reason than that the start-up cost is very close to negligible

    Any number of languages and environements are free Eclipse for Java; Visual Studio Express for C#.

    Like many of us here I self taught myself programming with Turbo Pascal after graduating from BASIC. And I consider Turbo Pascal to have been pretty much an ideal teaching language and environment.

    The university I went to taught its first year programming in Modula-2; which in hindsight was a fine teaching language. (The language itself was fine, the debugging tools we had access to were non-existent).

    Looking at the curriculum now, it appears they've updated to Python. I don't personally care for python as a language due to my objection to semantic whitespace, but that aside, I'd say its a decent teaching language and environment.

  • by luis_a_espinal (1810296) on Tuesday August 14, 2012 @06:01PM (#40990299) Homepage

    Name a language that is easier to get started in.

    CoffeeScript. Granted, it introduces an additional dependency (CoffeeScript) on what is otherwise the simplest and easiest development platform. Which leads me to the following:

    You already have a browser that runs Javascript, regardless if you're on MacOS, *nix, or Windows (or whatever system you use most likely), now all you need is a text editor, which is built in on most systems. I don't know of any other language that doesn't require you to download and install some sort of compiler, interpreter, SDK, or whatever, all of which are barriers to entry. Plus, you have the advantage of using one of the most widely used languages on a platform that can distribute your code very easily and very portably.

    You may not like Javascript--and granted, as a language, it's got plenty of warts. (Note that you can fix a great deal of these warts on modern browsers by simply including a "use strict" declaration at the top of your code). But it's a great language to start out in, if for no other reason than that the start-up cost is very close to negligible, and it's a useful language that enjoys a level of ubiquity that most other languages only dream of.

    ^^^ This. This is the reason (a really good reason) to use JavaScript as an introductory programming language with virtually zero barrier of entry (in terms of development env. setup.)

    Obviously, people will complain - argh, real devlupers use <insert toolchain> with <insert IDE/editor/whatever>. And on a real CS-oriented, full-blown and complete programming course, this is true. But we need to notice that Khan's materials are not full-blown courses, but tutorials with the explicit aim of being as accessible to the masses as possible.

    Whether this (and/or the choice of JavaScript) will turn people unsuitable for programming into legions of useless code monkeys is a non-issue. After all, the typical CS programs at brick-n-mortar universities have been producing useless code monkeys since the dot-com.

    What a system of programming tutorials as implemented by Khan's academy will do, however, is to make the learning of programming more accessible to those that already have the potential of being good developers. Perhaps this could reach them early on before they finish their secondary education (or allow currently enrolled CS-students to use them as add-ons to their formal curriculum.)

    JavaScript is a god-awful language, but its development setup makes it a decent first-language. Yes, it does not have true OO, but neither did BASIC. And good and bad developers will become so whether they use JavaScript, BASIC or Haskell (yes, there are atrocious Haskell programmers.)

  • by Darinbob (1142669) on Tuesday August 14, 2012 @06:51PM (#40990879)

    This really doesn't sound like "computer science" when you read the description. Where are algorithms, data structures, computability, complexity theory, etc? Programming != computer science. Even if they really meant that they were teaching programming, teaching a fad language used at an application level (not same as high level language) is not really the best way to teach programming. And what does "drawing", "animation", and "user interaction" have to do with programming or computer science?

    Way to go Khan to dumb down computing even more than it already is.

  • by hguorbray (967940) on Tuesday August 14, 2012 @08:17PM (#40991661)
    In a field that is essentially less than 75 years old it seems specious to call a language that has been around and in heavy use for nearly 20 years a fad.

    moreover, as part of web 2.0 is seems to have kicked Silverlight and Flash's collective asses

    and it's extensions into JSON seem to ensure that it will be around for another 20 years

    Maybe javascript != computer science, but it is certainly a programming language that is widely used and probably an easier introduction thatn perl/php/c/java

    getting a computer to do anything at all is major step for a beginner -why do you think logo with its drawing is such an attractive tool to teach kids?

    -I'm just sayin'

Make headway at work. Continue to let things deteriorate at home.

Working...