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."
I learned Lego Logo as a grade schooler in summer school. Great fun! Definitely one of the things that influenced my youth leading me into a CompSci future.
-Rick
"Most people in the U.S. wouldn't know they live in a tyrannical state if it walked up and grabbed their junk." - MyFirs
You mean BASIC isn't fun? It was fun for me... but maybe that's why I'm reading Slashdot now.
Yeah make it non-threatening so that they won't even have an inkling of the Hell that is computer science.
A Good Troll is better than a Bad Human.
not frightening to children....or women for that matter :P
Monstar L
I made a call to Michael Tiemann, author of the GNU C++ compiler, a few years ago to encourage him to create a programming extension to his work with gnu C++ by adding graphical symbols to C++ which would allow people, especially children, to program in C++ by manipulating graphical symbols the way that C++ programmers now manipulate text to create software.
He said it was impossible.
All that means, really, is that it won't be Michael Tiemann who authors or participates in this inevitable breakthrough.
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
but this is programming in the same way that updating your blog is creating a web site. Pedantic, I know, but important in view of how people feel about H1-Bs and lack of scientific/engineering graduates in the US. It will be interesting to see how much this acts as a gateway to more people taking up programing as a hobby or vocation.
Support NYCountryLawyer RIAA vs People
Just think of all the Microsoft patents these kids can now infringe!
Best way for kids to learn how to program is a simple game.
ROBORALLY!
You "program" your robot with cards from your hand placed in a certain order. A turn proceeds and the cards are executed. If all goes well, you hit waypoints, and blast a few other robots to dust on the way.
I only look human.
My mother is a halfling and my dad is an ogre, so that makes me an Ogreling
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."
Reminds me a bit of the 'Alice' project from CMU - they seem to have a similar visual programming metaphor:
http://alice.org/
Being able to create nearly anything you want on a computer, thinking through puzzles, showing your creations to your friends, the peership of programmers, learning an endless stream of new things -- programming is tons of fun! I started programming when I was 5 years old thanks to an Apple IIe home computer and have never stopped since. When I first saw the BASIC and LOGO programming at elementary school, my impression was that they weren't do it in the 'fun' way at all: we were supposed to just copy down what they did and no there was no real opportunity for exploration. Having taught programming a few times since, it all kind of weaves together: learning programming is more of a journey of aided discovery than memorizing route information. I think there is a contrast between that and most teaching. It sounds like Scratch is more about the exploration, which is great. And, you know there are gazillions of CS students who would love programming to be more fun as well!
Hax-fu?
It doesn't have to be all that distant from raw code. Another MIT project (StarLogo TNG) uses drag and drop that has a pretty much 1:1 relationship to raw code, but is presumably less intimidating and certainly less dependent on typing and memorizing syntax rules, since the blocks both visually indicate syntax and won't link-up in improper ways. Scratch seems similar, though this is the first time I've looked at it and I haven't played around with it.
Really, I don't see how "drag and drop" is inherently any further from "real programming" than using a modern IDE with automatic code completion, automatic closing of blocks, code generation, GUI builders, etc., is.
...the original programming "language" for Lego Mindstorms. That one got me so frustrated with its limitations that I got stuck into NQC ("Not Quite C"), a "real language" for Mindstorms, as soon as I possibly could.
Some will never push the boundaries of Scratch, never discover its limitations. But for those who do, those limitations could well be exactly what drives them to try "real programming" - maybe using Javascript and CSS to push things around on a page. Who knows where they'll go from there?
which my kids use. Squeak is based on smalltalk and is a gentle introduction to object oriented programming concepts
C++ is a very complex language, and whether it is represented by text or graphics you will have the same difficult concepts to learn. Most of those concepts exist either for performance reasons, or as an aid in creating very large programs (they trade-off more up-front learning and work for less problems later on). Neither of these are desirable for a graphical learning language, nor is it desirable to build off of a compiled language. If you did create a graphical representation of C++ it would be an overly complicated mess that was no easier to program in than textual C++.
You are better off creating a your own language (like this or LabView or Squeak or the newer graphical Lego Logo) than to try and retrofit C++, or worse to call on someone whose strengths are in low-level machine language generation and optimization to do it for you.
He's not talking about making "programming" less frightening to women, but "computer programmers" less frightening to women (i.e., pimply-faced male coders who cannot, for the life of them, get a date with the opposite sex). Of course, he either assumes that all programmers are male, or that gay female programmers are equally impaired in the search for a prospective partner.
I think these researchers should use Python and form a child friendly language derivative. It has clean syntax, and makes it easy to express a lot of hard concepts. Plus it has a live interpreter, which is like Logo. This way, they can learn programming in a easy environment and when they build confidence to do something more complex, they will have an excellent language to start from.
I've read about the Alice program, but I think it's a bit buggy, and a little too much stuff to learn.
why the lucky stiff has started an amazing project called Hackety Hack, in an attempt to solve the Little Coder's Predicament. It's a development platform designed for the younger coders and beginners, with an emphasis on sharing, community, ease-of-use (lots of built-in functionality), and cute cartoon characters. Currently it teaches Ruby in a series of fun lessons, but _why has stated that it might teach other languages in the future. A slick help interface comes bundled, as well as a Ruby cheat-sheet.
Come and join in the public beta testing. The forum is active and the people are nice. And don't forget to share your exciting hacks with the rest of us!
--
Eli
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.
From what I remember of Logo, few people in the class "got" it. Everyone in CS harps on and on about how great logo is, but most of my classmates in grade-school just laughed when the "turtle" did stupid things, and asked the teacher for help (ie, to fix it for them.)
To say teaching Logo "teaches programming" is akin to saying that having your kid watch you inflate your tires is "teaching car repair."
Please help metamoderate.
Grover, "Hey kids! The word of the day is... Recursion! Brought to you by the color #CCCCFF"
"Always forgive your enemies; nothing annoys them so much." - Oscar Wilde
You draw a turtle with LOGO? What is that, the soviet russian version of LOGO?
As a Slashdot discussion grows longer, the probability of an analogy involving cars approaches one.
In the late 70's I began thinking about and, by 1986, created a way for people in restaurants to work more efficiently by manipulating graphical symbols on touchscreens. By doing this they could walk far fewer steps, stop having to create guest checks by hand, record all the transactions, largely get their work done without having to talk so much to other employees, and could put your food & beverages on your table much more quickly, and with far fewer errors. Restaurant and bar employees finally had a tool, a graphical language, that helped them do their work more efficiently. You may have seen this system, or one of the many systems copied from it. For the past 12 years it has been possible for people who buy this system to program it solely by the direct manipulation of graphical symbols - using a graphical language to create an even more sophisticated, more specialized graphical language.
Virtually anyone could benefit from having such a system, engineered by the use of graphical symbols to be of specific use to anyone in their specific situation, especially now that the graphical symbols and the language itself consists of network transparent graphical symbols. Graphical programming is all around us, actually, and it will become so predominant that people will soon find it hard to comprehend that it was not always so.
I just downloaded Scratch and in a few minutes made a picture of a pig move around the screen while rotating and making fart noises. Honestly, this is all I really want out of any programming language.
From what I remember of Logo, few people in the class "got" it. Everyone in CS harps on and on about how great logo is, but most of my classmates in grade-school just laughed when the "turtle" did stupid things, and asked the teacher for help (ie, to fix it for them.)
Yes, one of the big failings of Logo is that although it had the potential to help make kids smarter, it couldn't do anything about the teachers.
Disclaimer: I wrote Logo for the C64, Apple II, and Mac.
When I first read about Scratch, I thought of Prograph.... Looking at the video, I thought of a fancied up version of iShell or one of the presentation builders.
Problem I've seen w/ all of the above is that they make programming excruciatingly slow and clumsy if you know what you're doing, and don't help if you don't: there is no evidence that programming can be taught in the absence of a (probably genetic) talent for it. iShell tried hard to empower content producers to script their work, and failed like all the others: the target users were still helpless, and the programmers they hired usually preferred the much more complicated, non-graphical Lingo because they got their work done faster.
For small children starting from ground zero, it might make sense. Users old enough to grasp Python (for example) will quickly either get frustrated and move on to a "real" productivity-oriented programming environment, or find out they can't understand what's going on no matter how many tutorials they do, and give up. Those who do have the gift, though, may as well skip the first step and the rest will find out where they stand quicker if they try a "hard" language to start with. Beginning programming classes are (or should be) about separating the sheep from the goats as efficiently as possible.
IT is hellish bullshit.
CS is pretty, applied math. And the culture of computer scientists is creative, inventive, and intellectual. Hell? No!
(This distinction, others have pointed out before me.)
More, some exposure to CS teaches people how to think. Before I started to program, I was horrendous at math. Every standardized test I ever took told me I should be a writer. But by turning logic into play, the computer changed everything. Sure, I can still barely add. But I'm going for a Ph.D. in theoretical control -- which is essentially an applied math field. Because, give me a calculator, and I can do pretty cool stuff.
How many people "hate math" because they think it's all about adding up numbers? Tons! (Including, unfortunately, most of the elementary school teachers who teach math). That's not what it's about! Computer Science is beautiful. It changed my mind, and my life: That's no overstatement.
My first language, as a child? QBasic.
and what libraries does this code use (i.e. how big will the program become)?
is the PRINT procedure buffered (i.e. faster) or unbuffered (i.e. uses less ram)?
is the string "Hello World!" a list (faster manipulatable) or an array (less ram, faster nonlinear access) of characters?
what charset do strings use?
can I overload the operators to get useful classes?
could I replace the libraries with own asm code to make the programs smaller/faster?
and is this an LR(1) grammar? missing delimiters (like ";") might screw up the language, the parse-trees might not be unique...
yes, basic is convenient, simple and intuitive... for beginners...
to professionals it's just a child's toy
The MAFIAA is a bunch of mindless jerks who will be the first up against the wall when the revolution comes
I've been teaching computers for the past 4 years to middle school students in Japan. Here are the programs I use:
:) I use the program Max's HTML Beauty for my HTML / CSS / JavaScript unit. It is also freeware and can be downloaded at http://www.htmlbeauty.com/.
Grade 6: Drape
Grade 7: Gamemaker
Grade 8: Phrogram (formerly KPL)
Grade 9: Javascript
The first two, Drape and Gamemaker, are simple-to-use drag-n-drop programming languages. Drape is no longer freely available, but you can download it, and lesson plans, from my homepage, http://www.christianthompson.com?For_Teachers/.
Gamemaker is freely available (shareware with just a few advanced features crippled). It can be downloaded at http://www.yoyogames.com/gamemaker/
Phrogram is a BASIC-like programming language that has a number of built-in function for doing things like drawing and manipulating sprites, which as we all know is what students really want to do! Strangely, I found that they're not super-keen on converting miles to kilometers! You can download it for free at http://www.phrogram.com/.
If you don't know what JavaScript is, stop reading now, please.
If any teachers out there have any other ideas, would like more information on my curriculum, or wish to collaborate on lessons, please feel free to contact me at christian[at]christianthompson.com.
Cheers,
Christian
An invasion of armies can be resisted, but not an idea whose time has come. - Victor Hugo
My research group at the MIT Media Lab developed Scratch. I just got a chance to read this thread, and thought I'd provide a little background on the project...
Scratch is deeply influenced by Logo, but aims to go beyond it in (at least) three ways:
I'd encourage you to check out the Scratch website to download the software and see what other people are creating with Scratch. There's already a great variety of projects created by the Scratch community, including strategy games http://scratch.mit.edu/projects/bmarcell/1137, science simulations http://scratch.mit.edu/projects/jay/495, paint programs http://scratch.mit.edu/projects/fab_programmer123/ 4645, and animated stories http://scratch.mit.edu/projects/vally/1224. If you have suggestions, please share them on the Forums on the Scratch website. Thanks.