Slashdot Mirror


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

17 of 318 comments (clear)

  1. Hell by buswolley · · Score: 4, Insightful

    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.

    1. Re:Hell by pla · · Score: 4, Interesting

      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.

    2. Re:Hell by pla · · Score: 4, Interesting

      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.

  2. Now if only they could make programmers by antifoidulus · · Score: 4, Funny

    not frightening to children....or women for that matter :P

  3. Whats the point? by Timesprout · · Score: 5, Insightful

    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
    1. Re:Whats the point? by Reality+Master+101 · · Score: 4, Insightful

      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 and I'm doing it myself. :) Note the picture on the cover that was done by a non-gifted five year old, BTW.

      --
      Sometimes it's best to just let stupid people be stupid.
  4. Not that I think it's a bad idea by zappepcs · · Score: 4, Insightful

    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.

  5. Just think... by spungo · · Score: 5, Funny

    Just think of all the Microsoft patents these kids can now infringe!

  6. Clearly by Dr.+Smoove · · Score: 5, Funny

    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."
  7. Programming is fun to begin with! by Anarchysoft · · Score: 4, Insightful

    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!

  8. It is a bad idea. by pavon · · Score: 4, Insightful

    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.

  9. Hackety Hack by megastructure · · Score: 4, Informative
    Similar to Scratch,

    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

  10. Logo? Meh. by SuperBanana · · Score: 4, Interesting

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

  11. Re:What?! by AKAImBatman · · Score: 5, Insightful

    Logo teaches them to think in terms of processes, as well as teaching the importance of syntax.

    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.

    As for your comment that BASIC gets slagged on slashdot -- I think typically it's VisualBasic that gets slammed, for giving people the tools to get a bit of programming done without making sure they have programming concepts down.

    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.
  12. Re:Lego Logo by TodMinuit · · Score: 4, Funny

    Pfft. You whippersnappers have it easy! I had to wire my logic gates by hand, and that's the ways I likes it! That was after I mined the copper to make the wires! Plus, I had to use an exercise bike to generate the electricity to power the damn thing!!!

    --
    I wonder if I use bold in my signature, people will notice my posts.
  13. Welp by SydBarrett · · Score: 4, Funny

    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.

  14. Re:bit like squeak by cheesewire · · Score: 4, Informative

    Although Scratch doesn't seem to make this clear, Scratch IS Squeak (well, an even easier to use wrapper anyway), and it's listed as a Squeak project http://www.squeak.org/Projects/
    Try for yourself... download Scratch, drag the included image onto your Squeak VM and it'll open fine (although, at least on the Mac version I can't find a way to quit properly).