MIT Media Lab Making Programming Fun For Kids
An anonymous reader passed us a link to an article on the Boston Globe's website, talking up efforts by MIT to make programming a non-threatening part of grade-school education. MIT has developed a new programming language designed to encourage experimentation and play. Called Scratch, the project eschews manuals and high-level concepts in favour of approachability. "Efforts to make computer programming accessible to young people began in the late 1970s with the advent of the personal PC, when another programming language with roots at MIT — Logo — allowed young people to draw shapes by steering a turtle around a screen by typing out commands. But the path to mastering most programming languages has been strewn with obstacles, since students needed to figure out not only the underlying logic but also master a brand new syntax, observe strict rules about semicolons and bracket use, and figure out what was causing error messages even as they learned the program."
Are there courses designed to make neurosurgery less intimidating to kids or genetic research less complicated or elite forces soldering less dangerous or stressful? It always concerns me when I see a bunch of geeks trying to stick programming down the throats of kids rather than focus on teaching them the real skills they need at that age.
Do not try to read the dupe, thats impossible. Instead, only try to realize the truth
What truth?
There is no dupe
Just think of all the Microsoft patents these kids can now infringe!
Logo and scratch aren't really relevant for kids to learn at a young age. This is what C and assembly are for.
"If you plant ice, you're gonna harvest wind."
No, Logo teaches them to push a turtle around the screen. It doesn't really convey a sense to young children that they're "programming" a computer. I technically had Logo before I ever had BASIC, and it took me years to realize that it was supposed to be an introduction to programming. Most of us saw it as an introduction to computer graphics.
While Visual Basic is a poor tool to teach programming (most "programs" taught are simple GUI constructs with little to no code), the original BASIC regularly gets slammed because of Dijkstra's 1968 article, Go To Statement Considered Harmful. Dijkstra's core argument was that GOTO statements created spaghetti code. While this is unavoidable in assembler, his point was that it does not need to exist in high-level languages.
That paper had a profound effect on languages that followed, resulting in many modern languages doing away with a GOTO keyword altogether. (e.g. Java reserves GOTO, but does not implement it.) Taken by itself, Dijkstra had a point. Unfortunately, he went on to say: "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration." This started the idea that BASIC is somehow the "wrong" way to teach programming.
The truth of the matter is that the design of BASIC will only limit programmers who are not interested in a long term career (or at least hobby) in computer programming. Most BASIC programmers quickly find the limitations of the GOTO statement on their own, and need little prodding to move to subroutines via GOSUB calls. From there, a programmer quickly learns the limitations of global variables. This makes the introduction to procedural functions much easier.
Basically, it's easy to provide a student with new tools when they feel the need for them. If you simply give them the tools without giving them the background, they will never learn to use the tools correctly. That's why I personally believe that classic BASIC is still an excellent teaching tool. Besides having simple syntax that any child can understand (one instruction goes after the other, see?), the interpreter environment allows children to play around with the instructions without having to write complete programs for each experiment. This invaluable teaching feature is lacking in modern structured programming.
Thus it is my personal belief that we need to STOP reinventing teaching languages, and just go back to what works. All we're doing with these new languages is giving them the CompSci version of "New Math". And all that "New Math" ever accomplished was to generally confuse children, and ensure that they never take up higher maths. Such is the result of providing highly structured coding tools to a child who wants to explore.
You can read more of my thoughts on this subject in this article.
Javascript + Nintendo DSi = DSiCade