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:
  • 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.
  • Whoops, my bad. (Score:1, Insightful)

    by RingDev ( 879105 ) on Tuesday May 15, 2007 @11:33AM (#19131043) Homepage Journal
    I didn't write "First Post!!1!!1!!ELEVEN!! LOLERSKATES" on the first post of the thread. That would explain the Off topic moderation.

    -Rick
  • 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 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.
  • 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!
  • Re:What?! (Score:4, Insightful)

    by Red Flayer ( 890720 ) on Tuesday May 15, 2007 @11:42AM (#19131207) Journal
    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.
  • 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.
  • 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.
  • 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.

  • Re:What?! (Score:5, Insightful)

    by AKAImBatman ( 238306 ) * <akaimbatman@gmaYEATSil.com minus poet> on Tuesday May 15, 2007 @12:17PM (#19131803) Homepage Journal

    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 [acm.org]. 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 [intelligentblogger.com].
  • Re:Hell (Score:3, Insightful)

    by smittyoneeach ( 243267 ) * on Tuesday May 15, 2007 @12:45PM (#19132283) Homepage Journal
    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.
  • Re:What?! (Score:3, Insightful)

    by AKAImBatman ( 238306 ) * <akaimbatman@gmaYEATSil.com minus poet> on Tuesday May 15, 2007 @12:46PM (#19132313) Homepage Journal

    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.)
  • Re:Hell (Score:3, Insightful)

    by sconeu ( 64226 ) on Tuesday May 15, 2007 @12:52PM (#19132431) Homepage Journal
    That's IT, not Comp Sci.

    Programming in and of itself is not Comp Sci.
  • Re:bit like squeak (Score:1, Insightful)

    by Anonymous Coward on Tuesday May 15, 2007 @01:56PM (#19133557)
    Yeah, Smalltalk gives you a gentle introduction and then keeps on growing more powerful until you realize that there's no better OO-language around ;)
  • by Phroggy ( 441 ) <slashdot3@ p h roggy.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 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.

  • 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.
  • Re:What?! (Score:3, Insightful)

    by zippthorne ( 748122 ) on Tuesday May 15, 2007 @02:49PM (#19134493) Journal
    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?

"Gravitation cannot be held responsible for people falling in love." -- Albert Einstein

Working...