๐Ÿ‘คmichaelkscott๐Ÿ•‘13y๐Ÿ”ผ112๐Ÿ—จ๏ธ60

(Replying to PARENT post)

The prospect of teaching the JavaScript language as a first language is actually really exciting. Teaching prototypal inheritance to experienced classical-inheritance-using developers is normally rather frustrating (and results in many libraries springing up attempting to replicate the classical style of inheritance in JavaScript, which is a whole realm of weirdness in-and-of itself). Teaching prototypal inheritance to someone who has never seen any form of inheritance before will decidedly be an easier task.

But does this result in a better outcome for the student?

How many other commonly used programming languages use prototypal inheritance?

๐Ÿ‘คbrown9-2๐Ÿ•‘13y๐Ÿ”ผ0๐Ÿ—จ๏ธ0

(Replying to PARENT post)

With Javascript being the mess that it is I doubt it would be a good starting language, it has too much idiosyncrasies. Most of the post seemed to be excusing Javascript's faults and trying to convince me that I have a problem with said faults because I've been exposed to "better" programming languages. No shit.

To be fair, Javascript is the easiest language to teach through a website, but that's it. The goal shouldn't be to make the teacher's life easy rather then providing the right tools for the student.

๐Ÿ‘คvasco๐Ÿ•‘13y๐Ÿ”ผ0๐Ÿ—จ๏ธ0

(Replying to PARENT post)

JS is a terrible way to teach CS and it's a terrible first language to learn programming.

CS requires a deeper understanding that JS gloses over (obviously) and programming in general can be more easily learned in either a cleaner (python) or more rigorous (java) language. I'm only a few years into my programming career and vividly remember trying dozens of tutorials in half a dozen languages before deciding on really learning through Python. If I were to rank languages to start with they would look like this:

Goal: Learn to Program

Python, Ruby, Java, PHP - yes, really, JS

Goal: Learn CS

Java, C, Assembly, C++

๐Ÿ‘คiandanforth๐Ÿ•‘13y๐Ÿ”ผ0๐Ÿ—จ๏ธ0

(Replying to PARENT post)

I'll go out on a limb to disagree with most of the comments here and say that I think JS seems like it could be very effective. The Stanford CS101 course page has already implemented decently well: http://www.stanford.edu/class/cs101/

The language you learn doesn't have to be the language you end up using, or using to learn CS. It just has to get you off the ground.

So many people get turned off from a subject when they "don't get it" at first, so really, the challenge is providing the least painful intro to programming. Personally, my first languages were Logo and Pascal, and since I almost wrote off programming before Pascal as being too hard, I'm glad I saw C++/Java only afterwards.

One thing that enamors me about the JS approach is that it reminds me a little of Logo -- not only are the results are very immediate, but the visual output gives us a constant second avenue of insight into what we're doing. I'm sure many have seen Bret Victor's talk "Inventing on Principle" (http://vimeo.com/36579366), and he underscores the benefits of direct feedback to what we're doing. I have a friend taking CS10 at Berkeley this semester, and the Scratch-based environment also seems equally cool.

That being said, I don't use JS much (haven't really touched in it 10 years), but I believe it when people say it's (still) horribly irregular. In that regard, it might be on par with some other scripting languages (e.g., Ruby). So the distinction to be made here is that JS might be easy, but (as we can see) not simple.

As people who program seriously, we need simplicity in a language in order to build up large apps that we can easily reason about and don't bite us in every corner. (Note: simplicity in a language doesn't necessarily mean it's going to be easy at first.) But I wonder if we've been so used to programming that we forget how it can be hard to learn at first, and we're just ruling out the easy approach, which would exclude just what some newbies need.

๐Ÿ‘คelangoc๐Ÿ•‘13y๐Ÿ”ผ0๐Ÿ—จ๏ธ0

(Replying to PARENT post)

As CS teacher I'm agree with others that JS is terrible choice as first language. Python is much better. Also Pascal is good option here. Even Java better than JS.

What is their goal. It seems that John Resig only wants to teach his favorite language/tool JS.

Main goal must be to teach fundamental CS concepts, programming basics, algorithms and data structures. Language choice is must to be appropriate to that goals.

He talks about teaching prototypal inheritance, is he serious? For those how have not any prior programming experience.

It seems, that he has no any prior pedagogical experience. Why that guy make such decisions and why Khan academy can't hire more experienced CS teacher.

Yes, I know, he is great guy who wrotes jQuery, but pedagogy and JS programming is two very different areas.

๐Ÿ‘คkung-fu-master๐Ÿ•‘13y๐Ÿ”ผ0๐Ÿ—จ๏ธ0

(Replying to PARENT post)

I actually think that this is an interesting way to get people into programming. I don't think Javascript is sufficient for many applications, but it does serve a great purpose.

A lot of youth in the United States today aren't flocking to programming. We need more. And yet it's strange because programming as an industry is what afford young people the most opportunities. When was the last time you saw a major non programming company have core contributors < 30 years old? < 25 years old?

