Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!

 



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

  • 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]
  • 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.
  • 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?
  • 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 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.

  • by Anarchysoft ( 1100393 ) <anarchy@anarchys o f t .com> on Tuesday May 15, 2007 @12:01PM (#19131527) Homepage

    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? :)
  • 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."

  • Re:What?! (Score:3, Interesting)

    by gkhan1 ( 886823 ) <oskarsigvardsson@@@gmail...com> on Tuesday May 15, 2007 @12:32PM (#19132061)
    When I started messing around with BASIC, my older brother simply told me to never use GOTO. "Don't ask why, you won't understand, just don't use it". I rarely did, and I didn't miss it. People can absolutely be taught programming in BASIC (in fact, I'd argue that it is one of the best first languages to learn), just as long as they are cautioned against the monster that is GOTO.
  • Re:What?! (Score:3, Interesting)

    by Red Flayer ( 890720 ) on Tuesday May 15, 2007 @12:35PM (#19132117) Journal

    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.
    Well, first, their cognizance of whether they are "programming" isn't as important as the concepts they are learning. Second, if that's all they are learning, then there's a problem with how they are being taught.

    If the kids only learn the "enter command, watch turtle move, rinse, repeat" part of Logo, then they are not learning to use Logo at all. Proper instruction in Logo will teach kids about subroutines, about loops, about the importance of syntax, about planning out a somewhat complex program. Note that I should have mentioned that Logo BASIC is what I'm referring to, not just Logo -- I should have made the distinction.

    As to why Basic still gets slammed, I think you're incorrect, it has little to do with Dijkstra's 1986 article. We've moved past that, and it's the VB scripters who now get slammed on Slashdot. Just my opinion, from what I've observed over the last several years.
  • 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.
  • Re:Logo? Meh. (Score:1, Interesting)

    by Anonymous Coward on Tuesday May 15, 2007 @12:46PM (#19132309)
    You mean it's the same as providing exposure and showing that it's an activity anyone can do if they learn how, rather than this menacing Thing on the horizon?

    Are you going to have your four year old kid change the tires him/herself? How about not even letting them know that cars need repairing, keeping them in the dark until they're old enough, then making them learn it?

    It makes kids aware that it exists. It's an important part of education.
  • Re:What?! (Score:3, Interesting)

    by AKAImBatman ( 238306 ) * <akaimbatman AT gmail DOT com> on Tuesday May 15, 2007 @01:05PM (#19132697) Homepage Journal

    Well, first, their cognizance of whether they are "programming" isn't as important as the concepts they are learning.

    Untrue. If they don't know what they are learning, then how can they ever apply it? Furthermore, programming courses attract those students who want to actually program. If you're not providing the impression to the student that they are actually programming, then how do you expect them to take an interest in the things you are teaching them?

    Note that I should have mentioned that Logo BASIC is what I'm referring to, not just Logo -- I should have made the distinction.

    What is Logo BASIC? Logo is Logo. The concepts of loops and subroutines are core to the language itself. That still doesn't change the fact that students will see these features as merely in support of pushing the turtle around. Because the end goal of every Logo program is to make the turtle do something interesting.

    Now if you taught Logo without the graphical component, it could make for a half-decent teaching tool. However, I see little that the syntax would offer over the syntax of BASIC. BASIC is straightforward and easy for an english-speaking person to grasp. Logo adds a variety of identifiers and lexical control structures that make it less accessible to someone with no prior programming experience.

    e.g.:

    TO HELLO
        PRINT [Hello, world!]
      END
    vs.

    PRINT "Hello World!"

    to whatever
      for [i 0 6 1][
    ;stuff
      ]
    end
    vs.

    10 for i = 1 to 10 step 1
    20 'Code goes here
    30 Next i
    As you can see, BASIC is a lot easier to grasp for the untrained eye. It's only after one has experience that lexical control structures appear natural.

    As to why Basic still gets slammed, I think you're incorrect, it has little to do with Dijkstra's 1986 article. We've moved past that, and it's the VB scripters who now get slammed on Slashdot. Just my opinion, from what I've observed over the last several years.

    I don't think you understand. Visual Basic always gets slammed. It's a lousy excuse for a language, so it should come as no surprise that the technological elite don't like it. That's secondary to the fact that classic BASIC is regularly slammed as well. (As Google can helpfully demonstrate [google.com].)
  • Re:What?! (Score:4, Interesting)

    by pavon ( 30274 ) on Tuesday May 15, 2007 @01:08PM (#19132741)
    Yeah, Pascal was a stricter language but IMHO the rules were less confusing than those of C++ and Java. The biggest problem that I've had with using Python for teaching young students has been the opposite - what would be a simple error in a statically typed language can become a more subtle error in python, and the error messages that it produces are really quite poor compared to even a C compiler (although not nearly as bad as C++ STL errors :). Because of this the kids I've worked with have a harder time debugging python programs than with other languages. On the other hand the ability to type lines directly into the python console is very useful and encourages learning by experimentation.
  • by paulxnuke ( 624084 ) on Tuesday May 15, 2007 @02:10PM (#19133807)
    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.

  • Re:Hell (Score:5, Interesting)

    by pla ( 258480 ) on Tuesday May 15, 2007 @04:44PM (#19136521) Journal
    What do you do when you think, speak out loud without any thinking ahead of what you're going to say?

    I don't claim that I don't think about things, or even daydream just like everyone else. I just don't do it in English (or any language that ever could exist outside my own head). I can even think in words - You probably gave the best example, when I think about how to phrase something, I do so "in" the language itself; Oddly, although I only speak one natural language (English), I do the same thing when coding - I "think" in an internal voice speaking C, for example.



    Let's say you shut your eyes...do you notice anything around you?

    Yes, of course - I don't claim myself in a coma. ;-)
    But "conscious" doesn't mean "words". I meant more than I don't have, hmm, a narrator, I guess? As I mentioned, I found it quite a surprise when I first learned that most people do. As I understand it (second hand of course), most people would internally "say" something about almost all of the major things that pass into their awareness; I don't do that.



    I've never talked to anyone who was absent an internal monologue.

    Think of the smell of a crayon. Do words suffice to describe it, or did your first burst of thought contain a wave of sensory impressions and memories that include kindergarten, wax, some little girl's hair, pictures on a refridgerator, the sound of an ice-cream truck, and far, far more than that, all in one burst? Just typing that, I tried to touch on a few of the points of what the smell of crayons makes me think about, and found it incredibly restrictive. Imagine always thinking in terms of that initial burst, and you have the idea.
  • Re:What?! (Score:3, Interesting)

    by jafac ( 1449 ) on Tuesday May 15, 2007 @07:54PM (#19139193) Homepage
    Yes, VB Script is a lousy excuse for a language.

    But as far as tools go; sometimes you just need a crowbar, not a screwdriver, or a scalpel.

    If you're writing an office suite, or 3d simulation, of course you don't want to even consider something like VB Script.

    But if you're blasting changes to 100 Active Directory users, or changing permissions on a web site's directory structure, it's a damn useful little crowbar. (that's not because of the language - it's because of the embedded facilities in windows that talk to this language).

    I don't know a single construction worker or mechanic that doesn't like to have more tools in his (or her) toolbox. They may not ever use all of them. Some may be favorites. But every tool is the right tool for some job.

    Learning/Teaching programming?

    I don't think that a particular programming language is ideal for that.

It appears that PL/I (and its dialects) is, or will be, the most widely used higher level language for systems programming. -- J. Sammet

Working...