Slashdot is powered by your submissions, so send in your scoop

 



Forgot your password?
typodupeerror
×
Programming Education IT Technology

MIT Media Lab Making Programming Fun For Kids 318

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."
This discussion has been archived. No new comments can be posted.

MIT Media Lab Making Programming Fun For Kids

Comments Filter:
  • Lego Logo (Score:4, Interesting)

    by RingDev ( 879105 ) on Tuesday May 15, 2007 @11:27AM (#19130963) Homepage Journal
    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
  • What?! (Score:3, Funny)

    by Anonymous Coward on Tuesday May 15, 2007 @11:28AM (#19130967)
    You mean BASIC isn't fun? It was fun for me... but maybe that's why I'm reading Slashdot now.
    • by AVee ( 557523 ) <slashdot&avee,org> on Tuesday May 15, 2007 @12:17PM (#19131791) Homepage
      "You mean BASIC isn't fun? It was fun for me... but maybe that's why I'm reading Slashdot now."

      Indeed!

      "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."
      -- Edsger Wybe Dijkstra [utexas.edu]

      Now that quote is from 1975, and here we are, trying to create a new and better beginners allpurpose symbolic instruction code.

      Like Hegel told...
      Oh well, nevermind.
    • Re:What?! (Score:3, Insightful)

      by alphamugwump ( 918799 ) on Tuesday May 15, 2007 @02:41PM (#19134349)
      [Accidentally posted AC, reposting b/c I'm a filthy rotten karma whore]

      After reading your post, I initially agreed with you. Then I remembered all the horrible, horrible crap I wrote in basic.

      The problem with basic, as I experienced it, is that it never really taught me programming. I started out in QuickBASIC, screwed around for a bit, and then screwed around in Visual Basic. But nothing I wrote had any kind of structure at all. I would type in random statments, hit "run", have it fail to compile, attempt fix the compile errors, hit run again, get a runtime error, write a few more lines, and so on until it eventually worked. I never understood what I was writing, and I never really understood why certain things wouldn't work. That's the big problem with Visual Basic (besides being a hacked-together language): it makes it incredibly easy for beginners to write code that they don't understand.

      I really don't think I made any progress until I started trying to write games in C++. The advantage with C++, of course, is that it forces you to prototype everything. It forces you to structure your code, at least a little. Since programs take a while to compile, unlike an interpreted language, it forces you to think about what you're typing instead of just trying different things until something works. IMHO the "shoot yourself in the foot" aspect of C++ is a very good thing -- it forces you to learn syntax instead of leaning on your compiler.

      If I was going to teach a kid a language (yeah right) I'd probably start them in Java. There are loads of good introductory books, and it is relatively easy to do "cool" things with the standard library. But then after they'd worked out the urge to create little dancing applets, I'd have them build an LFS [slashdot.org] box. Once they'd achieved a usable environment, I'd have them learn assembly, then C, then C++. After that, any other language would be pretty trivial, because they'd really understand what was going on under the hood. It's only after you know how things work that you can start to think about learning "programming".

      Yes, I probably sound like an elitist bastard, but I'm sick of hearing about this sort of thing in education. It's like how they have kids build model volcanoes and call it "science". That's not science. That's not even close. If you want to have kids grow up to become scientists, teach math, for God's sake. Make them do long division until the numbers seep into their little underage bones. Then get them doing calculus early. That way, they'll have a fighting chance when they have to take freshman physics.

      Computers are just the same. You can't teach programming by having kids move blocks around in a GUI. At best, it's just a feel-good sort of thing so you can say you're teaching programming. If you're going to teach kids something, REALLY teach them. The fact that they're young is no excuse to not be rigorous. Teach them the real thing. Otherwise, you're just wasting their supposedly precious time as kids.
  • Hell (Score:5, Insightful)

    by buswolley ( 591500 ) on Tuesday May 15, 2007 @11:30AM (#19130997) Journal
    Yeah make it non-threatening so that they won't even have an inkling of the Hell that is computer science.
    • Re:Hell (Score:4, Interesting)

      by smittyoneeach ( 243267 ) * on Tuesday May 15, 2007 @11:49AM (#19131317) Homepage Journal
      What's intrinsically hellish about computer science?
      The problems I see with it are related to the entropy of the human soul. Gets especially painful when the entropy aggregates into organizational behavior.
      I, for one, find reading Knuth a delightful escape from Perry Ferrel's observation: "...and the news is just another show / with sex and violence..."
      • by Lumpy ( 12016 ) on Tuesday May 15, 2007 @12:36PM (#19132151) Homepage
        What's intrinsically hellish about computer science?

        PHB's
        last minute Change orders
        reorganization
        changing focus

        I could go on, but I'm starting to get flashbacks of all day meetings with marketing promising the world to clients and programming asking "are you on drugs?"

      • Re:Hell (Score:5, Interesting)

        by pla ( 258480 ) on Tuesday May 15, 2007 @12:44PM (#19132279) Journal
        What's intrinsically hellish about computer science?

        Hellish to non-coders. And I use "coders" there instead of the more generic "geek", because most people with a near-obsessive interest in something can qualify as some form of geek, while very few people can really code well.

        You don't just need to know "the" language (sign #1 that coding doesn't suit a person - They want to learn C or Java for a few specific purposes, rather than "how to code" and "how it works" - The language doesn't matter, within reason). You need a particular type of personality (near obsessive). You need a clear mind (I mean that in the Zen way - In my teens I tried "meditating" a few times and always found it frustrating that the guides made no sense, with phrasing like "stop your internal monologue"; I finally realized that while most people apparently can't shut the voices in their head up, I have no internal monologue that needs silencing, and consider that a BIG part of what makes me a decent coder). You need the ability to think really, truly logically. The ability to sit motionless for hours at a time really helps. Finally, and perhaps most importantly, you need to break arbitrarily complex tasks down into atomic actions (which goes along with thinking logically, in the proof-theory sense).

        All of those, to most people, sound hellish. Thinking in terms of formal proofs? Quieting your internal voice enough to think over it? Sitting motionless at a computer for so long your SO/family needs to remind you to eat ten hours later? Most people don't want that.


        I hate how this topic usually boils down to the stereotypical us-vs-them, "Real coders do/don't"... But sometimes, you just can't escape the facts. Most people can't code, which doesn't state a temporary lack of training but rather an outright permanant inability.
        • by smittyoneeach ( 243267 ) * on Tuesday May 15, 2007 @12:52PM (#19132447) Homepage Journal
          Oh, there might be some natural abstraction facility, without which you simply can't mentally execute the code to watch the variable 'x' increment in a for/do loop.
          I contend (in my arrogance) that the bulk of the population simply doesn't invest the time to nurture that mental facility. We now have a society so advanced that you really can blow off literacy, for example.
          My father has been a steam and diesel engineer his entire career. Has this mental block about electricity. "I can't understand it," he whines. Yet the ideas of capacitance, inductance, potential difference, etc. have their analogues in steam engineering. The man just can't get past a self-imposed limitation.
          People. Gotta love 'em, or you'd do the unspeakable. ;)
    • by iocat ( 572367 ) on Tuesday May 15, 2007 @11:53AM (#19131385) Homepage Journal
      I know you're being sarcastic, but let's face it -- programming is not super easy, and not for everyone. Why try and trick people by making a stupid, slow, bloated, high level language they're never going to be able to use to create compelling games (#1 thing kids want to make with computers), and that doesn't teach them how computers actually work. Why not, you know, have them actually learn how computers work, so later they know what the fsck the code they are writing is doing.

      You're going to raise a much better generation of programmers if you give all the kids Game Boy Colors, emulators, lots of sample code, and books on Z80 assembly. Assembly is as easy, if not easier, to learn than high level languages, especially with a simple 8-bit assembler. You know EXACTLY what the CPU is doing at all times, and you end up being a much better programmer later. By enabling kids to make real games, you provide motivation, not just dumbed-down, high-level crap.

    • by TerranFury ( 726743 ) on Tuesday May 15, 2007 @02:32PM (#19134185)

      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.

  • by cyphercell ( 843398 ) on Tuesday May 15, 2007 @11:30AM (#19131003) Homepage Journal
    Drag and drop seems nice, but it is a significant abstraction from real programming. My kids have both learned a bit about programming from logo, and they are 4 and 5.
    • Re:I still like logo (Score:3, Interesting)

      by DragonWriter ( 970822 ) on Tuesday May 15, 2007 @11:46AM (#19131271)

      Drag and drop seems nice, but it is a significant abstraction from real programming.


      It doesn't have to be all that distant from raw code. Another MIT project (StarLogo TNG [mit.edu]) 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.
    • by syphax ( 189065 ) on Tuesday May 15, 2007 @11:58AM (#19131465) Journal

      I like Logo too. I've been thinking about getting my kids started on it (my oldest 2 are 5). How'd you get them started, explain angles, etc.?
      • by cyphercell ( 843398 ) on Tuesday May 15, 2007 @12:13PM (#19131733) Homepage Journal
        They haven't actually written any code. They pick the numbers, learn the words necessary and help me write the program, give me directions to write the letter "L" or whatever. When the program runs in slow motion (I use kde's logo kturtle) it highlights the code and they see what happens. It's actually a lot of fun and quite easy for them to understand, it's like simon says.
    • by Falladir ( 1026636 ) <kingfalladir@yahoo.com> on Tuesday May 15, 2007 @12:06PM (#19131615)
      I think a good language for kids would be Autohotkey. (unfortunately, it's Windows-only as far as I know) While many projects just consist of a script, they can use loops and variables and other elements of real programming languages. Best of all, they can see it in action and they have a good understanding of what its capabilities are: it can do what they do with the mouse and keyboard (and more, but that's no big deal).
    • by jedidiah ( 1196 ) on Tuesday May 15, 2007 @12:53PM (#19132475) Homepage
      I think they would learn more about programming by just taking turns pretending their a robot control computer. One kid gets to be the control computer and the rest get to be the robots. The kid playing the part of computer has to follow some pretty rigid rules to get the robots to move and the robots only get to do exactly what the master control tells them.

      You could even make it competitive by awarding or subtracting points for how well they follow the rules of the simulation.

      Computers are the physical manifestation of a mathematical model. No actual physical computers need to be involved in the lesson.
  • by antifoidulus ( 807088 ) on Tuesday May 15, 2007 @11:30AM (#19131007) Homepage Journal
    not frightening to children....or women for that matter :P
  • Not Possible (Score:3, Interesting)

    by viewtouch ( 1479 ) on Tuesday May 15, 2007 @11:34AM (#19131057) Homepage Journal
    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.
    • It is a bad idea. (Score:5, Insightful)

      by pavon ( 30274 ) on Tuesday May 15, 2007 @11:49AM (#19131325)
      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.
      • To play a computer game these days is to create a solution to a problem solely by means of learning to manipulate graphical symbols at a sufficient level of sophistication. Game software is written almost entirely by manipulation of graphical symbols. Yes, it is true, of course, that the graphical symbols are created with C++ an other text languages but the graphical languages built with text languages are the first steps to this and the results - any game you care to buy - are impressive in every way, by any standard.

        What will happen is that the graphical symbols will eventually reach the hardware through fewer and fewer levels of text-based abstraction, until someday, in the not-too-distant future, the hardware will directly manifest the graphical symbols that people interact with at the level of the interface. It's the most efficient way to do it - and, ultimately, the simplest, once the task of how to do it is, itself, finally comprehended.
        • Graphical programming languages have been tried for decades. They have never panned out well. I know you are totally sure that graphical programming is the way to go, and that one day the right graphical language to replace all those failures will vindicate your belief, but consider the possibility that maybe you're wrong. Maybe we're more adapted to specifying algorithms with "language" (text programming) than with graphics.
    • by joss ( 1346 ) on Tuesday May 15, 2007 @12:11PM (#19131683) Homepage
      > to program in C++ by manipulating graphical symbols

      What does that mean ? In what sense would they be programming ?
      Did your proposal have any concrete ideas which you ommitted
      [Let alone programming in C++, which to most people means writing C++]

      This visual programming crap crops up from time to time because so many people are brainwashed by that crap about a picture being worth a 1000 words. Draw me a picture of "misguided". They are stuck on the "pictures are better than words" meme. Sure, until you learn to read.

      Programming is done with languages because programming is communication. It's communication between programmer and computer.

      I can believe in this stuff as a decent way to introduce people to programming, like picture books introduce people to language but I don't see it moving beyond that.
      • by viewtouch ( 1479 ) on Tuesday May 15, 2007 @01:00PM (#19132607) Homepage Journal
        The people who communicate the information about the weather to you use animated graphical symbols because it is several orders of magnitude easier to present the useful significance of the vast amount of data to you that way. Animals have been dealing with reality with their brains using the input from their eyes a LOT longer than humans have been dealing with reality by reading the text syntax of programming languages. It makes sense, therefore, not only to represent the output of information graphically but also to represent the input of information graphically.

        Games are all programmed graphically. It isn't even close to possible to program games using text. Text and spoken language can only take you so far. There are many other types of languages, fortunately, and many of them are, for instance, mathematical. You need to get over your anger about 'pictures' and their usefulness. Pictures aren't something that we can look at - they are something that we can use to communicate with, and to build languages out of, just like we build languages out of the sounds we can make with our lungs and throats. And if you can build a language with something you can build civilizations out of those languages. Why do you pretend you don't understand this or that you despise it?
    • by GoatMonkey2112 ( 875417 ) on Tuesday May 15, 2007 @01:00PM (#19132609)
      I think the starting point for the next generation of programmers is the web. Namely HTML and JavaScript.

      I got my start in programming using BASIC for the C64. I eventually wrote a few simple which way games along the lines of Zork, but with multiple choice of what to do instead of guessing. It also did random number generation for combat and tracked hit points. I was in about 3rd or 4th grade at the time.

      So, what I'm saying is that the same kind of thing could be done by kids today using a web browser and some JavaScript. There are tons of samples to get them started. The samples are not usually articles written in a way that kids would really understand though. What they need is a tutorial that would guide them, in a way that they can understand, to write a simple game in the web browser.

  • Whats the point? (Score:5, Insightful)

    by Timesprout ( 579035 ) on Tuesday May 15, 2007 @11:35AM (#19131083)
    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.
    • by viewtouch ( 1479 ) on Tuesday May 15, 2007 @11:47AM (#19131285) Homepage Journal
      There are machines and methodologies designed to make neurosurgery less intimidating to neurosurgeons. There are courses designed to teach neurosurgeons how to use machines and methodologies less intimidating to neurosurgeons.

      The kids will develop machines and methodologies to make neurosurgery less intimidating to themselves. They won't care for or have any respect for all the fears, excuses and mental obstacles that the old people have. They'll do it for themselves.
      • by Timesprout ( 579035 ) on Tuesday May 15, 2007 @12:12PM (#19131703)

        There are machines and methodologies designed to make neurosurgery less intimidating to neurosurgeons. There are courses designed to teach neurosurgeons how to use machines and methodologies less intimidating to neurosurgeons.
        Hello, what part of grade school level education did you miss here? Of course there is training for qualified neurosurgeons, just like there is training available for most qualified professions in their chosen arenas. I am willing to guess there are not too many school kids attending these courses, nor are they likely to be made part of the grade school curriculum.

        The kids will develop machines and methodologies to make neurosurgery less intimidating to themselves. They won't care for or have any respect for all the fears, excuses and mental obstacles that the old people have. They'll do it for themselves.
        Well if this is the case for a career vastly more involved and complicated than software development why is there a need to teach grade school kids coding? Can they not just do it for themselves? Or does your point not apply to lesser professions?
    • by DragonWriter ( 970822 ) on Tuesday May 15, 2007 @11:54AM (#19131423)

      Are there courses designed to make neurosurgery less intimidating to kids or genetic research less complicated or elite forces soldering less dangerous or stressful?


      No and yes, respectively. Actually, the military spends lots and lots of money to make soldiering, of every kind, less dangerous.

      So what?

      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.


      Stripped of the things like memorizing complex syntax rules, etc.—which is exactly what things like this try to minimize—programming is a mechanism for teaching generalized problem-solving and analytical skills, as well as a tool to provide applied lessons in other fields. It is not an alternative to teaching "real skills they need at that age", but a means of doing so.
    • Thank you! EXACTLY what I was going to post. Screw programming! Certainly kids who are interested in that should be encouraged, but it's a VERY small minority that have a true interest. There are far more important skills that we should be encouraging.

      Such as? How about true art training? Studies (which I don't have a link to) have shown that kids that are taught to draw realistically tend to do better in ALL subjects, probably because of the quiet concentration that it requires. Kids as young as 4 or 5 can be taught to do realistic art, but even a lot of art schools don't do beginning classes until 8 or 9, and the closest typical schools get is just letting the kids slap paint on paper without any instruction at all. Only gifted people learn to play piano by banging keys, and only gifted people learn to draw by scribbling. Yet anyone can learn piano through instruction, and anyone can draw realistically through instruction as well.

      Sorry for the pseudo-rant on art classes, but I've been looking for art instruction for my young children, and it's very difficult to find. I finally found great book [amazon.com] and I'm doing it myself. :) Note the picture on the cover that was done by a non-gifted five year old, BTW.

    • How many grade schoolers will have day-to-day contact with neurosurgery or genetic research or soldiering? On the other hand, almost everyone probably has at least some contact with a computer every day.

      And in any case, this isn't about "sticking programming down their throats" so much as it is about teaching problem solving and providing an outlet for creativity. It is about as close to real programming as a nature walk is to neurosurgery or genetic research.

    • by qray ( 805206 ) on Tuesday May 15, 2007 @12:34PM (#19132107)
      Back when I was in highschool (early 1980's) they were introducing BASIC. While, for the most part, kids were able to complete the course, they walked away with little in the way of real skills. Means skills they could use later in their professional life. Sure there were a few of us who excelled and went on into the software industry. But for most it's probably less used than the Spanish or French they learned.

      The teacher of that class and myself discussed this and came to the conclusion that the language really wasn't what schools should be focusing on. What would have been more beneficial is using computer programming as an example of general problem solving. The ability to look at a problem break it down and decide how to solve it. And most would have been better served by teaching them how to use a word processor, spreadsheet, and database if you were going for practical computer skills.

      Problem solving skills were really lacking in most of the students. This was evident when hitting balancing trig equations and anything else that didn't have a formula based solution that you could remember to solve the problem.

      I think a relatively simple language would server such a purpose. It doesn't have to be all that practical either.

      I started off with BASIC before I took that class. I had already realized it's limitations and short cummings and had moved on to Pascal by the time I took that class.
      --
      Q
    • by MBCook ( 132727 ) <foobarsoft@foobarsoft.com> on Tuesday May 15, 2007 @12:46PM (#19132307) Homepage

      It always worries me when people have no idea what is going on. I really dislike the idea of people learning computers like they were microwaves and having next to no idea how the work. Actually, most people have received a LITTLE instruction on how microwaves (and cars and other things) work (it heats the water in food, pistons harness combustion, etc) but discussion about how computers do things is usually "they use binary". That doesn't mean anything to most people.

      This is a great idea. Not only does it teach programming (good, maybe they'll pickup an interest), but it teaches logic. I can't tell you how many kids I run across that seem to have next to no training in logic and being able to make steps to get to a task (or simply aren't good at it due to lack of practice). The current education system (memorize facts, here is a problem and here is how to solve it, memorize how to solve it) don't help. This kind of education (figure out how you can do things by chaining other things) is important and very valuable.

  • by zappepcs ( 820751 ) on Tuesday May 15, 2007 @11:39AM (#19131135) Journal
    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.
  • by spungo ( 729241 ) on Tuesday May 15, 2007 @11:39AM (#19131143)
    Just think of all the Microsoft patents these kids can now infringe!
  • by Dareth ( 47614 ) on Tuesday May 15, 2007 @11:39AM (#19131151)
    Best way for kids to learn how to program is a simple game.

    ROBORALLY! [wizards.com]

    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.

  • Clearly (Score:5, Funny)

    by Dr. Smoove ( 1099425 ) on Tuesday May 15, 2007 @11:40AM (#19131159)
    Logo and scratch aren't really relevant for kids to learn at a young age. This is what C and assembly are for.
  • Reminds me of Alice (Score:3, Interesting)

    by EnglishTim ( 9662 ) on Tuesday May 15, 2007 @11:40AM (#19131163)
    Reminds me a bit of the 'Alice' project from CMU - they seem to have a similar visual programming metaphor:

    http://alice.org/ [alice.org]
    • by Deagol ( 323173 ) on Tuesday May 15, 2007 @12:06PM (#19131605) Homepage
      Alice is pretty decent for a gentle intro to programming concepts. More useful, IMHO, than the Turtle Logo I learned on at that age. My home schooled kids (8 & 11) use it daily as part of their work. After a while, I'm going to introduce them to a more "real" programming system with Phrogram [phrogram.com].

      If anyone's interested in Alice, there's an archive of Alice summer camp projects here [calvin.edu].

  • 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!
    • by Phroggy ( 441 ) <slashdot3.phroggy@com> on Tuesday May 15, 2007 @02:20PM (#19133975) Homepage

      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.
      The purpose of copying a program designed by someone else (taking their listing in a book or whatever and typing it in) serves three purposes:

      1) gets you familiar with the process of inputting code, so that when you write your own code, you'll already be familiar with how to type it into the computer and execute it

      2) demonstrates that by just typing in a program, it's possible to make the computer do something really cool, even though you haven't yet learned how to design something that complex yet

      3) gives you a working example of a program with source code, so you can try to understand what various parts of the code do, and you can try changing something and see how the change affects the program's output

      It's not a bad way to introduce kids to programming, although of course it needs to be followed by actual learning.
  • by mewsenews ( 251487 ) on Tuesday May 15, 2007 @11:44AM (#19131239) Homepage
    what happened to logo?
    • by DragonWriter ( 970822 ) on Tuesday May 15, 2007 @12:14PM (#19131745)

      what happened to logo?
      The MIT Teacher Education Program is doing something along the same lines with a version of Logo: StarLogo TNG [mit.edu]; they've also released educational material centered around the older (2D, no "graphical programming") version of StarLogo [mit.edu] which is now an open source project.
  • Oh great (Score:2, Funny)

    by glwtta ( 532858 ) on Tuesday May 15, 2007 @11:46AM (#19131273) Homepage
    Now all they need to do is ship this on the OLPC, to make sure all US programming jobs are obliterated 10 years from now.
  • Looks a lot like... (Score:3, Interesting)

    by 6Yankee ( 597075 ) on Tuesday May 15, 2007 @11:48AM (#19131307)
    ...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?
    • by sobachatina ( 635055 ) on Tuesday May 15, 2007 @12:01PM (#19131523)
      I volunteer at an elementary school teaching 10 year olds how to program using Lego Mindstorms. I agree that it has limitations that can be frustrating for adults. The NXT is very much better in that regard.

      My kids never hit those limitations. I can teach logic, decision making, and most importantly the ability to divide a complex task into its primitive components.

      They can, by the end of the school year, write programs that can respond to their environment such as to make a car navigate a maze. By our standards the programs are not complicated but I think for a 10 year old it is fantastic.

      Using the graphical language lets me teach them how to think through a program and then represent it correctly. I think if I tried the same thing with any text based language we would quickly get bogged down in syntax and I would fail to teach them how to think like programmers.
  • bit like squeak (Score:3, Informative)

    by dominux ( 731134 ) on Tuesday May 15, 2007 @11:49AM (#19131323) Homepage
    which my kids use. Squeak is based on smalltalk and is a gentle introduction to object oriented programming concepts
  • by jshriverWVU ( 810740 ) on Tuesday May 15, 2007 @11:51AM (#19131357)
    I was a late bloomer, didnt start programming till my Senior year in highschool. We had an old 386 IBM with basic rom, later using quickbasic in dos 6.22, in the library. I use to go in there during lunch and play around. I always found it fun writing a little program that displayed random sized circles in random colors at random locations. "SCREEN 1" was my friend, and people seemed to find it cool. My BBS was king, man those were the days.
  • by dudeX ( 78272 ) on Tuesday May 15, 2007 @11:53AM (#19131401)
    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.

    • 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 used Python to teach elementary kids and, while it was mostly great, it really lacked a good graphical/audio system. We tried turtle and Pygame, but neither of them were even as easy and fun as the old setpixel, drawrect procedural style of BASIC, pascal, etc. I wish Python had a nice simple drawing module that can with the standard build (and Tk doesn't count imo.) Did I miss it? :)
      • by Anonymous Coward on Tuesday May 15, 2007 @01:07PM (#19132721)
        Pygsear [nongnu.org] is supposed to simplify teaching programming via Python and graphics. It's implemented as a layer on top of PyGame. The author is writing a textbook [easthighschool.net] for a course using it. I haven't used it, so I don't know how effective it is, but it seems to implement the LOGO turtle as well as some sort of retained-mode graphics.
  • Hackety Hack (Score:4, Informative)

    by megastructure ( 1014587 ) on Tuesday May 15, 2007 @11:54AM (#19131417) Homepage
    Similar to Scratch,

    why the lucky stiff [whytheluckystiff.net] has started an amazing project called Hackety Hack [hacketyhack.net], in an attempt to solve the Little Coder's Predicament [whytheluckystiff.net]. 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

    • by Dekortage ( 697532 ) on Tuesday May 15, 2007 @12:55PM (#19132521) Homepage
      FYI, the BBC article [bbc.co.uk] about Scratch also mentions Hackity Hack [hacketyhack.net] as a more advanced alternative: "And for those that want to get stuck into something that looks more like traditional code there are sites like HacketyHack.... The site teaches children to code in a language called Ruby. There are seven free lessons, including one that allows them to develop a blog with just six lines of code."
  • Logo? Meh. (Score:5, Interesting)

    by SuperBanana ( 662181 ) on Tuesday May 15, 2007 @12:04PM (#19131583)

    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."

    • by leighklotz ( 192300 ) on Tuesday May 15, 2007 @01:23PM (#19132955) Homepage
      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.
  • by N8F8 ( 4562 ) on Tuesday May 15, 2007 @12:07PM (#19131625)
    I could teach my kids a decent sorting algorithm for their room!
  • by Dancindan84 ( 1056246 ) on Tuesday May 15, 2007 @12:09PM (#19131663)
    Grover, "Hey kids! The word of the day is... Recursion! Brought to you by the color #CCCCFF"
  • by bpb213 ( 561569 ) <bpbyrne.gmail@com> on Tuesday May 15, 2007 @12:35PM (#19132123)
    Anyone else remember the turtle?
  • by X-rated Ouroboros ( 526150 ) on Tuesday May 15, 2007 @12:55PM (#19132515) Homepage

    Raise your hand if your first introduction to programming was on some flavor of interpreted BASIC

    Instant feedback and low level control were a pretty fundamental appeal. Dragging and dropping a sound object into a window, pushing a button, and having it pop out the other end playing a song is less gratifying than getting some discordant squeal out of the PC Speaker with a line of code you had to hack out on your own. Change the line, a different discordant squeal! COOL!

    LOGO was fun, sure, but how much more fun was it when you figured out you could put your own pixels where ever you wanted?

    The key captivating factor of programming wasn't that it was easy to make constrained cartoonish crap but that you could do anything. Maybe cartoonish crap is what you originally wanted to do when you first sat down with an intent to learn you a program... but the fact that there's a limitless amount other stuff to do diverts you.

  • by Augusto ( 12068 ) on Tuesday May 15, 2007 @01:00PM (#19132619) Homepage
    Just discovered this one last week @ JavaOne;
    http://www.greenfoot.org/ [greenfoot.org]

    Seems to have similar goals, it is very simplified and the focus is to teach programming via creating simple games.
  • According to the BBC article on Scratch [bbc.co.uk]:

    "The thing that's very difficult for children encountering programming for the first time is that it is very unforgiving," said Professor Shadbolt. "A program doesn't congratulate you for the 90% that you got right. It fails for the 10% you got wrong. So an environment where you are essentially assembling components that can only be configured in set ways takes some of that hardship away."

    Umm... what's wrong with some parts of life being unforgiving if you don't get them right? It's called learning and is related to discipline, trial-and-error, problem solving, etc.

  • Welp (Score:5, Funny)

    by SydBarrett ( 65592 ) on Tuesday May 15, 2007 @01:10PM (#19132761)
    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.

"The following is not for the weak of heart or Fundamentalists." -- Dave Barry

Working...