JS as a language, TextPad as an editor, and a Browser as a runtime environment is a far less intimidating barrier for students. People can see the results in a medium that's familiar to them (a browser). It's also free and readily available. No installs, no environment paths. nothing to discourage them. In conjuction with HTML, they can see how JS/programming changes what they're viewing. It will help bridge a lot of people's thoughts into "oh, wow, I can actually do this and it has a tangible effect". When growing up I was wondering how the hell a printout to a console would have any benefit to me. Yet, that's how I was taught (in C, C++)

It's also been difficult recently to find frontend engineers. Colleges don't train for this - it's all algorithms and abstract concepts that are great for backend developers. That's why there are so many more backend engineers out there than front end engineers. The FE side is under represented.

There are some arguments that this is a terrible first language because it's not as rigid as the others. But honestly if you can't learn a language and then apply the concepts and learn new ones to pick up new languages, you probably shouldn't be tackling those tougher languages in the first place.

With HTML5 apps coming down the pipeline, people WILL need to know JS and we as a technical industry will need to accept that they too are part of the product/output of science/tech/web/mobile. Some people won't be diving in more beyond that, but if they do, they at least have a foundation to build off of as they get into more robust languages.

JS gets people in the door, and it's not going to preclude others from picking up other first languages. It's a solid step for bringing more people into the fold. It's not going to be the best for theory, but there are places and time for that.

๐Ÿ‘คcmubruin๐Ÿ•‘13y๐Ÿ”ผ0๐Ÿ—จ๏ธ0

(Replying to PARENT post)

Most. Stupid. Idea. Ever.

JavaScript is a language that misses a lot of important CS and the most important of all is language build in modules.

Apart from that you should start with either a fully functional language or a fully imperative OO language. These are theoratical distinct language classes. And JavaScript is in the middle, you will confuse people.

At my university they started with Java.. also not the best choice. However OOP is very important and just neglecting that initially is not a good idea.

From a theoretical point of view, javascript is not the best language to start with. In fact as a language, its quite inferior to other function-imperative language such as Python.

๐Ÿ‘คTeeWEE๐Ÿ•‘13y๐Ÿ”ผ0๐Ÿ—จ๏ธ0

(Replying to PARENT post)

If the goal is to learn JavaScript as a first language, maybe it's better to first learn it on Codecademy. Otherwise I really use Khan Academy for everything. Also, JS is not a good first language for anyone. Never.
๐Ÿ‘คegiva๐Ÿ•‘13y๐Ÿ”ผ0๐Ÿ—จ๏ธ0

(Replying to PARENT post)

Eloquent JavaScript is a great introductory programming text. You should consider using it in a course. It's available under the Creative Commons Attribution license:

http://eloquentjavascript.net/

๐Ÿ‘คoscilloscope๐Ÿ•‘13y๐Ÿ”ผ0๐Ÿ—จ๏ธ0

(Replying to PARENT post)

Somehow I find that teaching QBasic for a person who has zero programming language might be better than any other programming languages with Python as the other candidate.
๐Ÿ‘คhello_moto๐Ÿ•‘13y๐Ÿ”ผ0๐Ÿ—จ๏ธ0

(Replying to PARENT post)

yes, Khan going in the direction of programming languages seems abstract I've been waiting for him to take the math video's and organize them in groups of specific studies say for instance all math related to algorithmic studies, specific engineering studies grouped all together like a course this seems like it would be productive to the user instead it seems as though he's beginning to jump on what's popular and add it to the site
๐Ÿ‘คejenkinsiii๐Ÿ•‘13y๐Ÿ”ผ0๐Ÿ—จ๏ธ0

(Replying to PARENT post)

I'd use a language that at least got the very basics right (ex: ===, ==, etc..) to lessen the confusion for new comers.
๐Ÿ‘คhalayli๐Ÿ•‘13y๐Ÿ”ผ0๐Ÿ—จ๏ธ0

(Replying to PARENT post)

Would it be possible to build a course around http://www.openwebdevice.com/ ? (I assume that a lot of the knowledge would overlap)
๐Ÿ‘คbobbles๐Ÿ•‘13y๐Ÿ”ผ0๐Ÿ—จ๏ธ0

(Replying to PARENT post)

Is the canvas editor/exercise generator available somewhere as a package? I saw the github code but couldn't find out how that was supposed to run in a portable environment.
๐Ÿ‘คmuyuu๐Ÿ•‘13y๐Ÿ”ผ0๐Ÿ—จ๏ธ0

(Replying to PARENT post)

No CoffeeScript? =)
๐Ÿ‘คevanmoran๐Ÿ•‘13y๐Ÿ”ผ0๐Ÿ—จ๏ธ0

(Replying to PARENT post)

awesome. looking forward to this, which is coming from someone without any formal education on programming. it will be good to see the difference between understanding the principles via video, vs reading it in a book.
๐Ÿ‘คfady๐Ÿ•‘13y๐Ÿ”ผ0๐Ÿ—จ๏ธ0