Khan Academy Launches Computer Science Curriculum
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."
Khan tapped jQuery creator John Resig, who chose JavaScript as the worst language to teach students.
FTFY
What political party do you join when you don't like Bible-thumpers *or* hippies?
If you want to learn stuff, get a good textbook. In the UK, the Open University has been writing excellent undergrad self-study books since 1969.
Is this just for the TV generation who think that undergrad experience = passive lectures rather than an opportunity to interact with peers and researchers?
Alls I can think of when I hear stories of this web site is that Hank Hill's neighbor has finally hit his stride and is movin' on up. He's gotta be in a right proper mansion by now.
"Kahn Souphanousinphone, we would be honored if you would join our country club."
(-1: Post disagrees with my already-settled worldview) is not a valid mod option.
Queue Javascript bashing in 3...2....1....
*Shakes fist at sky*
like it or not, Khan academy is a more useful education resources than most public schools out there (if you care to learn).
You can't handle the truth.
His book Secrets of the JavaScript Ninja got me to love JavaScript. He wrote the framework that made JavaScript a pleasure and now he is educating young people. I only have one man-crush and it is on John Resig.
JavaScript is completely unsuitable to teach CS. It may have some suitability for a scripting-language course, but doing algorithmics, interfaces, architecture, clean design, etc., can only fail with JavaScript.
Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
Awesome. I'm going to make everyone I know watch these. Time to get rid of the "Programming is just typing!" school of thought. And maybe teach some people how to think in new ways.
GCS/MU/P d- s:- a-- C++++$ UL++ P+ L++ E+ W++ N o K- w--- O M+ V- PS+++ PE Y+ PGP t+ 5- X R++ tv+ b++ DI++ D++ G+ e++ h-
I love my job. I love the internet & online teaching. Why spend money when you don't have to? :-) (I also love all the other free stuff online like magazines & audiobooks & music & news & .....)
My AC stalker: " I personally agree with your posts most of the time, but that won't keep me from modding you troll"
Why have the freaking semicolons in the language in those positions anyway? Clearly they add no information.
Violation of minimalism.
Where are we going and why are we in a handbasket?
your sock puppet claimed you could only post 3 times a day. will he come and support your argument in this discussion?
I was excited until I saw the content.
You can call that a programming course. But definitively not CS!
Very nice programming course though.
Just saying.
I've been looking for a good free online discrete math course and one in algorithms comparable to what you would get in a real CS program. I've checked Khan, Udacity, OCW, but haven't found anything yet. Any of you aware of a good source for learning discrete math and algorithms?
Let me guess -- is this where a bunch of neck-bearded elitists start calling down from their high horses about how Javascript isn't a real language, and that anybody who wants to use these lessons should go off and let the 'real programmers' do their jobs?
This is Slashdot - so of course it is.
Hint: at least half of you seriously overestimate your software development talent. The other half of you stay logged into World of Warcraft or Eve Online too much to write any code.
Before you blindly dis' javascript, listen to Crockford
http://www.youtube.com/watch?v=gz7KL7ZirZc
"Lisp in C's clothing"
"Lousy Implementations" to blame
And the prototype model is more pragmatic and less crazy than the object-fetishists will ever admit. You can do functional-style programming in javascript pretty well too.
Could it be that javascript is a language whose time has come, and the Khan academy have made a smart choice? Let's face it - it wouldn't harm to have more well-trained javascript programmers.
I disagree with Kahn calling these Computer Science courses, but I have to admit that I am at a loss as to what to call them. Computer Fundamentals perhaps?
It is a disservice to those looking at these to think that Computer Science is making an iPhone app or game. It really trivializes how powerful computers are and the concepts they embody.
Average Intelligence is a Scary Thing
Different educational institutions have different goals. If you want to go be a programmer and hack source code to make games, apps, real world things, etc. than traditional University education is probably not for you. Unless you are writing a physics engine from scratch, your use of math is probably limited and often CS degrees require a lot of math. Remember that the S in CS stands for science. This is where the University education plays a role. They want to mould students to become scientists, researchers, and professors. A good portion of the science and research material requires strong mathematical backgrounds and im my experience doesn't require the ability to be a super elite programmer. Hell, lots of great ideas are proven and tested with MATLAB scripts. This also applies to the concepts such as runtime analysis and algorithm complexity that are core to developing and proving new approaches and systems. I applaud Khan for it's attempt, but unless there is a heavy math focus later in the curriculum, then they should advertise it as a programming class, not a CS class.
like it or not, Khan academy is a more useful education resources than most public schools out there (if you care to learn).
so says someone who attended one of the largest public universities in north america....
There is still no finer introduction to computer science than Structure and Interpretation of Computer Programs by Abelson and Sussman. Also, be sure to watch the videos.
Computer science is about processes and structures, not computers, and not programs. LISP is still the ideal vehicle for learning about the important parts.
On a personal note, a friend of mine had a CS 101 intro course some years ago that was Javascript based. It was absolutely terrible. I know that it was terrible, because I ended up re-teaching him each of the concepts using random old textbooks that I had lying around. He had no problem learning concepts in other languages (Fortran, BASIC, C, even some MIX when I used Knuth) and then applying them to back to the Javascript that he had to do the problems in.
I know that Javascript wasn't entirely to blame there, but it sure didn't help. But why try to polish that particular turd?
See that "Preview" button?
Which part of "Academy" confuses you?
Which part of "could acquire" makes you think I expect them to already be skilled?
I'd definitely recommend C as a starting point for anybody serious about learning how to program. You can do high level stuff (pointers, functions). low level (bit manipulation) and everything in between. Also C is the starting point for so many other languages. The knowledge picked up could be extended to Java, C++, C# pretty quickly. If C is considered too cumbersome, Python would be an excellent choice. The clean coding style required definitely builds good habits. But, God Forbid, don't start with Javascript !
Different educational institutions have different goals. If you want to go be a programmer and hack source code to make games, apps, real world things, etc. than traditional University education is probably not for you.
Real world things? Like database engines, operating system kernels, compilers, enterprise distributed systems, parallel computing, algo-trading, animation/rendering engines that must run in uber-clusters? Yeah, sure, a CS education is not probably not for you </rolls eyes>
Unless you are writing a physics engine from scratch, your use of math is probably limited and often CS degrees require a lot of math.
Been working on software (both commercial/enterprise, systems development and for the defense sector), and in each I've had to constantly use CS-related mathematics to do my work. Even on the commercial sector, I've had to use numerical analysis (Lagrance interpolation polynomials to approximate performance behavior as a function of incoming traffic), probability/statistics and what not. The careful selection of algorithms is something that you can do blindfolded if you have a good grasp of limits, convergence and divergence, and pretty much the bulk of discrete mathematics and combinatorics.
Barring the commonly trivial, like slapping a web page on front a db table, Unless the most complex thing you ever do is slapping web pages on front of a database table, you cannot simply do that in the real world without a grasp on CS mathematics. Heck, one doesn't even need a BS degree for that. I know that because I started my coding career with a AA (and worked my way towards a BS in CS and the grad school.)
Once the level of complexity or size (or system longevity) increases, a firm notion, however implicit, of CS-math is essential. And it is typically lacking "in the streets". And that is why we see so much underperforming crap in the so-called real world despite the facts that we have known for more than two decades how to do coding of a sufficient quality.
Oh nooo, we do not need mathematics to work in the real world. And then these code monkeys cannot understand why cartesian SQL queries are a no-no; or why using a retardedly synchronized java.util.HashTable is a goddamned stupid idea when a java.util.HashMap; or why their clustered applications flood the network with UDP packets (a combinatorial problem).
The nicest (or actually stupidest) comment I've seen is when people tell me that if they do unit testing on everything, then their code is bug-free, or better yet, that their code is bug free because testing didn't find any bugs. Or, wait, it gets even better when these same folks ensure others that they have a process that allows their code to be bug free. Which is fucking impossible, mathematically impossible.
And so on they go, coding crap, like code monkeys flinging shit at their monitors, and packaging/selling whatever sticks. Fixing that crap makes for a good living in terms of OT (because someone has to be hired to do the cleanup, and it's a good pay). But by God, it does makes working with software a living nightmare sometimes.
Remember that the S in CS stands for science. This is where the University education plays a role. They want to mould students to become scientists, researchers, and professors.
No, they want to mold people, be it Computer Scientists or Software Engineers (and/or both) who can code themselves out of invariant-executing for-loops.
A good portion of the science and research material requires strong mathematical backgrounds and im my experience doesn't require the ability to be a super elite programmer.
Barring the naturally gifted (most of us aren't), there is no such thing as a super-elite programmer who does not have an explicit or implicit mathematical background. There are people who can write a lot of code and get shit done, but only for the immedia
'And what does "drawing", "animation", and "user interaction" have to do with programming or computer science?'
gee, i dunno. maybe to get KIDS INTERESTED?
maybe you can wait a few fucking days before they get introduced to factory methods?
from your sneering ivory tower, do you even remember what childhood is?
intellectual property law is philosophically incoherent. it is your moral duty to ignore it or sabotage it
Does anybody know what the player requirements are?
The presentation style courses hang at "Loading audio..." for me. Chrome, chromium or iceweasel on Debian wheezy.
thegodmovie.com - watch it
This is the 2nd mention of the Khan "Academy" in the last week or so.
I want to delete my account but Slashdot doesn't allow it.
To be fair, the way you worded it disinclines me to agree with you. Perhaps "they could use a different language so as to teach those skills" would enable people to "comprehend" your post better.
~Jarmihi
Desktop / admin IT work needs a other name then CS.
As some people think that CS = ALL IT or sys admin / desktop work.
When you also have MIS / tech / trades schools (that have differnt over all names for there tracks for there courses)
Also there are a lot of NON degree classes out there as well that just go on there own.
KHAAAAAAAAAAAAAAAAAAAAAAAAN!
It also has a number of rather large disadvantages: requiring an understanding of closures
Why is this bad?
I think closures are an important fundamental concept to understand, they help you think about what is going on when a program runs at a whole other level...
And yes I think they are good to start getting a handle on at the outset of learning.
Closures do not have to be hard to learn at all; an introduction to CS at Rice University used Scheme and taught closures to introductory students.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
an hour into it and you don't even notice it any more
I was with you on the crawling horror bit, especially special columns in FORTRAN code (not even on punch cards) that indicated the line was a comment...
But then you lost me with "you don't notice it any more".
I had to maintain some python code for a while. I hated the semantic whitespace angle, hated it. Over weeks and months I only grew to hate it more.
I know and have used for real work, dozens of computer languages. I consider myself very open minded on any language - but languages that assign semantic meaning to whitespace, I will never use again. This I vow.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
"Computer Science Curriculum"
Teaching basic coding skills is not computer science. Even teaching more advanced coding skills is not computer science. It's teaching coding.
I am putting myself to the fullest possible use, which is all I can think that any conscious entity can ever hope to do.
didn't learn anything
To be fair, the way you worded it disinclines me to agree with you. Perhaps "they could use a different language so as to teach those skills" would enable people to "comprehend" your post better.
Yeah that's because you're either American or have been influenced by exported American culture.
.. ah-hah, I'll clutch at a straw and run with it!"
... ... ... maybe that means I have misinterpreted what the guy is saying." Oh no. That requires a (tiny) level of humility that is beyond their reach. If your first reading of something makes no sense, then your first reading is always the correct one intended by the post author, the other guy is a drooling idiot, you're much smarter than he could ever hope to be, you're as special as Daddy always said, and above all you're right and he's wrong.
America is all about being selfish and shallow and then calling it individuality. As if those were the same. So anyway Americans say "I know that guy is wrong, because he's not me, and I never heard of benefit of doubt when there are multiple ways to interpret something, so I just have to find out how he is wrong
You see it all the time on Slashdot. No one, and I mean no one, ever has thoughts like "say, that makes no sense at all
To be fair, the way you worded it disinclines me to agree with you. Perhaps "they could use a different language so as to teach those skills" would enable people to "comprehend" your post better.
Besides a different language would make it harder. You want to give them a language where those mistakes are easy to make. That's how they acquire the discipline of not making them.
My point was that programming is a lot of disciplined, minute, must-be-exactly-right, details-matter-very-much type of work. A student should discover and understand that early on. It's not for everyone and that's okay. Let them discover that as early as possible.
What I am saying is that to anyone who is ever going to be even a decent programmer (let alone great) then basic syntax is definitely a solvable problem. We should not see it as something to "protect" students from. In the real world, if their boss wants them to use such a language they are simply going to be expected to do it, not to have philosophical discussions about comparitive programming languages.
I made a rocket ship for the man! ellipse(200, 330, 30, 100); ellipse(185, 370, 30, 30); ellipse(215, 370, 30, 30);
Javascript is a horrible language to teach programming. Its only benefit is that the student doesn't have to install anything, but come on. It's one big hack of a language. If it weren't in the browser, no one would touch it.
> "" == false
true