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

52 of 318 comments (clear)

  1. Lego Logo by RingDev · · Score: 3, Interesting

    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
    1. 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.
  2. What?! by Anonymous Coward · · Score: 3, Funny

    You mean BASIC isn't fun? It was fun for me... but maybe that's why I'm reading Slashdot now.

    1. Re:What?! by Red+Flayer · · Score: 3, Insightful

      I've not seen this MIT project, but Logo then Pascal is a good introduction to programming for kids. Logo teaches them to think in terms of processes, as well as teaching the importance of syntax. It also gives them a visible product that they can take pride in and appreciate... "Hello world" just isn't as inspiring to kids as seeing a colored square on screen that they made.

      Pascal is more like modern programming languages, and while it has its problems, it's simple enough for a preteen to use.

      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. People who learn to program in VBA learn a lot of bad habits, and if they start doing real development instead of basic scripts, they don't have the background necessary. It's not so much VBA that sucks IMO, it's the fact that so many VBA users learned how to write code without learning how to program.

      --
      "Trolls they were, but filled with the evil will of their master: a fell race..." -- J.R.R. Tolkien on Olog-hai
    2. 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.
    3. Re:What?! by gkhan1 · · Score: 2, Interesting

      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.

    4. Re:What?! by Red+Flayer · · Score: 2, Interesting

      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.
      --
      "Trolls they were, but filled with the evil will of their master: a fell race..." -- J.R.R. Tolkien on Olog-hai
    5. Re:What?! by AKAImBatman · · Score: 2, Insightful

      BASIC generates ire as a backlash against its marketing. The language would be long gone from this world had it not been called BASIC, but the name makes people think it's easy or appropriate for beginners or something. In fact, by comparison to modern languages -- even modern languages from 15 years ago -- it's counter-intuitive, difficult, and inflexible. Further, its descendants retain many of the old flaws, but people continue to make excuses for it on the baseless claim that it's easy or simple.

      BASIC is counter-intuitive? Difficult? Inflexible? Well, let's see if you have a point. Here are a myriad of Hello World programs in BASIC vs. modern and semi-modern languages. (Specifically, C, C++, C#, Java, Smalltalk, and Eiffel.) Let's see how the various languages stack up, shall we?

      BASIC:

      PRINT "Hello World!"
      C:

      #include <stdio.h>
       
      int main(int argc, char **argv)
      {
          printf("Hello World!");
          return 0;
      }
      C++:

      #include <iostream>
      #include <ostream>
       
      int main()
      {
          std::cout << "Hello, world!" << std::endl;
          return 0;
      }
      Java:

      public class HelloWorld
      {
          public static void main(String[] args)
          {
              System.out.println("Hello World!");
          }
      }
      C#:

      class ExampleClass
      {
          static void Main()
          {
              System.Console.WriteLine("Hello, world!");
          }
      }
      Smalltalk:

      'Hello, world!' out.
      Eiffel:

      class HELLO_WORLD
       
      create make
      feature
          make is
          do
              io.put_string("Hello, world!%N")
          end -- make
      end -- class HELLO_WORLD
      Yes, I see what you're getting at. BASIC is obviously a confusing and inferior teaching tool. </sarcasm>

      As for BASIC's descendants, those are not BASIC. Microsoft (which set itself up as "the BASIC company" in the 80's) raped a perfectly good language in an attempt to convince people that they could reuse their BASIC skills to make GUI programs. In reality, Visual Basic is about as far from the original BASIC as you can get. It could have been a descendant of FORTRAN or COBOL for all it has in common with BASIC. Even QBasic traded away the simple syntax in favor of more advanced features. Great for professional software development (!), but lousy for teaching. (i.e. The worst of both worlds.)
    6. Re:What?! by AKAImBatman · · Score: 2, Interesting

      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.)
    7. Re:What?! by pavon · · Score: 3, Interesting

      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.

    8. Re:What?! by alphamugwump · · Score: 2, Insightful

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

    9. Re:What?! by zippthorne · · Score: 2, Insightful

      Especially ironic since the whole point of Pascal was to be a teaching language rather than a "practical" one. In how many other fields do students start out with the fully capable tools that a master would use?

      --
      Can you be Even More Awesome?!
    10. Re:What?! by jafac · · Score: 2, Interesting

      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.

      --

      These are my friends, See how they glisten. See this one shine, how he smiles in the light.
  3. 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 smittyoneeach · · Score: 3, Interesting

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

      --
      Get thee glass eyes, and, like a scurvy politician, seem to see things thou dost not.--King Lear
    2. 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.

    3. Re:Hell by smittyoneeach · · Score: 2, Insightful

      Boss, I don't see what any of your points have to do with computer science in the abstract.
      As I noted in the preceding post, your pain points have to do with people, not CompSci.
      Is this an example of Post Soul-Crushing Meeting Disorder? If so, you've my sympathy.

      --
      Get thee glass eyes, and, like a scurvy politician, seem to see things thou dost not.--King Lear
    4. Re:Hell by sconeu · · Score: 2, Insightful

      That's IT, not Comp Sci.

      Programming in and of itself is not Comp Sci.

      --
      General Relativity: Space-time tells matter where to go; Matter tells space-time what shape to be.
    5. 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.

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

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

  5. Not Possible by viewtouch · · Score: 2, Interesting

    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.

  6. 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 viewtouch · · Score: 2, Insightful

      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.

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

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

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

  9. Kid Programming tool - RoboRally! by Dareth · · Score: 3, Interesting

    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
  10. 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."
  11. Reminds me of Alice by EnglishTim · · Score: 2, Interesting

    Reminds me a bit of the 'Alice' project from CMU - they seem to have a similar visual programming metaphor:

    http://alice.org/

  12. 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!

    1. Re:Programming is fun to begin with! by Phroggy · · Score: 2, Insightful

      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.
      --
      $x='S24;r)>63/* h@<5+oZ)32"5cz';$me='phroggy'x$];
      $x=~y+ -xz+\0-Tx+;print$_^chop$me for split'',$x;
  13. Re:I still like logo by DragonWriter · · Score: 2, Interesting

    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) 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.
  14. Looks a lot like... by 6Yankee · · Score: 2, Interesting

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

  15. bit like squeak by dominux · · Score: 2, Informative

    which my kids use. Squeak is based on smalltalk and is a gentle introduction to object oriented programming concepts

    1. 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).

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

  17. Re:Real Women Aren't Afraid to Program by kalidasa · · Score: 2, Funny

    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.

  18. Python as a starter language by dudeX · · Score: 2, Interesting

    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.

    1. Re:Python as a starter language by Anarchysoft · · Score: 3, Interesting

      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? :)
    2. Re:Python as a starter language by Anonymous Coward · · Score: 3, Informative

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

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

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

  21. Tomorrow on Sesame Street by Dancindan84 · · Score: 3, Funny

    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
  22. Re:Been there? by ericlondaits · · Score: 2, Funny

    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.
  23. Yes, more or less. by viewtouch · · Score: 2, Informative

    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.

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

  25. Re:Logo? Meh. by leighklotz · · Score: 3, Funny

    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.

  26. Another graphical language by paulxnuke · · Score: 2, Interesting

    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.

  27. I politely disagree: CS is beautiful. by TerranFury · · Score: 3, Insightful

    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.

  28. lets see by AlgorithMan · · Score: 2, Funny
    lets see...

    PRINT "Hello World!"
    uh... what errorlevel does this return (which I can catch in batch scripts)?
    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
  29. My Computer Curriculum by wynand1004 · · Score: 2, Informative

    I've been teaching computers for the past 4 years to middle school students in Japan. Here are the programs I use:

    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. :) 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/.

    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
  30. Scratch by lego_prof · · Score: 2, Informative

    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:

    • it uses drag-and-drop graphical programming so that kids can focus on core computational ideas (like iteration, conditionals, variables) and logical thinking, not obscure syntax
    • it supports media-manipulation activities (integrating images, sound, music), so that kids can create projects they really care about
    • it supports online sharing of projects, so that kids can see other people's projects (for ideas and inspiration) and share their own projects (for motivation and feedback)

    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.