Slashdot Mirror


Teaching Primary School Students Programming?

NotesSensei asks: "Recently I was teasing the teacher who runs the computer club in my sons' primary school: 'You teach the kids only how to use software but not how to make software.' Today I got an email: 'OK, you're in: teach them programming.' Now I wonder what language should I pick? My first lesson will be the board game c-jump, but after that? The contestants are: Kids programming language KPL (ab VB.net derivate; Java using BlueJ; Greenfoot (and the BlueJ); and HTML. Does it sound like I'm on the right track or should I try something completely different? We are looking at primary 3-5 (that's 10-13 in this part of the world). Where can I find inspiration for the curriculum?"

198 comments

  1. Scheme? *ducks* by AslanTheMentat · · Score: 4, Interesting

    Some may argue (and probably will) but I have always found Scheme to be an interesting language to lets kids play with because of the "instant gratification" of an interpreted language's "read-eval-print" paradigm. Plus, with "The Little Schemer", which presents things in a very logical, pedogogical way, which is well suited to clever children.


    The Little Schemer
    Just a thought...

    1. Re:Scheme? *ducks* by Sigma+7 · · Score: 1
      Some may argue (and probably will) but I have always found Scheme to be an interesting language to lets kids play with because of the "instant gratification" of an interpreted language's "read-eval-print" paradigm.


      That's a feature of the interpreter being used, not a feature of the language.

      In any case, teaching a programming language requires learning it beforehand in order to understand the concepts of the language. There was an IFComp entry called "Lists and Lists" that provides the basics on how to do anything serious about the language.

      The game itself might actually be difficult (without using the hint system). While I could do everything but the final problem (the pocket function), I still have a bit of trouble debugging those programs. This means that it may actually be difficult to assist the students to find out what's going wrong (although the in-game editor isn't the best, you probably want an external editor.)
    2. Re:Scheme? *ducks* by Nicolay77 · · Score: 4, Insightful

      No no no, don't *duck*. You should be proud of your suggestion.

      Scheme is a beautiful language and for children and math and physics people, is easier to understand than traditional C syntax-based languages.

      In fact, the main benefit of using a language from the lisp family is that it makes you a better programmer for the rest of your life, no matter what language you use in your job.

      In a related note, I postulate LOGO, because that's what I learned when I was a child and it really helped me to grok programming. Beautiful programming.

      --
      We are Turing O-Machines. The Oracle is out there.
    3. Re:Scheme? *ducks* by rolfwind · · Score: 3, Informative

      Yes, the read-eval-loop of lisps are great - in fact many advanced programmers say it boosts their productivity once they get into it (wish I could find the ML of the Crash Bandicoot team again...)

      But how about Logo Programming language?

      http://en.wikipedia.org/wiki/Logo_programming_lang uage

      Another lisp dialect that is very easy for the kids. I find the 3 choices of the submitter (not the parent) a little too restrictive - and the limited experience I have with VB taught me it's absolutely horrible as a programming language. Variable settings I specified to be done wasn't because of some arcane rule or something else. Beginning programming languages should be as straightforward as possible.

    4. Re:Scheme? *ducks* by rolfwind · · Score: 1
      That's a feature of the interpreter being used, not a feature of the language.


      But almost all lisps have read-eval-print, it's practically one of its defining features.
    5. Re:Scheme? *ducks* by Anonymous Coward · · Score: 1, Funny

      (Lisp(Languages(Have(a(better(syntax??I(Totally(AG REE(With(You(About(That()))))))))))))

    6. Re:Scheme? *ducks* by Christopher+Cashell · · Score: 2, Informative

      There is actually absolutely nothing wrong with your suggestion. In fact, it's being used already, although admittedly it's mostly at a slightly higher level (High School).

      I strongly suggest checking out:

      The Teach Scheme Project
      How to Design Programs

      The first is a project designed around teaching programming through scheme, and the second is the text book for the project (full text online, free).

      --
      Topher
    7. Re:Scheme? *ducks* by Anonymous Coward · · Score: 1, Informative

      I strongly second that. It is one of the easiest possible languages to learn, and one of the most expressive. It is also a real programming language, not in any way dumbed-down for easier grasping.

      I would especially suggest the DrScheme implementation. It has a nice, simple GUI with great features for teaching programming. One of the coolest things in that regard is the ability to use images as objects and actually visually see them represented in your code (a simple example) -- I think that this could be especially great for children who may find understanding the processes demonstrated easier when they see the outcome visually. Also, generating any kind graphics is really simple.

    8. Re:Scheme? *ducks* by Jim+Hall · · Score: 1

      You could try GNU Robots, if you're willing to accept Scheme. It's still a work in progress, but the concept is you write a program (in Scheme) for a little robot, then set him loose to explore a maze. The maze is populated with prizes, food, and baddies (you can shoot them, or choose to avoid them.)

      The nice thing about this is that kids can learn programming with an immediate payoff - they get to watch their robot in action on the screen. GNU Robots is the same concept as ChipWits, which has been "coming soon" for PC since 1999 (it originally was available on Apple and Mac).

      Disclaimer: I am the originator of GNU Robots, but I left the project in 2000 after handing it over to another maintainer.

    9. Re:Scheme? *ducks* by gklinger · · Score: 1
      Add my name to the growing list of those who think Scheme is a good suggestion. The key is to choose a language that a) teaches good programming techniques which can be applied to learning other languages in the future and b) is as interactive as possible. If a student can immediately see the results of their efforts and/or correct problems they will become engaged. A write/compile/run/debug sequence will prey upon the impatience of youth and ultimately you'll lose their attention.


      In addition to Scheme, others have mentioned Logo which is a wonderful language that many of us learned in our youth. I would also suggest looking at Kid's Programming Language, Squeak (a Smalltalk implementation that seems tailor-made for the way kids think and learn), Alice and perhaps even Ruby or Python both of which have the advantage of a wealth of documentation and code samples. You might even consider the first lesson to be a discussion of programming languages, their differences and their applications. Context always makes it easier to learn specifics. The Hello World! page is a good place to grab examples of different languages for comparision.


      Do NOT teach them a markup language (although McDonald's is hiring) or BASIC (there is no need to damage another generation of brains). Last but not least, if anyone suggests PERL thank them for their suggestion and get away from them as fast as possible as they are clearly mentally unstable.

    10. Re:Scheme? *ducks* by mrchaotica · · Score: 1

      It's not just high school; HTDP was the book used in Georgia Tech's introductory CS classes a few years ago (although they've recently switched to Python for CS majors and Matlab for Engineering majors).

      --

      "[Regarding the 'cloud,'] ownership was what made America different than Russia." -- Woz

    11. Re:Scheme? *ducks* by TheRaven64 · · Score: 2, Interesting
      Another partial vote for Scheme here. All programmers should know either Lisp or Smalltalk; ideally both. Some form of assembly language (or C which is more or less PDP-11 assembly, with some syntactic sugar) is useful for writing optimised code, although much less so now that modern CPUs don't much anything like a PDP-11 internally, but that can come later.

      If you teach anything other than Lisp or Smalltalk first is like trying to teach someone to write prose using Enid Blyton as your reference. Eventually your students will discover adjectives and adverbs, and wonder why you didn't cover them from the start.

      --
      I am TheRaven on Soylent News
    12. Re:Scheme? *ducks* by jmorris42 · · Score: 1

      > ..if anyone suggests PERL thank them for their suggestion and get away from them as fast as possible...

      I'll agree, but not for the reason I suspect you think Perl is contraindicated. I'd avoid it as a first language because it assumes three things that aren't true for a K-12 crowd.

      1. Perl assumes you understand regexes. Nothing else in perl makes much sense without that base.

      2. Perl assumes you speak UNIX. Too many perl idioms simply make no sense otherwise but are natural and beautiful if one IS a *NIX literate sort.

      3. Perl really assumes that it isn't one's first language. If you can't even write a shell script yet, Perl isn't for you.

      I do think it would be an interesting experiment to teach kids UNIX, then Bash scripting and move on to Tcl/Tk and/or Perl. But it would have to be part of an integrated computer science effort and not just a class.

      From such a base any other language would be easy to grasp and any other platform, while a big step down in usability, would be easy to master. And out in the real world, scripting is a very useful skill even for those who don't make programming a career, unlike Scheme. Tcl/Tk gives complex GUI apps in a very cross platform environment it is a good useful language. Scheme on the other hand is this year's Pascal, i.e. a learning language rarely seen in the wild. And lets face it, anyone who can master Perl is forced to UNDERSTAND the basic programming concepts in a way no Pascal or Java weenie ever will.

      --
      Democrat delenda est
    13. Re:Scheme? *ducks* by Anonymous Coward · · Score: 0

      Isn't LOGO a dialect of LISP anyway?

      I'd have to agree. KPL sounds terrible; I'm not convinced by c-jump myself; but LOGO was designed to teach programming to primary school kids so it seems like something of a no-brainer to me.

      Modern LOGOs allow 3D drawing and window UI too.

  2. the turtle by Anonymous Coward · · Score: 0

    Have the kids make the turtle move around the screen.

    1. Re:the turtle by ATMD · · Score: 1

      That's fun, but limited.

      Kids'll become bored after they've exhasted the options of the various regular polyhedrons you can make with a "repeat" instruction, and only the mega-geeky will have the patience needed to plug in the instructions for something that actually looks interesting.

      Then again, if you can buy up a lot (a LOT) of paper and plaster the school hall with it... I think one of those real-life "turtles" (with a pen in the middle) would be a lot more fun!

      --
      Nobody else has this sig.
    2. Re:the turtle by larry+bagina · · Score: 1

      if you look past the turtle and graphics, logo is similar to lisp or scheme, and just as powerful. The UCB logo books demonstrate a pascal compiler written in logo, IIRC.

      --
      Do you even lift?

      These aren't the 'roids you're looking for.

    3. Re:the turtle by MBCook · · Score: 2, Informative

      Logo is another excellent suggestion. It has many basic control structures (like FOR loops) and is also very visual (which is good). With a few simple commands it's easy to make geometric shapes, snowflakes, or just color the screen with a neat pattern. For a plus, you could have them do assignments like draw a square, draw the letter "R", draw your name, draw a house, whatever.

      For ease of results, Logo is probably the best suggestion I've seen yet.

      Of course it's not a general purpose language (like Python, which I suggested in another comment). But it will get the kids making little programs fast that they get to control and they can make do what they want easily.

      --
      Comment forecast: Bits of genius surrounded by a sea of mediocrity.
    4. Re:the turtle by Anonymous Coward · · Score: 0

      Note that Python has a turtle module, so you can do turtle graphics using python. This might be a good way to go for young kids.

  3. HyperCard forever! by ATMD · · Score: 1

    I inherited my aunt's old Mac SE when I was six (she was moving to the US and couldn't take it with her), and several years later, (maybe I was about 10 or so?), while rooting through a load of the 800kb floppies that came with it, I came across HyperCard. It had no manuals, but it came with several example programs ("stacks") - and these were enough for me to pick up the language pretty much in full.

    I booted the machine again the other week and it amazes me how much of it I picked up without any instruction at all.

    Anyway, unless you can get hold of a load of classic Macs from eBay and load HC onto them, I suggest a modern language that's similar - Lingo. It comes with Macromedia's Director (or at least it did two years ago - haven't used it since I switched to Linux). Like HyperCard, it has a near-English syntax that's a cinch to pick up. I think you can also get an education version, presumably at a lower price.

    Alternatively, have a look at Lego's Mindstorms kits. Fully programmable, using a visual (flow-chart bassed) lanuage.

    I've tried both, and loved them.

    --
    Nobody else has this sig.
    1. Re:HyperCard forever! by emudoug42 · · Score: 1

      oh god no, stay away from director. way too many "undocumented features" and not enough "not-terribly buggy interface". hypercard, it is not. try for flash, perhaps, if you want this approach. much better progam, IMO.

    2. Re:HyperCard forever! by MBCook · · Score: 1

      I'd second this. I cut my teeth on Hypercard. You could make graphical programs trivially, and it was a fantastic program. It had some problems by the time I used it (System 7) such as it was only B&W and adding color made the stack uneditable.

      What would I teach them today? That's a tough one. I wouldn't do VB (that's a nightmare, plus the IDE is complex). I'd say Python.

      My suggestion would be to get them started so it feels like they are doing something. Write the shell to a program or a game (checkers? Whatever). Have it handle all the logic of making the moves and updating the state and such, as well as printing out the board and asking/checking for moves. Then write a stub function to do the logic. They can come up with their ideas on how to play, and fill in that function (using your provided functions). Then they have a working program that they can change. You could also write a little less and teach them how to print out the board and get input and validate it (those can be walk-though lessons).

      Checkers may be a bit complex, but that's the kind of idea I'm talking about. Something where it's conceptually simple and they can notice that they made a difference in a piece of software. It could be the logic on what to do in a poker hand, blackjack, which card to play in Uno, whatever.

      Unless the kids are interested on their own, basic programming lessons (this is a loop, today we'll print the numbers 1 to 5) probably won't go over to well. You'll have to touch on that but giving them something they can get their feet wet in first would be my idea. Once that happens, if this continues you could walk them through writing EVERYTHING on their next (albeit simpler) program.

      Bonus points if it is something where you can make their algorithms play against each-other. Go look at POTM and some of their contests. If you supplied everything but the decision logic then many of those would work well for the students, but specifically the game-like ones.

      As for Python, I recommend it for a few reasons. It's free, it has an interactive command line, and I think it's "simple". By that I mean that there aren't a lot of superfluous words (Java can be kind of wordy). Python runs on any platform. It's syntax is clean, and the indenting makes it easy to follow (as well as teaching good habits).

      I'd worry about the VB IDE being intimidating (as well as I'm not a VB fan). Java is nice but I think it's a little complex for a starting language for kids. BASIC is too antiquated, Python is almost as simple but much more powerful.

      But I second the parent's post. HyperCard was perfect. It's a real shame it's gone. I wonder if I would have been interested in computers as much without it. I later tried BASIC (which of course got me nowhere). It took me years and years and years and years before I got to know enough that I could start writing things like I used to in Hypercard (due to the complexities of GUI programming).

      --
      Comment forecast: Bits of genius surrounded by a sea of mediocrity.
    3. Re:HyperCard forever! by daeg · · Score: 2, Insightful

      Stay away from any Macromedia or Adobe product. They make fine programs but I would think such complicated and, frankly, unpredictable user interfaces would just confuse the poor students.

    4. Re:HyperCard forever! by ATMD · · Score: 1

      I'm interested in how you'd handle graphics in a Python program. Forgive my ignorance, (I've never tried it), but is it not the same type of language as PHP, except a bit more generalised? If it has simple-to-use GUI bindings then that's prefect, but as a starting language I'd suggest something more visual - HyperCard was great partly because to draw something, you simply used the lanuage to take control of the tools you'd use anyway. It couldn't have been more intuitive. It seems to me that for a lanuage like Python, (great as it may be), graphics are more of an add-on than something that's fully integrated - and graphics are dead important.

      A game is a fantastic idea though - just as long as they're up to coding it. Competition is good too, but you need to bear in mind that some kids'll want to go off and do their own thing rather than write something to the specifications laid down by the teacher.
      MindStorms is good for that - I went to a workshop a few years back, and a lot of it was "who can build the fastest/strongest/cleverest robot to do such-and-such?"

      --
      Nobody else has this sig.
    5. Re:HyperCard forever! by Billly+Gates · · Score: 1

      Hypercard! May it rest in peace sigh.

      I wish Jobs would port it to OSX but Apple once again had the best early concepts of what was to come but never could market it outside their camp.

    6. Re:HyperCard forever! by MBCook · · Score: 1

      Python is a true scripting language. While PHP was designed for the web ("PHP Hypertext Processor" as it is now), Python does "everything". For a GUI it has all the usual bindings available (QT, GTK, Win32, etc). Getting students to program a GUI is going to be very tough unless you use VB, as sad as that fact is. GUI programming is just very tough. Hypercard is about as easy as I've ever seen it. It's scripting language (Hypertalk) was also very English like. It's really too bad Hypercard is basically out of the question (feasibility wise). I've used one of the Hypercard wannabes (called Toolbook) and it was just TERRIBLE. I frankly don't hold any hope you'll find a good one. Plus they will be obscure and probably cost money (as opposed to things like Logo and Python that you can get for free so students can play at home).

      I understand why you say graphics are dead important. For the game suggestion you could write all the graphics parts (like I suggested writing all the other non-logic parts). That said, for most games (like the checkers example, or card games) a text interface would be easy and work very well (though its not sexy).

      For graphics, what I said above in reply to someone else is probably one of the best suggestions... Logo. It's easy to program, but pure graphics. That said, it's obviously a different animal (as is Mindstorms, which would also a good idea). But with logo you could do everything from letting this experiment to letting them try for something you suggest (draw your name, draw a house, whatever).

      There was a something I remember from a few years ago that was designed to make it easy to learn programming that I can remember, but I don't remember the name. It was all in Java and let you make little robots to fight each other (simulated on the computer). It had all the stuff you needed (to find out about your environment, move, fire, etc) and all you had to do was write the logic (that's kind of where my idea came from). Then you could watch your robot fight others. That kind of thing would work well, but I doubt it would appeal to the girls.

      --
      Comment forecast: Bits of genius surrounded by a sea of mediocrity.
    7. Re:HyperCard forever! by Anonymous Coward · · Score: 0

      Sounds like Apple Script.

    8. Re:HyperCard forever! by Flaming+Death · · Score: 1

      Im afraid Python would be one of the last languages to choose for teaching young kids programming.
      1. Explaining why 'whitespace' is really important and controls 'scopes' would be nightmarish at best.
      2. Python is not based on a simple syntax, its heavily symbol driven and would be the cause of more problems teaching it.
      3. Python itself is not a tool - youd need something like pygame or similar, a suite of utilities also to get something going - waay too much mucking around for this age group, and far to complex for most kids attention spans.

      Id seriously consider a Logo, Hypercard, or MindStorm. I have also taught some children (less than 10yrs old) some basic programming principals with Blitz Basic. There are quite a few good basic's that provide builtin gfx and such. VB of course is probably a little too complex, but if you have simple constructs like "DrawLine x1, y1, x2, y2" you'll find kids will be making all sorts of things in rapid time.

      My suggestion is to steer clear of specific programming semantics, and concentrate on getting a package that kids can use straight up, with minimal tuition. The fact is, that programming languages change, so its more important they manage to 'make something' with it. And ideally make something with a connection to the kids themselves (ie games are a top idea).

    9. Re:HyperCard forever! by pimpimpim · · Score: 1
      Thank you! I did the same as a kid, and as I already wrote somewhere earlier (too lazy to look it up), I was programming without realizing it. And did some really nice stuff just by combining simple building blocks.

      I wonder what the people that recommend python or whatever used as a language when they were 10-11. Fortran? I am programming for already quite a while now in C, perl and other languages, but python introduces several concepts that are pretty abstract.

      Get a hypercard clone, or get a new version of Logo. Logo is especially ment for kids and it works (also used that on an MSX as a kid). It directly combines visual results with programming steps. I think that stuff like that is important if you want everyone to enjoy the programming class, not only the ones that will end up programming anyway. And for me, that would be the biggest victory, to get those who are afraid of programming get them to understand what's going on in those computer programs!

      --
      molmod.com - computing tips from a molecular modeling
    10. Re:HyperCard forever! by cagle_.25 · · Score: 1

      You should look at this, then. Python has reasonably nice packages that are much easier to program than the equivalent Visual blah packages. And the default, Tkinter, is cross-platform.

      --
      Human being (n.): A genetically human, genetically distinct, functioning organism.
    11. Re:HyperCard forever! by newsdee · · Score: 1

      I find Flash (or Director) to be a good spiritual successor of Hypercard. They are much more expensive (HC shipped for free with a new Mac IIRC), but Flash's language is very powerful and quite fast. And still accessible to beginner programmers. The "Stack" of Hypercard has been replaced by a "Timeline", but you can quickly set it up to have the same paradigm.

      It's sad that Flash is often dismissed as an animation tool and nothing else. There are open source compilers for it, but the best part of it is the IDE which, while not the best for coding, blends in quite a lot of graphical manipulation tools.

      I personally would teach Flash to introduce programming concepts, but only if there was a freely available version of the IDE... as I would like kids to be able to bring it home and play with it without having to pay for a license.

    12. Re:HyperCard forever! by WillAdams · · Score: 1

      Have you looked at AppleTalk Studio? Reminiscent of HC.

      Of course there's always http://www.runrev.com/

      --
      Sphinx of black quartz, judge my vow.
  4. Karel by tansey · · Score: 3, Informative

    The freshmen level OOP class that I took taught us by using BlueJ and Karel. I loved it, thought it was fun and easy to use, and really helped teach solid OO concepts. I recommend it highly.

    1. Re:Karel by Lehk228 · · Score: 1

      i'm going to second the bit on using karel

      karel is an excellent way to teach programming without having to go deep into the math parts of programming that would be over the average elementary student's head

      --
      Snowden and Manning are heroes.
    2. Re:Karel by Amazing+Quantum+Man · · Score: 1

      They started us on Karel back at UCSC in '82.

      We disguised a landmine as a beeper and blew him up.

      --
      Fascism starts when the efficiency of the government becomes more important than the rights of the people.
    3. Re:Karel by spongebue · · Score: 1

      Ditto. I took a community college class, and they had us learn Karel, C, and Karel++ (Karel as an object-oriented language). Karel is similar to Pascal, and Karel++ is similar to JavaScript. For younger kids like this, it will do an excellent job of teaching how to use conditionals and loops, as well as commands and functions. The one thing it lacks is the ability to work with numbers (though Karel++ can do specific numbers of iterations) Plus, the idea of using robots will probably be interesting to the kinds of kids that would be interested in this. Also, I would definitely not recommend C or Java or anything like that, I think that it would be very difficult for them to grasp the ideas of different types of variables (int, long, float, char, etc.)

      Amazon.com book link I'll admit that you don't get much book for the money, but they should be pretty cheap used.

    4. Re:Karel by TBone · · Score: 1
      and really helped teach solid OO concepts

      That's so far past what most of these kids should be learning...

      When you're first learning how to drive a car, you don't say, "We should go to NYC, because driving in heavy traffic is a good way to learn avoidance and awareness techniques", when you don't even know how to make smooth turns and brake without throwing your passengers through the windshield, and still get the windshield wipers and turn signals confused.

      These kids aren't learning how to program games, or webpages, or databases....they're learning what programs are. They're learning to think in the paradigm of "This problem requires these steps to solve, and those steps require these tasks be done". That's not programming in the sense that any of us who "program" think - it's so basic that the concepts involved are second nature for us. This class is targeted at a group of kids with the intent of developing that second nature - of teaching the kids how to jump hurdles without killing themselves, not how to make them into Olympic hurdlers.

      --

      This space for rent. Call 1-800-STEAK4U

  5. BASIC? by iamhassi · · Score: 1

    My first programming language was BASIC. There's just something simple about PRINT, GOTO, END that made sense as a child.

    Visual Basic might not be a bad idea either, least it's a language they can build on and easily use in Windows if they decide to pursue programming in the future.

    --
    my karma will be here long after I'm gone
    1. Re:BASIC? by AuMatar · · Score: 1

      I'll second some form of basic. I do think I'd avoid visual basic though- it requires an extra step in thinking (the event model). Some modern form of QBASIC would be perfect.

      --
      I still have more fans than freaks. WTF is wrong with you people?
    2. Re:BASIC? by Deathanatos · · Score: 1

      I'm a C programmer, but I started in BASIC. I second BASIC, although I'm one of the "Real Programmers don't use BASIC" type people.

      First, BASIC is easy. The only downside is that it lacks some of the more advanced programming concepts - mostly anything that involves a pointer. My worry is that the kids are a tad young: I didn't really start until fifth grade, and it took a long time for me to get to where I am now. (Of course, I didn't have any classes available in middle/high school, which didn't help.) However, once these kids get to a real math class (Algebra, Calculus, etc.), they'll probably be required to get a TI-83+ or similar, and these are programmable with "TI-BASIC". Some highschool kids can pick it up on their own, but while they can understand the language, they lack the theory of how programming works.

      I also worry about the math - I didn't know PEMDAS (parenthesis, exponents, multiply, etc.) until sixth grade. (Of course, I was in a regular public school up until then too.) Exponents were easy to pick up, but programming is math like no tomorrow. Different bases, binary operations (AND OR XOR), an order of operations that makes the one taught by high school look like child's play.

      Of course, some people stress that programming and "which language" need to be set apart - the concepts should be taught such that another language can be easily learned.

      KPL looks interesting, but I know nothing about it. c-jump also looks, er, quite "interesting". HTML is a no - HTML is not a programming language. Teach a language that won't hinder learning (C/C++ is probably not 3-5 friendly), and that'll let you teach programming. Also, teach them about the computer too - don't let them live under the assumption that Windows is the only thing that a PC runs. Show them *nix, Mac, etc. And don't stop at the PC - calculators can be programmed, robots can be programmed, etc.

      At any rate, there's a lot to teach! It took me several years to learn what I know - and I'm still counting. However, I regret having no opportunity to have had a mentor - I have no idea what I lack, nor what holes may exist in my knowledge. Classes are good for that. A programming class is certainly a welcomed improvement over the usual "this is how to use MS Word" class (what about Lotus? OpenOffice?). Good luck with such an undertaking!

    3. Re:BASIC? by Frequency+Domain · · Score: 0
      Please, not BASIC! After more than 20 years of teaching programming at the university level, I strongly agree with Dijkstra's comment:
      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.
    4. Re:BASIC? by dosius · · Score: 1

      QBASIC...Yeah. It's a cross between C/Pascal and BASIC in some respects. You can program it like traditional BASIC too. Nice IDE besides. I wish there were an open-source version that ran on the same config (8086 with 512K RAM, DOS 2.1) as QBasic, but my own attempts to code even something as simple as MBasic failed miserably. :/

      -uso.

      --
      What you hear in the ear, preach from the rooftop Matthew 10.27b
    5. Re:BASIC? by ATMD · · Score: 1

      I had a go at BASIC when I was small, on a friend's old greenscale Amstrad machine. Seems fun to play around in, but I think it'd be more responsible to teach them something closer to a more modern, widespread language...

      Also, effortless graphics handling is so very important. Can BASIC do that? I'm talking sprites here, not just drawing to the screen.

      --
      Nobody else has this sig.
    6. Re:BASIC? by hedwards · · Score: 1

      I agree, I started out on BASIC. I really hated it because of the obsessive line numbering, but one of my friends at the time was quite a bit better.

      I think if I had any formal guidance it would have been a much easier task. The key at that age is primarily getting them to think about it.

    7. Re:BASIC? by chadliness · · Score: 1

      Any concrete reasons? I learned on BASIC as did many others and I have no problems programming in a variety of languages now.

    8. Re:BASIC? by Dadoo · · Score: 2, Insightful

      I can't believe people are modding you up for that comment. At least suggest an alternative, rather than just complaining.

      Personally, I have to agree with the people who are suggesting BASIC. To start with, it's easy. One advantage that no one else has mentioned, yet, is that it requires less thought about the intricacies of programming. One of the hardest things beginning programmers have to deal with is the whole "the computer does what you tell it to do, not what you want it to do". Why is it necessary to throw in stuff like character vs integer vs floating point vs data structures on top of that? The good thing about BASIC is that, because there are only two data types, numeric and string, there's less to worry about - as it should be. That's why the "B" stands for "beginner".

      Over the years, I've argued with a lot of people who think Pascal should be everyone's first language. I will never understand that, even if I live to be 1000.

      --
      Sit, Ubuntu, sit. Good dog.
    9. Re:BASIC? by SirSlud · · Score: 1

      I think you're generalizing, as is the poster. Any language that enhances some level of procedual comfort and focuses on math is good.

      My biggest complaint about most programmers that I've worked for is that they're so about the language and not enough about the actual math/calc and the inherent strengths and weaknesses of a given approach to design.

      If anything, my suggestion would be any language, but make sure you're teaching them programming and math, not "this is BASIC" or "this is LOGO". Anything you can do to de-stress any real commitment to a syntax, language type, and API is going to impart far more important values. Teach them what a hammer is, but make sure they know that not everything in programming is a nail.

      --
      "Old man yells at systemd"
    10. Re:BASIC? by Anonymous Coward · · Score: 0

      Also, effortless graphics handling is so very important.

      Why is graphics important to learning how to program?

    11. Re:BASIC? by commanderfoxtrot · · Score: 1

      I learnt BASIC at 7 then C at 15.

      All of the boys in my year were taught BASIC by copying out programs (generally simple games) from the "yellow pages" in Acorn User (or whatever it was called back then) and then improving them.

      This generally started off with changing "LET LIVES=3" to "LET LIVES=999"- simple and effective. One then got into loops, GOTOs et cetera.

      Make it simple - kids don't want/need to know about pointers or "computer science". They want to make the machine ask their name and then print "hello name".

      --
      http://blog.grcm.net/
    12. Re:BASIC? by gravis777 · · Score: 1

      I disagree with QBASIC. Not for Primary school. You have to understand modules and all that stuff, and that is just too advanced for Primary school kids IMHO. I say good old fashioned basic where you have line numbers. Kids understand that, I learned BASIC in fourth grade, and the simplicity of GOTO 120 is easy for a kid to understand. I was in college, after having fundamentals of programing class, that I understood really how modules worked and therefore, how QBASIC worked.

      HTML is cool too, but there are some downsides. First, do not confuse HTML as a programing language, its a Markup language. That is, its simply a text file with a few tags thrown in so a browser will know how to render the page. Also, do you really want kids at six, seven, eight years of age writting their own webpages? I can see angry letters from parents about that. I know that in the US, the child privacy act or whatever its called, will not let children under 13 on many sites. I think this should be taken into account of webpage programing as well, an 8 year old will think "oh, cool, my friends can see this" and will want to put up their address and phone number, without thinking that everyone else in the world can read it as well. Even if the pages inside the school are kept on an internal server, they are still learning how to do this, and can go home and do it. Of course, its probably no different than a 10 year old lying about their age and signing up for myspace, but why encourage it.

      Stick to Basic in Primary school, let Intermediate or middle school teach them HTML, and let them learn Pascal and C in High School.

    13. Re:BASIC? by Anonymous Coward · · Score: 0

      I think you are undersetimating children. I worte my first BASIC program on a TI99-4A when IW as 8 years old, it drew my initials on the screen. It was very simple, and yes, my father helped me, but it taught me several key concepts.

      By 12 I had mastered high-resgraphics, animation and sound, which as about as far as I ever saw anyone take the launguage.

      Then I hit highschool and was forced to take BASIC before I could move on to PASCAL, which is the reason I am not a programmer today, after sitting through two years of doing things I had learned to do on my own, I was sick of it, and managed to steal the completed code from the teachers machine instead of writing actual programs. I spent an entire year playing Oregon Trail instead of coding, and decided then I never wanted to write code again, which is why I'm a systems guy.

      Oh, and my best friend was writing in C at 14, he stuck with programming.

    14. Re:BASIC? by aeoneal · · Score: 1

      Pascal was my first language, back in '83, and while it didn't seem to hurt, when I encountered BASIC I thought that should've been my introduction.

  6. Python by Anonymous Coward · · Score: 0

    My almost reflexive reaction is to suggest Python. This is because it is a proper, well-designed programming language that is also compact. It is free and widely used, but more importantly it is easy to make it do stuff. The Python interpreter usually runs programs from files, but you can start it in a terminal mode in which you can enter programs and simple expressions. Demonstrate programming to your class live, by entering fragments of code, explaining how they work and showing what they do. There is no extra stuff to explain, no compiler, no headers, no IDE, no mysterious commands. So you can concentrate on the code.

  7. Kid's Programming Languages by justanyone · · Score: 5, Funny


    Unless they're vaccinated, don't give them MUMPS; if you do find a nice Doctor (Like Dr. Pascal), 'cuz Pascal was fun for me in College.

    If they like noises, Squeak is good, but the cogently verbiaged might prefer SmallTalk in a group. For those speech impaired, knowing there's other people who Lisp would be good.

    The mean ones will abuse Snobol in Winter

    The A.D.D. kids will probably like the feeling of Euphoria they get from their first

    Of course, you could teach them a very nice language with a horrible name, Brainfuck.

    Or, you could just look Here for a comparison of popular programming languages.

    1. Re:Kid's Programming Languages by Anonymous Coward · · Score: 0

      You missed puns with Python, Ruby, ASP, Java, C & C++ and Perl

      Who names these programming languanges?

    2. Re:Kid's Programming Languages by dcapel · · Score: 2, Insightful

      I think its clear assembly is the best place to start learning to program.

      --
      DYWYPI?
    3. Re:Kid's Programming Languages by linuxmusic · · Score: 1

      I'm not a teacher, but Alan Kay and the fine folks at Viewpoints Research have been helping kids learn (K-12) for many years. They have created a wonderful scripting language on top of Squeak (derived from Smalltalk-80) called eToys. Many are using this around the world. You might get in touch with them.

      Here are the relevant links:

      http://www.viewpointsresearch.org/about.html
      http://squeakland.org/
      http://www.squeak.org/ (to learn more about Squeak)

      --
      brad fuller
      sonaural: www.sonaural.com
      personal: www.bradfuller.com
                          www.oreillynet.com/pub/au/2184

  8. HTML by Chasa · · Score: 2, Insightful

    I know my little cousins in that age group would love to make their own "pretty" web-pages. They could each make their own page linked from a page about the class.

    --
    Insanity is nothing more than a difference in perspective.
    1. Re:HTML by 4D6963 · · Score: 1

      I agree with the other poster, HTML isn't a good idea, it's not a programming language, but most of all, it's not fun. I remember back when I was 13, programming a simple text game (the one where you have to guess a value by dichotomy) in BASIC on my V-Tech Genius 2000, now that was fun, because that was real game programming, I mean you could actually play with it.

      You can't play with HTML, it's pretty static, and then it has actually nothing to do with programming, so it's off-topic.

      --
      You just got troll'd!
    2. Re:HTML by Chasa · · Score: 1

      I am well aware that html is not a programming language and have never claimed that it was. But it is a small step toward programming and would teach the kids that their is something behind what they see on the computer's screen.

      --
      Insanity is nothing more than a difference in perspective.
  9. What about a snake? by cjhuitt · · Score: 4, Informative

    Have you considered python? It has an interactive shell, which will let the basic concepts of programming come through. Also, you could take the first parts of How to Think Like a Computer Scientist (freely available and modifiable) and adapt them to the age level. The first few lessons should be fine, although they might need expanded somewhat.

    Alternately, perhaps something more graphic-oriented would be desirable. If it were still around and supported, I would suggest Apple's Hypercard program. It appears there are some clones out there also, although I have no idea how good they are. (The first alternative listed says it is popular with educators.)

    Good luck.

    1. Re:What about a snake? by Anonymous Coward · · Score: 0

      Python also has a turlte module, so the kids can get instant graphical gratification with an interactive, easy to use language.

    2. Re:What about a snake? by DrBdan · · Score: 1

      only if it's on a plane!

    3. Re:What about a snake? by DrGalaxy · · Score: 1

      Check out the RUR-PLE Python Learning Environment - http://rur-ple.sourceforge.net/

  10. CeeBot by muridae · · Score: 2, Informative

    http://www.ceebot.com/ceebot/index-e.php I downloaded the demo a while back, and found it amusing and actually pretty usable. If I remember correctly, even the demo supported simple classes and structs and I think the classes even allowed overloading operators. The basic concept is to allow students to write simple programs that make a little robot do stuff. Take a look at it, it may be too pricey for the school but their links section has some other resources that might also be useful, like CodeRally http://www.alphaworks.ibm.com/tech/coderally.

  11. Pascal by ToasterofDOOM · · Score: 1

    At my school we have Visual Studio and all manner of modern, high tech tools at our disposal, but we still use turbo Pascal to teach programming, and I love it. It truly is a marvelous language, and while easy, can do anything a more complicated laguage can and shows all the steps of real edit-compile-etc programming. Perhaps a modern version of pascal would be a good choice, I would pick Pascal along with a good instructional book. The best part is that pascal is structured so as long as they follow the rules it is difficult for them to write crappy code. w00t Pascal!

    --
    I am Spartacus
    1. Re:Pascal by wolverine1999 · · Score: 1

      Seconded!

      I think Pascal is the best way to introduce the concepts.

    2. Re:Pascal by ToasterofDOOM · · Score: 1

      Oddly enough, it was not my first language, and I would never have tried it on my own, Then my dad mentioned that he loved Pascal, and I was interested, but it was not until I learned enough to do things that I fell in love. I can't communicate how much I like Pascal. Too bad in modern renditions it is either outdated or OS-specific (Delphi, I'm talking to you.).

      --
      I am Spartacus
  12. Lego Mindstorms by cyberbian · · Score: 1

    While it's not specifically a 'programming' environment, it's programming mechanisms illustrate the general programming concepts and it's also coupled with a great engineering robots 'toy' as well. The easy click together programming blocks allow children to approach computing from the general concepts. Each clickable block also provides 'fine tune' controls. This approach is directly analogous to oo programming. There are also methods to use java programs with the RCX bricks so that as your students advance, they will be able to increase their knowledge using the same fun toy tools.

    --
    if I claimed I was emperor just because some watery tart lobbed a scimitar at me they'd put me away!
    1. Re:Lego Mindstorms by hAckz0r · · Score: 1

      What, and unsuported language? Its a great idea as far as teaching inovation, bu there is no future unless someone else comes up with an open source version of mindstormes, since its been discontinued by lego. What a shame though...

    2. Re:Lego Mindstorms by cyberbian · · Score: 1

      Actually, as I had mentioned, there is a way to use Java to program your RCX brick...
      Furthermore, Lego has recently resurrected the Mindstorm group of products with NXT
      Mindstorms 2.0 continued to be available to education accounts but was discontinued for consumers...

      --
      if I claimed I was emperor just because some watery tart lobbed a scimitar at me they'd put me away!
  13. Of course it's a good idea by brak · · Score: 1


    The year, 1981.

    The place, suburbs of Minneapolis, MN.

    I had a TI99/4A given to me by my parents for Christmas. I was 9 and in 3rd grade. I got a subscription to HCM (Home Computer Magazine) and initially had to get my mom to type in the code at the back since she could type so much faster.
    I would modify the programs, save them to tape, etc.

    In school, we had an Apple2 lab with Logo. People played Oregon Trail, had Math drills and such, but Logo was the shit.

    By the time my friends and I hit Junior high, Quick BASIC was no big deal. In high school, we did Pascal, C and such.

    Given that all of what I'm talking about above can be done on one of those $100 laptops, I don't see why people wouldn't do it.

    1. Re:Of course it's a good idea by OrangeTrafficCone · · Score: 1

      Similar path here: 1981, western Oregon, VIC-20, Compute! Personally, I am giving my nearly-12-year-old son my Learning Perl, 3ed, and telling him, "get through the first few chapters, then tell me what you want a program to do, and I will help you get there". Given the problems I have with adult customers, this should be interesting.

  14. Applesoft BASIC by Saxophonist · · Score: 1

    OK, you might not have the machines to pull this one off (though you can get them for next to nothing if you know where to look, or perhaps try an emulator). One nice thing about this idiom is the ease with which the low-res graphics can be manipulated; the kids can draw some crude pictures.

    I'm serious, by the way. It's really easy to learn a few fundamental commands in Applesoft. I remember doing this in a class in probably fifth grade, and everyone seemed to like it. (I already knew how to program in the language, so I didn't necessarily learn much.) No compiler; just type RUN and you're good to go.

  15. Mod up... by Anonymous Coward · · Score: 0

    Interactive shells are really helpful for teaching, because you get instant results. There is no complexity to confuse the matter, as there is no IDE or compiler. You can demonstrate a 1-1 relationship between every piece of code and its effects.

  16. too young for abstract thought by Anonymous Coward · · Score: 0

    I think you will probably stuggle to teach children of that age programming. Abstract and executive thought does not develop (on average) until age 12-13 (if at all). Of course there will be exceptions to this, but will not be the norm.

    Your efforts are probably better directed at 13-14 year olds. You will probably get more satisfying results. After this high level thinking has developed and they have a grasp of algebra as a basis of programming.

    1. Re:too young for abstract thought by AuMatar · · Score: 3, Interesting

      Bullshit. People give kids too little credit. First off, most of them know basic algebra already- they've been solving math questions with x in the and solving for x for years. Secondly, basic programming doesn't require abstract thought- it requires you to understand boolean logic and arithmetic. Most kids can handle that by the time they're done with first grade, if not sooner.

      --
      I still have more fans than freaks. WTF is wrong with you people?
    2. Re:too young for abstract thought by Anonymous Coward · · Score: 1, Funny

      From: http://dictionary.reference.com/search?q=abstract+ thought&x=0&y=0

      abstract thought

      n : thinking that is coherent and logical [syn: reasoning, logical thinking]

    3. Re:too young for abstract thought by Anonymous Coward · · Score: 1, Insightful
      The parent is exactly correct. Children at that age do not typically have a real grasp of abstract thought. Most concepts, be it in algebra, language, or science are taught very concretely, even egocentrically. The building of a terrarium, the writing about the actual event like summer vacation, the using of specific numbers of specific physical objects. Many students will not understand that a variable as an abstract concept until middle high school or college, even if they can go through the motions of using x. As soon as bob is used instead, all hell breaks loose.

      With modern languages the amount of abstraction has significantly decrease, which is why we have ever larger numbers of people who can perform the task. We also have methods of scaffolding the abstract concepts so that younger children can understand them. This does not mean that the younger children understand the concept, merely that they a basis for understanding that helps facilitate future learning. In a sense, this is what happened to revolutionize the teaching of music and lead to ever younger musicians of top quality.

      So yes the ability of the young is often underrated. OTOH, teaching is a very sensitive to developmental stages, and not use developmentally appropriate methods is asking for disaster.

    4. Re:too young for abstract thought by Red+Alastor · · Score: 1
      Bullshit. People give kids too little credit. First off, most of them know basic algebra already- they've been solving math questions with x in the and solving for x for years. Secondly, basic programming doesn't require abstract thought- it requires you to understand boolean logic and arithmetic. Most kids can handle that by the time they're done with first grade, if not sooner.

      I didn't learn any algebra until what would be grade 7 in the US (12 years old, I guess ?) but when I was 11, I taught myself BASIC even if people said it was "too complicated". And it wasn't Visual Basic but plain ol' Basic with line numbers. I read from a book made for kids though. So I support kids not being given credit.

      I also think adults have more learning problems. When I discovered QBasic as a teen, one of my first thoughts was "cool, no line numbers and gotos !".

      --
      Slashdot anagrams to "Sad Sloth"
    5. Re:too young for abstract thought by jawtheshark · · Score: 3, Insightful

      You, sir, were simply an exception. I was in your league too. Alas, I did the mistake of becoming a teacher 1.5 years ago (I quit, now I am unemployed). Yes, I did teach some programming. You see, I thought too that kids could do this and I was confronted with 16+ year olds that had no concept of a variable. Something I took granted at that age. So, perhaps I was a lousy teacher (I will not argue over that, I know I was a bad teacher), but they did not know what a variable was even tought they had algebra the last few years. Go figure.

      Oh, I also tried to teach HTML to a bunch of 13 year olds. That was a bad idea... A really bad one.

      No, the AC is right. Most kids have problems with abstract notions. That you'll find slashdotters that knew what a variable was at age 10 is no surprise. I'd bet that over 50% of us knew what a variable was at that age. I too did the mistake of projecting my own competencies on the chidren of today. Of course, the article says it's a computer club. The situation might be different with kids attending a computer club and thus already showing interest.

      I that case, why not give Alice a try.

      --
      Ahhh...the great dumpster continuum. Many a free computer will be found there. -- sowth (748135)
    6. Re:too young for abstract thought by chris_eineke · · Score: 1
      You see, I thought too that kids could do this and I was confronted with 16+ year olds that had no concept of a variable.
      And you think it's the kids's fault? The public education system is a mess. You need to John Taylor Gatto to understand what is happening in schools.
      --
      "All you have to do is be fragile and grateful. So stay the underdog." Chuck Palahniuk, Choke
    7. Re:too young for abstract thought by Max+Threshold · · Score: 1

      Nonsense. Is this the kind of shit they're teaching our teachers?

    8. Re:too young for abstract thought by jawtheshark · · Score: 1

      I have experienced first hand what happens in public education. I was disgusted, and that's one reason why I don't have a job anymore. Getting back into IT after 1.5 years of being a teacher is very hard. I don't understand why, but everyone tells me I've been "out of it for too long". Damnn...

      --
      Ahhh...the great dumpster continuum. Many a free computer will be found there. -- sowth (748135)
    9. Re:too young for abstract thought by Red+Alastor · · Score: 1

      Maybe it's just a difference of expectations. When I was a kid and learning to program, what I was learning was cool in itself. Now kids wonder what the hell it as to do with this kick-ass 3D videogame they want to do which seems nowhere near. Not as motivating.

      --
      Slashdot anagrams to "Sad Sloth"
    10. Re:too young for abstract thought by Corwn+of+Amber · · Score: 1

      FWIW, I call this bull. I would have LOVED to be taught early in abstract thought, because I would have been able to since - seriously - 8 years old.

      I was a clever child, but I don't think I've ever been a genius, thus, other kids should be able to, too.
      (And if I'm that wrong, at least try with kids who have Asperger's syndrome and 40 IQ above average. That would train an army of über-geeks... )

      --
      Making laws based on opinions that stem up from false informations leads to witch hunts.
    11. Re:too young for abstract thought by jawtheshark · · Score: 1

      Yes, that is quite true. In our time we wanted to make stuff like space invaders. Still, remember that even then only a small subset op kids wanted to do this. Of my siblings, none wanted to learn that, only I did. In my class, most kids didn't care about programming, if they even cared for computers.

      Without a base interest, the kids won't want to learn it and modern games set the bar so high that I don't think many kids even try to make computer games these days anymore. After all, most of us programmers became what we are because we wanted to program games. ;-)

      --
      Ahhh...the great dumpster continuum. Many a free computer will be found there. -- sowth (748135)
  17. Lua by obarel · · Score: 1

    Sweet, simple and beautiful.

  18. Comments by Sigma+7 · · Score: 1
    Now I wonder what language should I pick?


    Are you teaching a regular stream of students or the "gifted" stream? Also, which grade level are you teaching? The answers differ depending on what you want to do.

    While you did mention the answer in the posting, it's still a bit vague. 10-13 years is a large age group - 10 year olds may minimally grasp the concept, while 13 year olds may need something a bit more complex.

    My first lesson will be the board game c-jump, but after that?


    You can do something much cheaper - draw a flowchart. The computer thinks just like that - it mechanically goes to one instruction and executes it, and goes along based on what comes next.

    While C-Jump may make the learning portion fun, you might want to consider LOGO instead - the users can provide commands, and get an instant result on screen (where the turtle draws a line.)

    The contestants are: Kids programming language KPL (ab VB.net derivate; Java using BlueJ; Greenfoot (and the BlueJ); and HTML. Does it sound like I'm on the right track or should I try something completely different?


    FYI, HTML is a typesetting language - not a programming language. No matter how hard you try, you cannot parse an HTML document using HTML. (If you come up with a webpage that does that, then you are embedding a program that is Javascript or some other document embeded programming language.) In addition, if you don't teach HTML properly, you'll have pages that use tons of   as opposed to tables to align text (or the now-preferred alignment method.)

    I won't comment on the three languages, but make sure you review the languages beforehand to see how well you can learn them. There is no better way to determine which programming language is the most suitable.
  19. Squeak by Anonymous Coward · · Score: 1, Informative

    You might want to look into Squeak. It has the full power of an object oriented programming language, but has a morphic graphical programming language on top of it, so kids learning it can jump right in without learning the syntax, but will be exposed to it as they work with the language.

    1. Re:Squeak by TVmisGuided · · Score: 2, Informative

      Squeak is actually a Smalltalk derivative.

      [/pedant]

      --
      All the world's an analog stage, and digital circuits play only bit parts.
    2. Re:Squeak by chris_sawtell · · Score: 2, Informative
      Squeakland is the site to go to. Squeak is a pure Smalltalk with many extra objects and methods. It gives 'children of all ages' hours of fun and games, while teaching one of the most productive programming environments ever created. A programming foundation using Squeak can lead directly to a professional programming career using SmalltalkX or Cincom Smalltalk

      If the teacher finds the Smalltalk paradigm incomprehensible I'd suggest (s)he try Ruby. The author, quite truthfully, claims it's a 'surprise-free' language. Together with Smalltalk it's one of the few truly Object Oriented programming languages. It's been reported that both Squeak and Ruby are going to be installed on the OLPC machine. ( The OLPC folks change their minds so frequently that I'm now not certain of that though )

    3. Re:Squeak by Anonymous Coward · · Score: 0
      Squeak, which I believe is a Scheme derivative, is geared towards children or at least people with minimal coding facility.

      No, it's definitely not geared towards children or people with minimal coding facility. And it's a Smalltalk derivative. But that doesn't mean that it would be a bad choice.

    4. Re:Squeak by Anonymous Coward · · Score: 0
      If the teacher finds the Smalltalk paradigm incomprehensible...

      ...they shouldn't be teaching programming! Smalltalk's paradigm rivals Forth's for simplicity. The implications of the paradigm are vast but the basic concepts are much cleaner, consistant, and simpler than almost any other language I've ever used.

    5. Re:Squeak by Anonymous Coward · · Score: 0

      After all the work Alan Kay and friends put into "Small" Talk and Squeak, I think they would be disappointed learn that neither is oriented for kids or non-programmers...

  20. Python. by pedantic+bore · · Score: 1
    There are several pedagogically-suitable languages... but if you want the one that best reflects the methodologies in current use in the "real world", Python is probably the best bet. Java with the proper wrapper is also good.

    Languages like Scheme, Forth, SML are interesting and cool but the ways of thinking they teach are, for better or for worse, not part of the mainstream. Better to teach good OO methodology and design.

    --
    Am I part of the core demographic for Swedish Fish?
    1. Re:Python. by TBone · · Score: 1
      Better to teach good OO methodology and design

      As I mentioned in another comment - if you jump right to OO programming, you're essentially teaching the kid how to hurdle in the Olympics without first teaching him "This is a hurdle. This is how you approach a hurdle. This is how you land after a hurdle. This is how you jump a hurdle. This is how you run between hurdles."

      OO is useful, and important, but it's hardly baby steps. YOu're talking about taking a bunch of kids, whose likely maximum experience to "computer programming" is playing their XBox or PS/2, and trying to teach them how Sprites work.

      Too far, too fast. They don't even correctly understand what a "program" is.

      --

      This space for rent. Call 1-800-STEAK4U

    2. Re:Python. by pedantic+bore · · Score: 1
      My experience has been that if you start at first principles, it's entirely possible to teach people OO in a semester. Other folks do it over a year. But if you wait too long to introduce these ideas then the students will be fixed in their habits. People tend to program in the first language they really learned or the rest of their careers (there's a guy down the hall writing Fortran programs in Java and, another guy writing JCL programs in C++...).

      To use your metaphor -- after teaching kids to run for a semester, they're not going to be interested in jumping over the hurdles. They know it's faster to run around them. Getting them to explore the third dimension is not easy.

      --
      Am I part of the core demographic for Swedish Fish?
  21. Rail-Line. by Anonymous Coward · · Score: 0

    "Teaching Primary School Students Programming?"

    Here's a related question for slashdot. Why do the majority of "Ask Slashdot"s that mention "School" also mention "Programming"? Don't they teach anything else in school?

  22. Squeak by sydbarrett74 · · Score: 2, Informative

    Squeak, which I believe is a Scheme derivative, is geared towards children or at least people with minimal coding facility. I would also incorporate this with HTML. Being able to grok HTML is very handy even if all you're gonna do is put a blog up on MySpace....

    --
    'He who has to break a thing to find out what it is, has left the path of wisdom.' -- Gandalf to Saruman
  23. kids programming language by laktech · · Score: 2, Informative

    I would recommend that you take a look at http://www.alice.org/ The site pretty much speaks for it self. The development takes place inside a 3D graphic enviorment. I think kids will find this very interesting and they can instantly see their results. There is also a text book that may be purchused, however, I'm not sure about the price.

    1. Re:kids programming language by Novus · · Score: 1
      While Alice may initially seem to provide a really nice graphical programming environment for beginners, it has, in my experience and that of some of my co-workers, a few limitations that will quickly stifle budding programmers:
      • Using a variable as an array index instead of a constant causes the interpreter to fail mysteriously with a stack dump. Good luck using arrays for anything interesting.
      • There doesn't seem to be any way for a program to dynamically create objects; you have to statically define them at startup.
      • Debugging features seem to be limited to the 3D universe view and a crude print function (which is really odd considering that Andrew Ko at CMU has used Alice as a foundation for a ground-breaking debugging tool).
      Now, even if the aforementioned features exist, they're not much use if you can't find them! This is a shame, as the whole 3D environment thing seems to be helpful in motivating students and concretising program behaviour. However, with the limitations above, Alice is only really good for toy examples.
    2. Re:kids programming language by Anonymous Coward · · Score: 0

      You can also try Squeak Alice within the aforementioned Squeak Smalltalk environment.

  24. Python and Blender by LetterRip · · Score: 2, Informative

    Teach them the basics of python then turn them loose in Blender 3D. They can do game scripting, it is a real language, and they can use the logic buttons for things that they don't need or want to program.

    Also there is predone games of a wide variety of types that they can play with, take apart, and rebuild into their own.

    LetterRip

    1. Re:Python and Blender by Profane+MuthaFucka · · Score: 1

      That's probably the most complicated thing they could possibly do, just because of the blender interface. They should stick to something really simple. That KPL suggestion was pretty good. The old standby Logo isn't bad either.

      --
      Fascism trolls keeping me up every night. When I starts a preachin', he HITS ME WITH HIS REICH!
    2. Re:Python and Blender by LetterRip · · Score: 1

      "That's probably the most complicated thing they could possibly do, just because of the blender interface. They should stick to something really simple. That KPL suggestion was pretty good. The old standby Logo isn't bad either."

      The age range is 10-13, not 5-7. We have a number of individuals in the 10-13 range who have self taught themselves Blender and the game engine. If you use the Blender cheat sheet, you can learn the important parts of the interface in a few minutes. Or if in a class it can be taught relatively quickly.

      LetterRip

  25. Definately go with Java by treak007 · · Score: 1

    I find that Java seems to be one of the easier programming langauges to learn. Not only is it very simple, but also very well documented (ala the amazingly well documented api). Also, I would definately recommened Bluej for an IDE since it is very simple to use and understand. Anything more will just confuse the kids. For the explanation part, you could describe each object kinda like a box and tell the kids that there are bits of code inside the box, and show them how they are just like any other variable.

    --
    Klingon Software is not released, it escapes, inflicting terrible damage onto the enemy as it does
  26. Wrong question by swillden · · Score: 1

    IMO, you're asking the wrong question. Almost any programming language will work, what you need to find is an appropriate curriculum and supporting materials. What's needed is a series of fun programming projects that start out very simple, but progress appropriately and catch and keep the kids' interest. The curriculum needs to be constructed around a specific language, so it can introduce specific language elements as needed to support the programming projects, but the language used is nearly irrelevant. Obviously, interpreted languages have advantages, "forgiving" languages may help, and it's really important to have a toolset that provides good, simple error messages so kids can understand what's wrong when they screw up the syntax, but all of that is far less important than a good, well-designed series of projects.

    If you find such a curriculum, or if someone else knows of something like this, I'd really like to hear about it. A couple of my kids are mildly interested in programming, and I'd like to get them started, but I have neither the time nor, honestly, the imagination to put together a good curriculum.

    --
    Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
    1. Re:Wrong question by NotesSensei · · Score: 1

      You hit the nail on the head. The curriculum is key. So the rephrased question would be: Who can point to a good teaching curriculum to teach 10-13 year old kids programming (and what language would that be)? Do considerations about open or propriary system play a role. I was leaning towards KPL. However my kids use mostly a Mac at home (or Linux for the KDE games), so they couldn't follow it.

    2. Re:Wrong question by martalli · · Score: 2, Informative
      You're absolutely right. More important than the language is an appropriate curriculum. I have never had the opportunity to use it, but the LiveWire curriculum was developed for a preteen/teenage audience for use at summer camps in England. According to the webpage, it was designed as an introduction to programming. This may be directed more at children on the older side of the range the questioner asked. However, it has worked well for them over several years, and the whole curriculum appears freely available.

      http://www.livewires.org.uk/python

  27. Lego Mindstorms by Anonymous Coward · · Score: 0

    I've had success with Lego. It was some years ago before Lego Mindstorms. Lego had a large computer controlled kit. There was a really good manual with lots of projects. There was enough stuff to make a robot arm with a grasper that could pick things off a conveyer and put them ... (hmm, can't remember that part).

    There was enough challenge to keep the kids interested but not so much that they couldn't succeed.

    Lego is expensive but the good news is that their patent has run out. There is now some price competition. You can also build your own sensors and motors by epoxying stuff (switches, dc motors, steppers) onto Lego blocks. The kids can start with something from the manual and extend it with home made parts. Because they are building on something that works, they never have to stray too far from their comfort zone.

    The Lego project worked for all students, not just the ones who were already interested in programming. For students already interested in programming, it seems like a pretty safe bet.

  28. justBasic by Billly+Gates · · Score: 1

    Mainly because its free. Schools have a strict budget and I doubt they have a few licenses for VS for VB. Java is free but I would not recommend it. I tried java without knowledge of c/c++ and had to drop the course in my freshmen year of school. After taking C++ I recieved an A for my java programming course in object oriented programming. Even a hello world program is complicated if knowledge of public and private and strange syntaxes without meaning (if your new to programming) are used.

    The link is here and the help menu has homework assignments and tutorials for begineers. You can do windows based gui's and even graphics with sprites and primptives. Since its free you also can legally make cd's for your students to bring home which is cool too.

  29. What is the goal? by PinkPanther · · Score: 1
    What is your goal?

    If it is to teach "introduction to instructing a computer" then one idea I used (grades 7-8) is macro programming in spreadsheets. It wasn't "programming" per se, but it did get across the concept of a "variable", some simple calculations, conditional logic and for the more advanced kids looping and subroutines/functions. I was teaching to a very mixed class, but the "gifted" kids and the "general" kids all ended up having a successful experience. I had them program simple games such as having the spreadsheet "guess a number between 1 and 10 (for the advanced, between the values of A1 and B1)", or have the spreadsheet keep track of scores in a two person number guessing game, or hangman, etc...

    If "introduction to programming" (i.e. you really want to teach them to "code"), then you really ought to think about what it is you are going to have them program, then choose a suitable language. If you want them to simply print their name to the screen 10 times, then just about any language will do. But if you want them to do something interesting (and to any kid born with a PC already in the house, printing their names to the screen will bore them to tears), that "interesting" thing may dictate which language (support libraries, IDE, ...) you want to go with.

    --
    It's a simple matter of complex programming.
  30. My Curriculum by wynand1004 · · Score: 2, Informative

    I teach computers at an international school in Tokyo Japan. My students vary in age from grade 6 to grade 9. As you can imagine, they also vary in English language ability. Here is my curriculum:

    Grade 6: Drape - A drag and drop programming language (No longer free but you can downloa it from my homepage).

    Grade 7: Game Maker - A more complex drag and drop programming language created by the same person who created Drape.

    Grade 8: Kids Programming Language - A BASIC-like programming language with easy to use graphics (sprite) capabilities and built in functions such as collision detection. Note that an updated version with 3D graphics capablities will soon be released (around Sept. 2006).

    Grade 9: JavaScript - I use a program called Max's HTML Beauty++ for editing JavaScript and NVU for web design.

    I have also used Small Basic and my own JavaScript Interactive Fiction engine.

    You can find downloads of most of these programs and some lesson plans at my homepage.

    Feel free to contact me if you have any further questions.

    --
    An invasion of armies can be resisted, but not an idea whose time has come. - Victor Hugo
  31. BASIC, Logo, ToonTalk by tverbeek · · Score: 3, Informative

    Like most geeks of a certain age, I cut my coding teeth on BASIC, which in its traditional implementations (TRS-80, Apple ][, C64) was nicely interactive, but probably too boringly textual for Kids These Days.® Don't know how the "modern" versions of it compare.

    Logo became available to me after I was "too advanced" for it, but certainly deserves a look as the "other" classical language for introductory programming.

    I've heard some good things about Toon Talk.

    Or there's always BrainFuck.

    --
    http://alternatives.rzero.com/
  32. HTML/CSS by breakitdown · · Score: 1

    If you actually want them to be interested in what you are teaching I'd either focus on or at least start with html and css. This is relevent to 95% of the students. They already use, or soon will use Myspace, LiveJournal, XANGA, etc., so they will appreciate it from the get go.

    --
    -Michael, AKA Frankie.
    1. Re:HTML/CSS by niteice · · Score: 1

      You can teach kids HTML, but you can't teach them good design.

      --
      ROMANES EUNT DOMUS
  33. Hell NO! by Anonymous Coward · · Score: 1, Insightful

    They will be interested and it might help them to stay focussed, but it's NOT A PROGRAMMING LANGUAGE! (Sorry if it sounds pedantic, I'm just sick and tired of the "I can program in HTML" types). It's just markup. Various tags and some styling stuff. It doesn't teach anything programming related (javascript aside). And about CSS? Good luck trying to get them to understand the box model (we're talking about 10-13yo kids here). To get the results most people want, they'd have to learn a lot more than what you'll be able to teach in so little time, so it might be quite deceiving to them too (markup - including forms, css & box model, at least one server side tech, javascript basics, etc - if not flash too)

    Instead of teaching them basic loops, variables, constants, conditionnal statements, basic string/math ops, subroutines and such, you want to teach them tags for making their text bold and such? (and then try to explain doctypes/DTDs and such)

    Learning to program helps to understand how computers work. I think it's very useful. Whereas HTML... Most of 'em will likely end up using a wysiwyg editor anyways if they ever have to write some markup later on (dreamweaver et al) - unless they become web devs... Anyone can pickup simple markup in no time at all regardless.

  34. Check out Phrogram by HairyBuffalo · · Score: 1

    http://www.phrogram.com./ It's actually the second version of Kid's Programming Language, will release next month, and is available as a release candidate download now. It's supposed to be as easy to use as KPL, but it adds some new stuff: compiling to EXEs, class-based programming, 3D programming with DirectX models, file I/O, and interactive debugging.

  35. language not important by fermion · · Score: 1
    I hate not answering the question ask, and frequently am annoyed when someone answers a perfectly reasonable question with a litany of why the question is wrong, but in this case I believe you are off track.

    Programming, as we all know, is establishing a standard process, while allowing for certain deviations, in a directly or indirectly machine readable code. There are several layers of abstraction involve, the most obvious is the abstracting of they physical process, but one must also abstract concepts like repeatability. The student must also respect cause and effect and not, for example, attend Titanic 20 times hoping that both major characters die and in the process create a world in which the movie no longer exists, or perhaps exists with a reasonable director and competent actors. But I digress

    But I digress. While this age group has the ability to recognize concrete structures, the ability to abstract those structures probably does not exist. To put this more plainly, a student might be able to understand that both sides of an equation must balance, but may not be able to do single variable algebra. Therefore the concepts of programming must be build concretely.

    The game is good, but the kids have to learn process and algorithm. This is not necessarily done on the computer. Have them right how to do certain things, then see what could change and still result in a successful operation. How to we sharpen a pencil. How do we brush our teeth? Given them a map and have them find how to get from their city to another of their choosing. Their teacher probably has exact procedures. Have them write them out and discuss the rational. Any metacognitive activity for this age group will be good.

    Another concern is the understanding of variable. For even high school kids the concept of a variable is problematic. Even for college kids the need for idiom t=x, x=y, y=t, is far from obvious. These problems can be surmounted, but they must be addressed.

    In terms of the language, anything that minimizes the mental power needed to interface the machine will be good. At age 11 I learned to program on teletype using basic, though it was 3 more years until I understood what was actually going on. It might be fun if the language produced some nifty graphics, and the child could directly visualize the changes in code with the changes in graphic output. For instance, if a loop would produce more squares, and some parameter would change size and spacing. New language elements could be introduced to create more complex graphics. I would avoid complex APIs, and try to stick to stick with things that are native in the language. These requirements tend to point to an interpretive language. Also syntax should be short and forgiving to allow for the limitation of the children.

    One last point is I do not think that worrying about a specific standard language is important. It is the concept building that is the likely objective. I mean memorizing and categorizing hundred of Dinosaurs may seem useless, but the concepts learned stay with the child long after every name is forgotten. So if the kids learns about process, and the basic elements of assignment, looppimg, and conditionals, that would be a great job done.

    After this long aside, let me suggest a product. Though I am not the biggest fan of the company, The geometer's sketchpad is an interesting piece of software, and seems to have some script capability. I can't seem to find an online manual, which is one reason I do not like the company, but I believe the software does have at least some of the programming elements, and therefore can be used to teach some concepts. The school may already have it.

    --
    "She's a scientist and a lesbian. She's not going to let it slide." Orphan Black
  36. Ruby is a good choice by graznar · · Score: 1

    Ruby is readable and pretty easy to grasp. There's even a free text, Learn to Program by Chris Pine, which takes the reader through the baby steps of learning to program.

    --
    [ check out my ruby book @ http://ww
  37. No, the language is important by try_anything · · Score: 1
    Don't make them learn anything they can't grasp the need for. That eliminates Java, C++, and a host of other languages that impose burdens that pay off in performance, large-scale maintainability, portability, and other things that aren't of any use to the kids.

    In the best case, everything they type will have meaning and value to them. Instant feedback is also a plus. That means your best bet is a dynamically typed languages with a REPL. Many other posters have suggested languages/environments with convenient access to graphics; from my own experience, I would say graphics are nice but far from essential. That's your call, though, since you know the kids better than any of us do.

    Here's a suggestion that may be a bit... out there. Teaching Haskell to kids might be risky, but it's guaranteed to be easier than teaching it to adults, especially experienced programmers.

  38. Teach them Haskell. by tietokone-olmi · · Score: 3, Funny

    That'll weed out those who have no commitment. It'll also make the handful of math-oriented people in the class more aware of the connections between mathematics and computer science. It's not like people these days are encouraged to get rid of the bad habits they picked up with J. Random Wanker Language or anything. Also, interactive programming with hugs. Who doesn't like hugs?

    Hell, maybe it'll teach kids better habits (like focusing on the algorithm and on getting a working program first) than some heavy mittens language like Python or Javur. The error messages could probably be a little much for 10-year olds though. Maybe Helium, a Haskell variant geared for education and without some of the more esoteric features, would suit that better?

  39. First-Grade Logo by Lobo42 · · Score: 1

    When I was in first and second grade, we were taught Logo-Writer at my public school. It's a lightweight programming language where the commands control a "turtle" onscreen who follows the sequence of commands for drawing, moving...lots of various tasks. Unfortunately, that has since been removed from the curriculum and Logo instruction was not taught much beyond fourth grade. (The program switched to using Word and the Internet and such...which is a shame, really.)

    The Little Schemer was mentioned above - that might also make a good choice.

  40. Programming Basics Website for Teaching JavaScript by my2iu · · Score: 1

    I've actually created a website at http://www.programmingbasics.org/ for teaching simple programming to young kids using JavaScript. It targets a level below that of KPL but above that of c-jump. It's designed to be completely self-contained, so the website provides an IDE, an extensive set of illustrated lessons, and various programming activites. Many of the other educational programming systems that have been mentioned here are quite nice and powerful, but they often come with only very brief tutorials. If kids "get" the tutorial, then you're fine, but if not, then a more detailed set of lessons like those provided by my Programming Basics site might be useful.

  41. teaching their hopes to be dashed by DuctTape · · Score: 1
    Teaching somebody programming in primary school is like teaching someone to be a millionaire, but when they get out to the real world, it's not like that at all (plus they don't get the million dollars). There is a lot of competition from others overseas for jobs here unless you can walk on water. I think that unless you're totally passionate about programming, and can stand that software engineering crap (yes, I know it's necessary) that takes all the fun out of programming, you'd better look elsewhere for a job, unless you're going to spend your life working on open source projects.

    It sucks trying to do it for a living, when everybody is doing more with less, budget cuts, long hours due to PHB shortcomings, etc. Yes, I'm in the middle of a four-month long crunch mode due to management shortsightednsess; does it show?

    DT

    --
    Is this thing on? Hello?
  42. Interactive fiction by Anonymous Coward · · Score: 0

    Although probably unintentional, those old Infocom games gave non-programmers a great educational CS experience. As you hunt treasure and outsmart the thief, or gather clues and question witnesses, you also learn to think abstractly, create and step through algorithms and carry around a lot of information in your head -- all while working at a genuine command line.

    Most of these Infocom games (link below) you can get from somewhere online if you look, and play them with an interpreter such as frotz or jzip.
    http://www.infocom-if.org/games/games.html

    Only the Zorks are technically legal though, because they were released by Activision. You can also try them out online right here:
    http://www.ifiction.org/games/play.phpz?cat=2&game =3&mode=html
    http://www.ifiction.org/games/play.phpz?cat=2&game =4&mode=html
    http://www.ifiction.org/games/play.phpz?cat=2&game =5&mode=html

    I credit years of tinkering with Deadline and the Zorks with giving me a better early foundation beginning around age 11 than I would have had just noodling with the C-64 "Ready" prompt. (Or worse, noodling around in a modern GUI.)

    C-jump seems painfully uninspiring to me. I think the problem with games like that and the programming languages "designed for kids" is that they're insincere: Your students will know immediately that they're not doing something real.

    1. Re:Interactive fiction by Anonymous Coward · · Score: 0

      It may also be worth mentioning that maps:
      http://infodoc.plover.net/maps/

      and solutions:
      http://ifarchive.org/if-archive/solutions/infocom/ solutions/

      to these games are also available online.

  43. As an Educator I Recommend Piaget by Proudrooster · · Score: 2, Interesting

    As humans brains develop, they go through many developmental phases along the way. Piaget came up with a developmental stage theory. The most important thing to remember is that primary kids are in the "Concrete Operational Stage" and can do well with concrete ideas like numbers, colors, linear procedures, and facts. However, kids at this age (especially boys, who typically develop slower than girls) can not handle abstract concepts. An abstract concept would be something like the equation 'X + Y = 4' or 'if x+5 > y+10 then'. As long as your programming languages don't get too abstract the kids should be able to process it fine. I find that HTML doesn't really process in kids minds until 7th or 8th grade.

    Also, you have to apply the 80/20 rule. We are all different and our brains develop differently. But Piaget's theory applies to 80% of kids. I like to use the Lego Mindstorms Robots. The robotics invention system supports big blocks e.g "Turn Left" or small blocks e.g. "Turn on Motor A, Turn off Motor B, Wait 5 Secs, Turn on Motor B". The Legos give kids the change to try to work with abstract problems, but they can drop back to the concrete stage very easily by using the cause and effect process.

    I believe that someone mentioned Logo. That is a great 'cause and effect' type of programming language in which kids can create a small abstract program and then see concrete results. Allowing the young brains to move back and forth easily between concrete and abstract is the key to teaching programming at this age.

    Hope that helped.

    1. Re:As an Educator I Recommend Piaget by Trizor · · Score: 4, Insightful

      As one of the 20 (My fifth grade teacher actually read Piaget and showed it to me and labeled me as such) I look at my classmates and see that now (12th grade) they still struggle with symbolic concepts because they were codeled with the concrete for much too long. The example is physics, where the solutions are often entirely symbolic, many students have trouble with manipulating and thinking abstractly in symbols. However in earlier classes they are encouraged to plug in concrete values as soon as they learn them, and I was actually repremanded for using symbols (My Father is a Professor of Physics and when helping me with math homework at a young age insisted on my use of symbols instead of concrete numbers.) in Chemistry I when we were working with heating and cooling and temperature. While the concrete numberse were initially easily grasped by the class, problems quickly arose when they forgot the meaning of each number because it changed problem to problem and began to forget the theory behind what they were doing. The result was that every single class member could work any type of problem they had seen previously on memory of the motions to go through, but had no clue as to what they were doing and could not solve any new type of problem based on the theory they knew. In short: While they may still be developing the ability to understand abstractions, the sooner they begin learning the better they will be for life. You'll be doing them a favor by introducing them to the concept of a variable and a general solution.

    2. Re:As an Educator I Recommend Piaget by RoloDMonkey · · Score: 1

      Amen to that brother! After teaching on and off from pre-K to 12th grade, I have come to the realisation that the U.S. education system is fundamentally flawed. Kids can repeat steps they have been taught, and they can cut-and-paste to make an essay, but they are not being taught to think. Most students I know can't research, draw conclusions, state opinions, come up with original ideas, and create solid arguments. This is a serious problem because the American economy is completely dependent on increased efficiency and innovation. There are only so many unskilled jobs left, and these kids don't have the skills to get a white-collar job. We need them to learn these skills, not only to keep them off the dole, but so that they can create the new industries that will keep us all employed in the future.

      --
      Long live the Speaker Bracelet
      Rolo D. Monkey
  44. Logo(the turtle) by WilliamSChips · · Score: 1

    I agree. Logo is a great language for young programmers.

    --
    Please, for the good of Humanity, vote Obama.
  45. I find BASIC confusing by Asmor · · Score: 1

    Maybe I'm just weird, but I find BASIC very, very confusing. I look at BASIC code and it's like I can't even grok it. I can't see the program's layout or flow or anything...

    I think it's the relative lack of parens/brackets/etc. I don't like the whole "similar to English" thing when it comes to programming.

    1. Re:I find BASIC confusing by TheGreek · · Score: 1
      Maybe I'm just weird, but I find BASIC very, very confusing. I look at BASIC code and it's like I can't even grok it. I can't see the program's layout or flow or anything...
      Yeah. I agree. C#:
      using System;
       
      namespace Hello {
        public class HelloWorld {
            public static void Main(string[] args) {
              string name = "C#";
       
      // See if an argument was passed from the command line
              if (args.Length == 1)
                  name = args[0];
       
              Console.WriteLine("Hello, " + name + "!");
            }
        }
      }
      makes a lot more sense than VB.NET:
      Imports System
       
      Namespace Hello
        Class HelloWorld
            Overloads Shared Sub Main(ByVal args() As String)
              Dim name As String = "VB.NET"
       
              'See if an argument was passed from the command line
                If args.Length = 1 Then name = args(0)
       
                Console.WriteLine("Hello, " & name & "!")
            End Sub
        End Class
      End Namespace
  46. Programming is not just for programmers by LihTox · · Score: 1

    We don't teach elementary school kids history because we want them to grow up to be historians; we teach it to them to give them a more rounded education, an appreciation of history, a new way of looking at the world, and exposure to a subject which, even if it doesn't become their profession, might at least become a source of fun and an output for creativity.

    Teach programming for the same reasons. Computers are everywhere; if people knew how to program they might have a better appreciation of how software works, and they might even enjoy programming for fun, as a hobby. (I know I do.) If they use open-source software, they may be tempted to make changes to improve it: voila! a whole new generation of contributors to the open-source movement. If they get into the habit of it, they will learn to value the ability to see and change the source, which may lead them to spurn closed-source alternatives. (No, I don't mean everyone, but a growing number over time.)

    I started learning BASIC at age 8 on my Vic-20, and while I'm not a professional programmer or computer scientist, I AM a theoretical physicist, and the ability to program has been vital to my career. No doubt, the same is true for many other fields as well.

  47. Logo - visible results with simple programs by egburr · · Score: 1
    I like logo. You can get graphical results with a simple program. It is easy to see how minor logic changes make huge differences in the results. And for the first few dozen exercises, the assignments can be to draw specific pictures. Starting with simple shapes (square, rectangle), moving to harder ones (triangle), then even harder (circle, oval, arc). Then, more complex designs (a triangle on a square, a circle inside a square, etc.). A christmas tree is good for an introduction of subroutines. Then you can start drawing graphs based on static data, then based on calculated data. But the best thing is the results are immediate, obvious, and simple to understand. Plus, watching the turtle racing around the screen is good for quite a bit of entertainment before you start geting bored of it.

    With all that said, I first started off by entering in hex data from an Apple magazine (Byte?), later progressing to writing my own programs in AppleSoft Basic before I ever heard of Logo. I've dabbled with Pascal, Fortran, C, and Java. Of course, now most of my "programming" is shell and perl scripts with an occasional DOS batch script.

    For learning how to program (the logic and though, not the syntax), I like Logo best for the reasons above. I also like Pascal for the strict structuring (good to learn even though a pain in the rear).

    --

    Edward Burr
    Having a smoking section in a restaurant is like having a peeing section in a swimming pool.
  48. I'm using Logo by dbc · · Score: 1

    Logo. Good, old fashioned Logo was designed to teach programming to elementary age kids. We home school, so I work with Logo with my 7yo daughter. She loves it. And logo is built on a lisp engine, so there is significant power underneath. We use Terrapin Logo, FWIW, and like it. There are other choices. Terrapin has an interface to the Lego RIS robotics system, and also the FischerTechnic stuff, if you get that far. Also Terrapin has some useful lesson and teacher guide books to give you some hints on how to go about teaching with Logo. All emaphisize learning by experimentation.

    Side note: my daughter is a "kinesthetic learner", specifically, large motor kinesthetic. To plan out her turtle code, she will march around the room "being the turtle" and then go try it on the computer. I think that is a great way to learn about modelling execution in your head instead of the code-like-mad-and-crash development model. Brings a new meaning to the phrase "code walk through".

  49. HTML a typesetting language??? by DrJimbo · · Score: 1
    Sigma 7 said:
    FYI, HTML is a typesetting language - not a programming language.
    I fully agree with you that HTML is not a programming language but it sure as heck is not a typesetting language either. It is, as its name implies, a markup language. TeX is a typesetting language and a very good one at that.

    Be that as it may, I think that teaching HTML could be a good way to introduce primary school youngsters to programming. I agree that it lacks all of the charm and complexity of a real programming language, but that makes it simpler for the kids to grok and it also gives them an almost immediate graphic feedback which makes it easier to find bugs.

    The biggest problem I see with teaching them HTML is that modern browsers will go a good job at displaying really messed up HTML. But this could be turned into an advantage by turning it into a game and having the kids see how far they can mess up the HTML and still get the pages to display correctly.

    --
    We don't see the world as it is, we see it as we are.
    -- Anais Nin
  50. Have you ever even worked with children? by MarkusQ · · Score: 1

    Have you ever even worked with children? Tried to teach them anything? Have you ever watched (and listened to them) playing?

    Kids hop between the abstract and the concrete, the real and the imaginary, with a dexterity that leaves most grown ups in the dust. They learn new languages, new rule sets, new abstract systems, at a rate that we can only envy. And when they learn them they retain the flexibility to think outside them when it suits them.

    Your post is condescending and factually inaccurate in so many places I could waste an hour pointing them all out. Instead, I'll pick just one representative example:

    Also syntax should be short and forgiving to allow for the limitation of the children.

    Here's a bet for you. Pick some eight year old with an IQ twenty points below yours. Both of you move to Hungary and attempt to learn Hungarian. At the end of a year, who do you think will be better?

    --MarkusQ

    1. Re:Have you ever even worked with children? by Anonymous Coward · · Score: 0
      Kids tend to learn things socially. They learn natural languages socially. They learn to follow rules socially. They learn non-magical thinking socially. They learn the things that constitute reality socially. However, most things that young kids learn tend to be skills, and often tend to forget the trivia they memorized as a means to learn these skills. Furthermore, the ability to grasp the truly abstract and metaphorical is limited. Just try talking the same smart kid(20 IQ point would not make so much of a difference) to recital in which the music is complex. They might tolerate it, but would probably find the music on the Disney station more accessible.

      Most children play is a simulation of life. Playing house, whatever. The play tends to be based in the concrete, mimicking what the child has seen, while very little elaboration. There is creativity and some abstractness in the fact that the child can relate the truck he or she has build with legos to the truck he or she has ridden in or seen, but that by no means implies that the child has abstracted the truck to components and processes. Even if the child can mimic the words that describe the parts of a truck, understanding of cause and effect are likely not extremely developed.

      The best computer related example is when I was observing someone teaching young kids about the parts of a motherboard. Each kid has a motherboard, and each kid was able to point to a component, recite it's name, and recite it's functionality. This was a good lesson because it was concrete and introduced some vocabulary. The lesson did not try to push the relations between components, or have the kids internalize the meaning and state functionality in their own words. This does not mean that many kids could not so do, just that within the need to not overload kids and let them learn a little at a time, this was an acceptable level of learning.

  51. Starlogo by njord · · Score: 3, Insightful
    A few years ago, I as an NSF GK-12 teaching fellow at the University of Maine. Basically, University students were assigned to K-12 (non-US people, read: before college) classrooms and asked to help with science curriculum. One of the classes I was assigned to was the computer course for eigth-graders. Probably nobody remembers it, but a few years ago, the State of Maine gave all 7th and 8th graders iBooks to use in their classrooms, so the computer teacher and I conspired to teach some basic programming to the kids. In most public schools in Maine, programming is taught, even in high school, so this was almost certainly the first time any of the students saw programming, and probably the last they would be able to learn in school until college. I eventually decided to use Starlogo, given that it was designed to teach programming, it was available, and I have fond memories of learning basic programming on Logo on the Apple IIe. It worked as well as I could have hoped, and there were a few kids that were interested in doing more (I pointed them on to Python). Here are some things I learned that I'd like to pass on to you:
    • Kids don't always remember details. This can be difficult, because most computer langauges are not forgiving in their syntax. Kids are good at picking up on details, but don't expect them to memorize things like StupidConfusingClassname isn't the same as stupid_confusing_classname.
    • Kids like feedback. Thus, the read-eval-print-loop style is important toward keeping their interest.
    • Related to that, the intrinsic graphical nature of logo is very engaging.
    • This really just a general teaching comment (which I was totally new to when this project was given to me) - especially with totally new topics, kids will have all kinds of levels of ability and interest in the topic. It's important to have something that all of them can do, but also to have something to challenge the kids having an easier time of it. I would ususally introduce a simple topic and have everyone try it out, and then I would have a "master" level problem for the wiz kids to try.
    • Robustness and responsiveness is good; kids aren't very patient, as a rule, and if the programming environment crashes, or performs slowly (and Starlogo, being a Java app, did run poorly on those iBooks), the kids will lose interest in it while they wait for the app.
    I should also mention that StarLogo wasn't really being maintained when I was doing this (or it was being minimally maintained), but now it looks like someone has revamped the project with StarLogo, the next generation. Finally, whatever you end up choosing, don't teach them HTML and then tell them that it's programming. Few things irk me more than people talking about "programming in html". If you want to teach them HTML, fine, but don't let them think they're programming. By they way, youung children might have trouble with html for the first reason I gave above. The syntax is very clumsy and exacting, and worst of all, you don't get error messages from the browser when you screw it up! Anyway, have fun! njord
  52. Waste Of Education and of Childrens' Time by littlewink · · Score: 1
    In 8-12 years, when they graduate from college, will any current programming language be in popular use (other than COBOL)? Don't you think the computing landscape will be completely different then? You may as well teach them how to use the abacus or sliderule.

    I suggest you use MathCad or MatLab or Maple since then at least they'll learn something useful (mathematics).

    1. Re:Waste Of Education and of Childrens' Time by Anonymous Coward · · Score: 0

      Yes, because there are basically no programming languages still in use today that are more than 8 years old. About the only ones I can think of are COBOL, C, C++, Perl, Pascal, Python, Basic, Java, Lisp/Scheme, Fortran, JavaScript, TCL/Tk, etc.

      Hrm. On second thought, I suppose one or two of them might still see a little bit of use a decade from now.

      --
      Christopher Cashell
      (Posted anonymously because I moderated elsewhere on this story.)

    2. Re:Waste Of Education and of Childrens' Time by gklinger · · Score: 1

      I don't think the exercise is about teaching them a specific language in the hopes that it will lead to vocation. It's about teaching the concepts and principles of programming which can be applied to whatever the "computing landscape" of the day dictates. Many of us /. readers learned to program in our youth and as a result learning new programming languages is trivial because the only thing we need to do is familiarize ourselves with the syntax. Learning programming concepts assists in the understanding of logic and structure and brings a more profound understanding to mathematics. It's a foundation on which a great deal can be built.

  53. PHP by Ankur+Dave · · Score: 1

    How about PHP? It's an interpreted language, so no mess of compiling, and it runs (usually) on a Web server, so kids can make programs and upload them to the school server, letting them easily show other kids. The typing is pretty loose, so you don't have to worry about messy variable details. You can start the kids out with simple programs that take GET vars and process them, and introduce them to objects later. And the syntax is like C/C++, getting them nice and used to those more powerful languages if they want to learn them.
    The only problem is they have to know something about HTML first, but HTML is pretty simple; I learned it in 3rd grade.

  54. Something fun by serdagger · · Score: 1
    I've got to go along with those who emphasize making it fun. I started with QBasic when I was about the age of your prospective students (maybe a little younger), and the ability to write a quiz show game in my first week got me hooked, and writing Lemonade Stand within a few months reeled me in.

    The language itself doesn't matter, although I would focus on more procedural stuff, since it's simpler than something like Scheme to write usable programs off the bat. I do love Scheme, but it's better to foist on college freshmen (or experienced high school students) than preteens with short attention spans. Teach them the absolute basics (print, read, if, do-while), and have them write games (simple, like a quiz show).

    The programs will be really bad, and most of your students will hate it. But a few will love the ability to create what they want and will pursue it further. And, really, that's the best you can hope for in your situation.

  55. maybe not logo, but... by athena_wiles · · Score: 1
    I see a lot of people here suggesting Logo. I loved logo, but I think that was more useful in maybe 4th grade (age 8 or 9). For reference, here's the sequence that I went through... it seemed to work pretty well :-)
    • 4th grade: LOGO. we actually had an entire "how computers work" module that my dad led a group of students through - lots of fun. learned a lot about the basics of computer systems in general (i.e. processor, memory, storage, I/O) as well as basic programming. this was really well targeted to our age group at the time.
    • 8th grade: BASIC and HyperCard. Again, great stuff for that age. Hypercard let us create interactive/graphic stuff, while BASIC got us more into the actual programming side of things, as I remember. Hypercard was great for getting us involved though, because the ability-to-do-easy-graphics-and-interact-with-them thing was a big plus.
    • 10th grade: C++ in AP CompSci. My school now teaches Java in this course, but C++ was just fine when we were doing it. Best part was when the teacher decided to go outside the AP curriculum and introduce a simplified graphics library so that we could program our own versions of things like minesweeper and tetris using the concepts we'd covered in class. probably learned more that way, too... :-)

    Other possibilities that might appeal to the 10-13 age-group are:
    • flash - in a similar sense to hypercard, this is great because it lets you create graphics that you can interact with. Some simple actionscript might be a way (albeit not an optimal way, but...) to teach some programming, while still being something kids can get excited about. dunno if the learning curve woudl be too much though.
    • Javascript or PHP - two different ways to both introduce programming languages and things they can interact with on the computer. only problem with these two are that you'd probably have to teach some HTML first, which, while fun, may not be the "programming" that you're aiming for
    I'm sure that there are a lot of other languages that would work really well, but based on my experience *learning* to program as a kid (in the not-too-distant past), I think that some sort of graphical/interactive element is really important for that age group. When you're ten years old, just seeing text output of a program isn't really all that exciting or attention-grabbing.
  56. Good languages for learning by kungfujesus · · Score: 1

    i would reccomend one of the following languages BASIC C PASCAL those are all great starting languages VB is a horrible language for learning, it will cause bad programming practices

  57. Some Education-Specific Language Choices by Dr.+Faustroll · · Score: 1

    Several other people here have mentioned Logo - an excellent choice, in my view. I recommend taking a look at the three volumes of Brian Harvey's Computer Science Logo Style .

    The Logo tree has spawned several other languages - two worth looking at are NetLogo and StarLogo TNG - both of these languages are particularly well-suited to modeling projects, the first with a traditional text-oriented perspective, the second with a graphical programming interface.

    Another programming language specially designed for education is Alice - the language is designed so students can graduate rather quickly to more complex object-oriented languages. Python, Ruby, and Java would all be good follow-up languages to Alice.

    Finally, let me gently suggest that you not follow through with at least one portion of your original plan: the game c-jump is a very poor choice for introducing students to programming. Not only is the game completely inappropriate for any child over the age of 3-4 (it is just a very boring version of snakes and ladders), it is also extremely poor from a pedagogical viewpoint, with no creative activity on the part of the students, reinforcing notions of code as arbitrary sets of commands. The first couple of tutorials in Alice will be far more enjoyable for your students, and actually get them involved in some real thinking about programming.

  58. I speak all this languages :-) by NotesSensei · · Score: 1

    I learned all of this languages. However learning programming languages comes with lower increments over time. E.g. I knew Java and VB, to get VB.NET took a few hours (excluding of course understanding the .NET framework). Of course if you jump paradigm (e.g. Basic to Lisp) you have to unlearn which is more difficult than learning. Your'e right HTML is a content rendering (I wouldn't say typesetting) / markup language. Since it's easy and can be extended with JavaScript and CSS it makes a good intro. However it lacks (until you hit JS) programming per se. The need of learning 3 languages (html, css, js) is an advantage if you want to focus on diversity.

  59. Variables don't seem difficult by NotesSensei · · Score: 1

    I play C-Jump with my 6 year olds. It took them 30sec to understand that X is a placeholder for the number they throw with the dice. So it seems to me variables might not be too difficult. Of course the "full appreciation" might take a little longer. Nevertheless we all use internal combustion engines without appreciating their full complexity.

  60. You could use something other than LOGO by Anonymous Coward · · Score: 0

    But then you'd be wrong.

  61. Visual and scriptable by SanityInAnarchy · · Score: 1

    It should be visual, and it should have a real-time interpreter. You want to make the process as simple as possible, and get them thinking about logic before you burden them overly with syntax.

    Actually, here's a suggestion: Try games first. Not to program with, but as an example. "How do you think this would work?" "What makes this glitch work? How could we fix it?" And all along the way, you can discover and correct their misconceptions about what a computer can and cannot do.

    --
    Don't thank God, thank a doctor!
  62. Seen kids doing C by tuxisthefuture · · Score: 1

    I have worked in schools and have often seen kids (11-16) working on open source games projects such as Open Tibia during there break times. There has been no programming lessons within the actual lessons themselves, the kids tell me that they are bored with the lessons as they only learn how to type letters and create spreadsheets, many of the kids had learnt this before starting at the school.

    Also, try to introduce the concept of Open Source and encourage them to share there work, explain about licenses.

    Good luck

  63. Think about the school and teachers by ICantFindADecentNick · · Score: 1

    The opening of the original gives the clue to the biggest issue here. You have to pick something that the teachers can pick up and carry on in the rest of the lesson planning. That's why I gave up on Logo when I was a school governor - we found a turtle in the back of cupboard - but nobody knew how to use it. That's why Lego mindstorms is good for the this age range. At this level all we really need to teach is that computers do exactly what you tell them - and that intelligent looking behaviour can be got from simple programs. Youd don't need a cool language for that. To make it really easy for the schools we used our industry/school links and had a group of industry folks go in to the schools and do a Lego robot racing event having had our training and education people work up lessons plans the school could use staight out-of-the-box. We've done events in the US and UK so it can be tailored to a different curriculum. Another good thing that it can be taken further into the First Lego League.

  64. You can have Python with turtle power! by YA_Python_dev · · Score: 2, Interesting
    Logo is another excellent suggestion.
    [snip...]
    Of course it's not a general purpose language (like Python, which I suggested in another comment).

    Both are excellent suggestions, and the good news is that you can have the best of both worlds!

    Simply download Python and xturtle.py (the module is a single .py file, no need for complicated installation and no dependencies beyond the standard Python library).

    The xturtle site has extensive documentation, interesting examples and, of course, screenshots (because everyone love screenshots!).

    --
    There's a hidden treasure in Python 3.x: __prepare__()
  65. Python with Pygame by Old+Duck · · Score: 1
    I'm going on my 4th year teaching Python at the Junior High level. Here's why:

    Like BASIC, Python can be very easy to learn. The one line print "Hello World" is right to the point. However, Python is also an extremely powerful language, allowing those students who excel and go "beyond the basics" to do more. My first year teaching programming was with a version of BASIC, and while young kids could learn it, it was limiting to those wanted to do more.

    After tackling the basics with print, we move on to graphics, which kids find much more exciting. Pygame is wonderful for this, because it makes drawing simple geometric shapes like circles and lines and rectangles very easy. Like Python, Pygame (an SDL wrapper for Python) can be simple but it offers tremendous power to those who have an aptitude for the subject. Ability to work with bitmaps, sprites, and various devices gives advanced students a good challenge. While technically Pygame is Object Oriented, you can use it very "procedurally", which is a good idea for young kids.

    We offer a Programming II class for our High School where students pick up where they left off in JH. This course is an elective, so only those with an interest (usually those with aptitude) take the course. Instead of learning a new language from scratch (believe me, these students would have gotten bored with Logo the first week), we start looking at more advanced applications with Python, including OO programming, GUIs, libraries (modules in Python), etc.

    Back when I started this class, I looked high and low for a good, simple, yet powerful-when-needed programming language. The "experts" then recommended Python. I've used it for 3+ years and have no regrets! Of course, JH is a bit different than first grade. However, I seem to remember something about Python having a Logo module? I myself have been looking to introduce Programming to grade 2 or 3, nothing heavy, just a whistle-wetter, and for that Logo was of interest. Other priorities have kept me from pursuing the lower grades this year, unfortunately.

    Anywho, let me know if you have any questions!

    -Mike
    Computer Science teacher

    --
    There are more things in heaven and earth, Horatio, Than are dreamt of in your philosophy.
  66. Multimedia Fusion by TheThiefMaster · · Score: 1

    A quick scan of the comments didn't mention this, so I thought I would. Clickteam make a set of 2d games and application creation programs, called "The Games Factory 2" and "Multimedia Fusion 2" specifically designed to be easy to use. They're trying hard to push their products to the education market, so you might want to take a look.

  67. I second Gamemaker by 2901 · · Score: 1

    A friend's 10 year old got the hang of it and two years later he is teaching himself Perl out of a book. Well not all by himself, his father writes a lot of Perl code.

    The family visited this year and I showed him how to write directly to the sound card to make funny noises. This might be the modern equivalent of buying a child a drum :-)

  68. Don't even try "real" languages... by sirwired · · Score: 1

    I know that this response will get buried in the others, but I'm gonna try anyway...

    Some folks have said LOGO is the way to go. This is indeed a cute language, great for elementary school kids, and easy to understand. If all you want to teach is "programming is fun and easy", then that will do the trick just fine. If you really want to spice things up, I imagine that there are interpreters available that will turn LOGO commands into controls for MindStorms robots. Keep in mind that LOGO isn't going to accomplish much else other than getting kids comfortable with "programming". It teaches about as much in the way of CS concepts as a four-function calculator. The main limitation of traditional LOGO is the complete lack of conditionals/branching.

    If you want to teach older kids a little more, Karel the Robot is the answer. This was used for the first month of my first High School CS class. In this little language, you use a simple, limited, syntax to control a little "robot" that runs around trying to find a "beeper" and avoid getting stuck against walls or go out of control. It teaches branching, conditional looping, proceedures, and the original textbook also taught good programming habits. (Thinking of "corner cases", indenting, etc.) While I haven't looked, I imagine there are also MindStorms implementations also available. That would be pretty cool.

    At the time, we thought it was kind of silly (I was 15 at the time), but for kids a couple of years younger, it might do ok. This is available all over the web. It was originally based on Pascal, but has been adapted in many other languages.

    I think parameter passing, OO, return values, etc. present in a more advanced language might be a bit much for the younger kids, but perhaps the more focused older kids could handle it ok. The issue with teaching those concepts is not that they are hard to understand, but rather you start getting into tricky syntax issues that quickly start making all this look like actual work. If this isn't something they are being graded on (I get the impression from your post that this is a "supplemental" type thing), most will lose interest quickly.

    Some posters have suggested HTML/CSS. Those posters are idiots. That is just word processing made harder. If you want kids comfortable with computers overall, and not run screaming at the sight of a text editor, fine, but it isn't in any way, shape, or form, "programming". It is a formatting language, NOT a programming language.

    SirWired

  69. Here's an idea by xsonofagunx · · Score: 1

    First, don't allow them to touch a computer at all.

    Give them a problem, a real problem - not "print 'Hello World' on the screen" but something they actually have to think about, that has steps. Nothing abstract, something to the point - fuck, give them a math problem if you have to (ooh... this could be evil, but you could throw a semi-simple algebra problem at them! "How would you figure out what number x would be in the problem 17 + 2x = 42?") - and make them figure it out. Make them work out all the steps that would have to be done to solve the problem (sure, it's not too many, but make them break it down). Give them hints, of course, but let them all try to figure out how it works.

    NEXT pick a language - I think BASIC is probably a good place to start, for simplicitie's sake. If you think they're really bright and want to give them a nice challenge, throw Perl, Python or Java at them. Give them a good overview of the language's functions and operators, show them a few sample programs, and let them tweak them around to get a feel for things. Then tell them to write a program that will allow them to solve your math problem, but that they have to do it all in variables.

    Something along the lines of:
    a = 17
    b = 2
    c = 42
    c - a = d
    d / b = e
    print e

    would be expected. Now have them turn the variables into numbers they can input. Now that they have an idea about breaking things down, give them other problems (math or otherwise). As much like a 'good idea' (because they'd be so interested, of course) you'd think that having them design and implement a game is - I don't think it's a good idea. For just starting out, that's a lot of work, and totally unexpected problems can and will arise. Some simple games may be okay (think Hangman, but counting down chances instead of showing a figure - unless your students are exceptionally bright).

    If you've got a good deal of time with them - change it up. Make them start a new language. The meat is all the same, the way you go about it is just a little different. Every language has its own positive aspects, things it should be used for, and things it's probably a better idea not to. Procedural languages would be harder to do something like Hangman in (at least, after you've got a good grip on OO-programming techniques), but for just adding a few numbers and spitting out a result, procedural programming will save you a lot of time.

    After a little bit of work, start introducing things like arrays and hashes (if your language of choice supports them), queues and stacks and such. Above all, show them reasons to use them, don't just say "this is a stack" and expect them to start coming up with useful things to do with it. It's a little abstract, and an example or 10 will go a long way.

    Have fun!

  70. Colored parentheses by tepples · · Score: 1

    Ever tried a Lisp editor that uses colored parentheses? Parentheses at level 1 are red, level 2 yellow, level 3 green, and level 4 blue. Then level 5 repeats the cycle. But I'd imagine in general that Lisp style languages might go over better in places where the national language puts the verb first.

    1. Re:Colored parentheses by Anonymous Coward · · Score: 0

      But I'd imagine in general that Lisp style languages might go over better in places where the national language puts the verb first.

      According to your link, those languages are: "the Gaelic branch of the Celtic language family (namely Irish, Scottish Gaelic and Manx), related Welsh (the only VSO Brythonic language), Ancient Egyptian, Aramaic, Biblical Hebrew, Phoenician, Canaanite, Ge'ez, Classic Maya, Tagalog, Hawaiian, Maori, and Tongan."

      So, anyone speaking ancient Irish, ancient Scottish, ancient Egyptian, or one of several ancient and/or little known languages will be good at LISP?

      No wonder it's such a popular, mainstream language!!!

      Does anyone even use LISP outside of university? Or Aramaic, for that matter?

    2. Re:Colored parentheses by fistfullast33l · · Score: 1

      No wonder it's such a popular, mainstream language!!![...]Does anyone even use LISP outside of university?

      Why am I even bothering to respond to this AC? I don't know but it definitely is an idiotic post that needs a response -

      These kids shouldn't be expected to learn C and instantly write their own DOS or vi editor. The entire purpose of this course is to get them hooked into the world of programming and possibly also understand how a computer works. Even better, it should help them understand the engineering state of mind and how to approach problems.

      Teaching an interpreted language like Scheme or LISP is a great idea because it's easy to understand and doesn't require complicated topics like memory types, pointers, and data structures. There's only the list, and it doesn't even have to be mathematically intensive, which is the quickest way to scare kids away.

      I'll admit as well that Logo was a great way for me to learn programming when I was this age as well. The instant gratification of the lines and squares was great, and it definitely piqued my interest in computer science overall.

    3. Re:Colored parentheses by Anonymous Coward · · Score: 0

      Does Paul Graham count as "anyone"?

  71. Start out by teaching them abstraction physics. by 3seas · · Score: 1

    Programming languages change and get better or new ones come along, etc..

    But all of them are subjective to Abstraction Physics.

    Though "Abstraction Physics" might sound way to advanced its basics is not. In fact its really more a matter of training self awareness as the human language they are using is also subjective to Abstraction Physics.

    http://wiki.ffii.org/IstTamaiEn

    http://threeseas.net/abstraction_physics.html

    Once they understand how they are already using abstraction physics then they will be better able to grasp the subject matter of abstraction so widely used in programming.

    If you are interested in more my email address can be found at the bottom of:
    http://threeseas.net/vic/html/

    but be sure to make the subject line something I will not skip over as that address has gotten on spam lists and I'm not going to give you another email address in public , but will privately.

  72. squeak by Anonymous Coward · · Score: 0

    I see squeak has been mentioned several times. It was developed by Alan Kay and his team. I can vouch that its EToys implementation, which comes with Squeak (i'm using an older 3.0 version) has been great for my son. He and I have created our own widgets (cars, planes, whatever) then using scripts right in the graphical environment, made them move around and interact. The great thing is that it gets the kids starting to think about what it means to make something move or interact programmatically.

    There's been a lot of research done about how children learn, and squeak uses those ideas to its fullest. Check out squeakland.org for more details

  73. Anything but BASIC. by Max+Threshold · · Score: 1

    When I was nine, I was introduced to programming with Apple BASIC. I almost didn't recover.

    1. Re:Anything but BASIC. by Aladrin · · Score: 1

      Odd, that's about the same time I was introduced to it and now I'm a computer programmer.

      Some just aren't meant to be programmers. That doesn't mean nobody else should be allowed.

      BASIC was -invented- to teach programming. It wasn't meant to be a real language. It was meant to be an easy to learn and use tool.

      --
      "If you make people think they're thinking, they'll love you; But if you really make them think, they'll hate you." - DM
    2. Re:Anything but BASIC. by Max+Threshold · · Score: 1

      My point is, either you unlearned most of what you learned with BASIC... or you're a bad computer programmer.

  74. Graphical programming with Labview by rwa2 · · Score: 1

    http://www.ni.com/academic/

    So this is a fairly sophisticated package, but play around with some of the basic functions. Everything looks like a circuit diagram... just put your basic operators ( + - * / etc.) and pump in different inputs (start with constant numbers, then replace them with dials and stuff), and watch what happens to the output display (start with numbers, move up to gauges and graphs).

    Eventually with enough money for extra hardware you'll have them building Lego robots.

    They made us use this in college engineering projects and labs, and there were bits of it that were frustrating. But introduce the components a piece at a time, and the kids will be tinkering with all of the other functionality and figuring out the loopholes in no time.

  75. *not* too young for abstract thought by jesboat · · Score: 2, Informative

    As others have said, this is ridiculous. Many people start programming when they're quite young. I was proficient in BASIC (not that it's something to brag about :-) ) when I was 7, and Java before I was 12.

    Secondly, abstract is not required to understand at least some programming languages. If somebody suggested teaching them the Lambda Calculus, I'd be a bit worried, but something like C/BASIC/etc. is sufficiently procedural to make things easy. Don't confuse procedural languages with algebra just because both involve variables, because the concepts are actually very different in different languages. (I'm unsure whether Lisp/Scheme would be "too abstract" for people. I don't think functional programming would be the problem; if anything, it'd be the syntax (not the parenthesis.))

    Thirdly, you divide people into "12-13" year-olds and "13-14" year olds. Leaving aside that people 13 years old fall into both classes, one year of age difference is very little basis on which to delay teaching people programming.

    Finally, and most importantly, you mention that those ages are where abstract thought develops "on average". Other people in this thread who have supported you have again cited average cases. NotesSensei is not going to be teaching a school-wide programming class. NotesSensei is going to be teaching programming to people who have joined a computer club. There's a big difference there.

    As for precisely what to each them, I wouldn't recommend VBScript or, therefore, KPL. I also would not recommend Java; while I think Java is a nice programming language and has many decent uses, I don't think it'd be a language that kids would like to learn as there first language. There's way too much figurative red tape to wade through to get anything done. The same probably applies to greenfoot. I would probably recommend Python.

  76. Odd man out... by Decker-Mage · · Score: 1
    I've been teaching statistics, computer sci/programming, electronic and electrical engineering, physics (newtonian and up), and numerous military occupations/duties over the last thirty-two years. I hate to say it since it will seem less than helpful, but if you really want to teach children and young adults about computers, you shouldn't be teaching any of the spaghetti languages or trying one of the various OOPs. I've always taught, children included, that basics of how a computer works and then taught them how to create and run programs in assembly. Given that virtual machine software can be had for free from Microsoft and VMWare, I see no reason why you shouldn't turn them loose and let them play. The worst that can happen is freeze the VM which they can stop and restore from a snapshot to try again.

    Once they get a handle on why a computer works the way it does, i.e. all it understands is one's and zero's, then you can turn to higher level languages of some flavor. Then as a final six to eight week segment you can give a preview of how OOP works. I lost track of how many people I've had to take back to ground zero and start over teaching them how the computer actually does what it does. If the students do not have a solid grounding on the hardware and basics of it's low-level software, they will build an internal (mind) model which bears little to no resemblence to the reality of the machine.

    --
    "[I]t is a wise man who admits the limits of his knowledge or skill, and that pretending either causes harm." --Terry Go
  77. I cut my teeth on GWBasic by GWBasic · · Score: 1

    I cut my teeth on GWBasic. It's been awhile since I used a learning language, but I would stick with something that doesn't require a lot of boilerplate. Specifically, in languages like GWBasic, (and its successor, QBasic,) the programmer didn't have to worry about references, compiling, "include" and "using" statements, ect, ect.

    A friend of mine wrote, (and taught with) ZLogo. What's important is that the kids don't have to do a lot of prep work that we take for granted. Every piece that they put into the program causes a change on-screen.

  78. LOGO, using kturtle on edubuntu by amran · · Score: 1

    We actually just finished running a kids' summer program at the YMCA Gambia, and we used edubuntu to teach the kids, among other things, an introduction to programming class, using kturtle. kturtle is a LOGO interpreter, with a very good help manual, and it is so graphical (runs in KDE) so the kids get immediate feedback. Plus it can run off CD along with the rest of edubuntu, if you don't want to install anything.

    The kids themselves - we're talking between 5 and 18 here - had a lot of fun and at the end of the program we burnt edubuntu Live CDs for them to take home and continue using on their home PCs.

    1. Re:LOGO, using kturtle on edubuntu by NotesSensei · · Score: 1

      the idea with the life CD sounds great.

  79. That isn't an answer by MarkusQ · · Score: 2, Insightful

    First off, you didn't really answer the question (I'm assuming here that this AC post was written by fermion, since it contains the same types of odd grammatical errors as the grand parent post). Have you ever actually worked with kids?

    I have, and my experience is much more in accord with the standard view of childhood as a period of intense learning and rapid acquisition of new abstractions than it is with your picture of children locked in a world of simple and concrete structures. If you want to teach languages, math, music, computer science, or any other "structure rich" subject, childhood is the time to do it. The only things I would suggest holding off on are things like history, music appreciation, and literary criticism which require the acquisition of a large body of concrete but unstructured information before the underlying abstract structures can be perceived.

    Addressing a few of your specific points:

    Most children play is a simulation of life. Playing house, whatever. The play tends to be based in the concrete, mimicking what the child has seen, while very little elaboration.

    This is the sort of thing that makes me think you don't have much experience with real children. You have described the stereotype of childhood play, which is but a faint shadow of the reality. For example:

    • This morning, a four year old taught me to play a game he had just invented, called "Iggilators and alligators," in which a bear named Iggilators was trying to catch fish from a pond filled with alligators. The bear preferred the taste of the fish's heads to the tails (which have too many "poinks"), but the alligators just ate the fish whole. New fish appeared in the pond at random, and the bear always saw them first because, from his jet pack hovering over the pond, he could see all over while the alligators could only see a short distance in front of them. There were many more rules which I don't recall, but you get the general idea.
    • When I recently introduced "Paper, scissors, and stone" to a few pre-schoolers, they quickly transformed it into a multiplayer game of much creater complexity by adding "gun" (which beats all three of the others), and then because gun was too powerful, "school bus", which caries all the other players to safety if anyone uses a gun (and causes the gun-user to miss a turn). They later added "the shootout rule," under which, if more than one player used a gun, the first of them to yell "bang" stayed in, school bus or no, and the other was permanently out.
    Each kid has a motherboard, and each kid was able to point to a component, recite it's name, and recite it's functionality. This was a good lesson because it was concrete and introduced some vocabulary. The lesson did not try to push the relations between components, or have the kids internalize the meaning and state functionality in their own words.

    This was a horrible lesson, for exactly the reasons you list. It taught the kids nothing of lasting value (most of what they memorized will no longer apply by the time they have a chance to apply it) and it focused on rote memorization, which is hard work, instead of developing an understanding which is much easier.

    Just try talking the same smart kid(20 IQ point would not make so much of a difference) to recital in which the music is complex. They might tolerate it, but would probably find the music on the Disney station more accessible.

    It depends on the source of the complexity. J.S. Bach and Scott Joplin are both complex and accessible without a great deal of prior knowledge, and kids tend to love them (go listen to the tunes of baby toys). On the other hand, if by "complex" you mean music that draws on a body of conventions and idioms that the kids won't know, you are right that they won't enjoy it as much as they would music which uses conventions they are familiar with. This is because it depends on concrete information which they lack, and not due to any deficit in appreciating abstractions.

    --MarkusQ

  80. Plug for Python by cagle_.25 · · Score: 1
    I'm in your shoes, except that my students are ages 15 - 18. I'm teaching a computer programming course for the first time, and I refused to use Visual Basic because it seems to encourage bad programming habits.

    My candidate languages were C++, which matches my own programming experience best; Java, which is used on the CompSci AP exam; and Python, which was recommended by an acquaintance.

    Python won out, for the following reasons:
    1. An interpreted language gives instant syntax feedback, which is really important for newbie learners.
    2. An object-oriented language teaches better encapsulation and abstraction thought processes than a functional language like C; therefore, I wanted something OO. Python's classes have a significantly lower barrier to understanding than Java's or C++'s.
    3. Python is freeware, which means that the kids can legally install the interpreter at home and work at home on their code. Not so for Visual Studio or most other C++ frameworks that allow students to get graphics up and running.
    4. I wanted my students to be able to create GUIs and even games. Python has lots of packages available for that which are easier to use than corresponding Java or C++ packages.
    5. Documentation and forums are online and accessible to students.


    Here is my primary text, and here and here are my supplemental texts.
    --
    Human being (n.): A genetically human, genetically distinct, functioning organism.
  81. Building up... by godglike · · Score: 1

    HTML - teaching the importance of syntax
    CSS - rudimentary abstraction
    Javascript - programming(loops etc), objects
    Java - standalone programs, higher level abstraction
    C - what not to do ;)

  82. d/l edubuntu (Live CD) by rjamestaylor · · Score: 1

    My suggestion is to d/l edubuntu Live CD (x86, PPC, AMD64 versions available). I did this just this weekend and began showing my 6 year old around the system. There are a number of excellent applications for education (most above the level of the average elementary student, no doubt) and educational games. One is the LOGO programming language/environment, which is designed to teach programming to children. Also, in the GCompris educational packages is a "boat race" game that is a programming teaching aid (forward x, left degrees). Recommended.

    --
    -- @rjamestaylor on Ello
  83. Curriculum by Jim+Robinson+Jr. · · Score: 1

    There are a lot of great posts here, and I am not competent to comment on the selection of programming languages, so won't even try. (For the record: yes, I do a little myself, but because I understand the fundamentals I can at least follow most languages.) I am looking to address this same questions on a smaller scale for my niece who is homeschooled. My main focus, then, is curriculum rather than language. Does it really matter what language they use? I would think that basic programming concepts would be an excellent place to start. To that end, and after a lot of research,I found KidWare Software (http://www.kidwaresoftware.com/vbkids.htm) that makes a text-book style manual for teaching those basic skills. Yes, it's VB... but so what. I have ordered the book but not received it yet, so I'm only going on the online samples, but if you are going to teach a large class of kids getting some pre-built material might be a lifesaver. Jim

  84. Go Impractical by xee · · Score: 1

    Don't feel obligated to teach them anything like what people use in the "real world." At that level you should help them to construct virtual machines and use them to solve trivial problems. By virtual machine, i mean simply the conceptual machinery that is required to understand all programming languages. Understanding the type/token distinction is essential to understanding all programming languages. I would suggest avoiding functional languages like Lisp-derivatives because they assume that the programmer already understands the difference between code and data. At the primary level procedural languages are best. BASIC is always good because of its easy to read syntax and simple virtual machine. I've always thought that a quick intro to the sentential calculus would have been a boon for my computer programming education if anyone had taught it to me at that time in my life. It is perhaps the simplest virtual machine wherein the type/token distinction becomes apparent.

    --
    Oh shit! I forgot to click "Post Anonymously"...
  85. Oh, dear God... by TaleSpinner · · Score: 1
    What did those poor kids ever do to you? Or do you figure making them hate computers will make all our jobs more secure?


    The choices are very slim. They are, in decreasing order of desireability, Tcl, Python, Component Pascal, Oberon/2, or Smalltalk. C, Java, C# (properly pronounced "D-flat" as any music major could tell you), and Fortran (no matter what freakin' year) are child abuse.

  86. 3 more you should absolutely look at: by Anonymous Coward · · Score: 0

    here are 3 more you should look at:

      http://www.alice.org/
      http://www.opencroquet.org/
      http://www.runrev.com/

      The first 2 are free, the 3rd is commercial - sometimes
          free versions show up on the DVDs from british computer
          mags.
      I looked at several 3D programming enviroments a few
        years ago, and these stood out as being accessible
        to beginning programmers. I can't give much detail
        beyond that, all three have pretty good documentation
        and active communities. They are also notable for making
        fairly complex graphics easily accessible.
      That isn't much to go on, but it will be very worth your
        while to look at these environments.

  87. Alice by Khelder · · Score: 1

    I'd suggest looking at Alice, which was specifically designed for education. It helps new programmers avoid getting stuck on syntax, and provides a 3D environment that is both fun and teaches OO principles. (And Electronic Arts has agreed to let them use some Sims artwork.)

  88. GameMaker by Tsa05 · · Score: 1

    Scheme greatly impaired my ability to program--it's logic is counterintuitive to what kids that age are learning. OOP is dang near impossible, and it's rather an advanced task to make anything graphically interesting.
    May I suggest Game Maker? It's interpreted, free, and graphically very powerful. Kids can drop pictures into the software and use the drag and drop programming interface to create full-fledged games. You can make a simple game in as little as 5 minutes, yet Game Maker has enough complexity to grow into whatever you wish to teach (even 3D in the $20 registered version). It has a built-in language--GML script--as well, in case you wish to teach more traditional coding. If you want a software package that allows kids access to the entire range of programming logic, yet allows them almost instantaneous feedback (eg, import a picture, set it as an object's sprite, drop it in a "room," and you have a working program), Game Maker is the best I can possibly suggest. There's even a book--The Gamemaker's Apprentice, that was just recently released by the software's author. And there really is no better way to teach concepts like OOP and inheritance. As you can almost certainly deduce, I've been an enthusiastic user of the software for several years now, and I often prefer it to many of the packages I learned in college!
    http://www.gamemaker.nl/

  89. Javascript by hereticia · · Score: 1

    Javascript would be a great language for teaching, it shares a lot of syntax with other popular languages (c, java, c++), but avoids the low-level details that would intimidate a beginning student. The big disadvantage to using javascript is that people only think of it in relationship to a web browser. Most javascript tutorials are about how to acheive some lame text-blinking effect, and aren't really about the language itself. A noteable exception is Douglas Crocford's Javascript page: http://www.crockford.com/javascript/, but that is really advanced stuff that would make a beginner's head spin.

    --
    Can you type "man date" without laughing?
  90. From my experience by malachid69 · · Score: 1

    The small town I grew up in started us in 1st grade (1979) with Turtle and Pseudo-code. Although Turtle may be a little too basic, I think the Pseudo-code was an invaluable lesson. There are also games out there that allow the students programs to directly compete against each other (maze-finding, fighting, whatever)... The key for a young age is to ensure that they get immediate feedback whether their code is working... I've never tried it, but maybe ActionScript ( http://www.actionscript.org/tutorials.shtml ) would be a good option, since that would give them immediate feedback and still be something you could post on a class website for them...

    Just a few thoughts.

    --
    http://www.google.com/profiles/malachid
  91. ruby by globalgorrilla · · Score: 1

    I've not taught primary students but secondary students have taken quite nicely to Ruby. Get to do something quickly, some framework (ROR), OO, scripting. Fun. Would use BlueJ and Java when introducing OO, then back to Ruby.

  92. COREWARS!!! by loimprevisto · · Score: 0

    Because nothing says fun like optimizing low-level code to corrupt your opponent's program :-P Take a look at http://en.wikipedia.org/wiki/Redcode

    --
    Much Madness is divinest Sense --
    To a discerning Eye --
    Much Sense -- the starkest Madness
  93. Virtual +1 Informative by TBone · · Score: 1

    Seriously....mod this parent up.

    You're teaching grade school kids how to program. Not how to make websites, or how to beat Flash into submission, or how to deal with cookies. You need to teach them about programming, and how these words make a computer do what you intend. They have decades ahead of them to argue the intricacies of VI vs. Emacs, or Perl vs Python vs PHP, or C+ vs C vs Pascal. When they get into later Computer classes, they'll be exposed to Basic, or Java, or .NET, or C. But the best thing to do at this age is teach them how to program - the steps required to go from "I want my computer to do this" to "X requires steps A, B, and C" to "A means tell the computer (foo(bar));".

    Most of us on here are so far past the point of where we first picked up the keyboard, and wrote, "10 PRINT 'Hello world'; 20 GOTO 10;" that we miss the important fact that people do not think like a computer program We infer, we use outside sources of information, we have a lifetime of learning to filter our decisions on. Training the mind to see a problem as discrete steps which can be represented by even more discrete commands to a computer is not natural.

    My advisor in college was an AI fanatic who did a whole pile of research into computer education and learning. Scheme is not super-powerful, all-encompasing, and world-ending. It will not be the next-generation solution to world peace. But it simply and elegantly introduces people using it to most, if not all, of the cores of good programming and computer programming concepts - stacks and queues, functions, recursion, all the core "how to program" type of stuff.

    Scheme (and LISP as a superset), as a language for getting things done (the Mancala program I wrote in my AI class notwithstanding), is not a first choice for much of anything most people want to do. However, as a programming fundamentals teaching language, it's a well documented basic teaching language.

    --

    This space for rent. Call 1-800-STEAK4U

  94. I have been there... by RoloDMonkey · · Score: 1

    I have taught programming as low as 5th grade. I always started with HTML. It can be written on any computer that has a text editor. I can be tested on any computer that has a browser. Although it is not really "programming," it does introduce all the basics.

    I started with a lecture on giving computers "special codes" to start and stop doing something, and then introduced the basic tags html, head, title, body, h1, and p. On the first day, they were able to type in something incredibly simple, and get instantaneous feedback. So, they were learning the Edit, Save, [Upload], Review cycle.

    They got a lecture on documents (files), programs (executables), folders, and shortcuts, and then they were introduced to a and img. This also introduced them to attributes, and I mentioned that in other languages attributes were called properties.

    They also got a lecture on nesting, whitespace and indenting, which would help them later on with control structures. After, that it was on to Javascript, and non-linear concepts. Some of my lesson plans are still at:

    http://www.irolo.net/school/archive/saintmary/6th/ index.htm

    Good luck!

    --
    Long live the Speaker Bracelet
    Rolo D. Monkey
  95. Why don't you start with simple Turing Machines by gmezero · · Score: 1

    Start out with simple card sorting exercises where you represent a basic adder, etc... This is what we've done at home with our kids, and once they had a grasp of writing programs from a microcode level we have moved them up to Logo, giving them procedural tasks, such as "write a set of functions that creates your name on the screen", etc... Or for the youngest "fill the screen with replicating equidistant geometric shapes".

    It's been a lot of fun. Our oldest is now taking his first steps into Second Life scripting (a *very* basic scripting language) in the games Teen grid to add actions to his creations.

  96. Colored parentheses? by Anonymous Coward · · Score: 0

    Colored parentheses? Colored parentheses?

    They are African-American parentheses! Racist.

  97. Not so far fetched by endersthoughtfulbrot · · Score: 1

    When I was 10 I was obsessed with this book on the BASIC programming language, and i would enter all the sample programs from it to see what they would do. I also made a few simple programs on my own... too bad I didn't keep up with the habit.

  98. Try Lego Robotics by redboot · · Score: 1

    I would higly recommend the Lego Mindstorms systems (there's now a new version) They are loads of fun and teach programming at many different levels. There are organized competitions where you try to program your robot to accomplish various challenges. The programming starts easy, but can be quite involved. And it's the old, "I'm having fun and don't realize I'm learning". The hard part for us adults is making sure we don't hog them and actually let the kids play with them. Link: http://www.legoeducation.com/store/SearchResult.as px?pl=7

  99. Microcontrollers? by wwiiol_toofless · · Score: 1

    I cut my teeth in a summer class programming PIC microcontrollers. It would take some work getting kids up to speed on assembly syntax but they can see hands-on results fairly quickly (like programming LEDs to flash in sequence). Besides that, the limited language can be less daunting. The more adept students can dive into their own projects, like building digital weather stations that output readouts to LCD displays, or making their own joysticks. I like that it's a very hands-on, real-world way to delve into programming.

    --
    the mods may say you posted flamebait, but to me it's a flame that warms my heart. rock on, brother! --chebucto
  100. Related issue on early abstract thought by Anonymous Coward · · Score: 0

    I was one of those kids that could do that kind of thing; by the time I was 9 I was reading at the college level, doing algebra, chemistry, having all kinds of fun. This was in an open classroom where the teacher saw my potential and took the time to provide me with materials that let me advance at my own pace.

    Then the school system in my small town failed to have anything to offer a child that age with that level of learning, and I didn't see algebra again until 8th grade (that was early there!), and nothing like the reading material I'd conquered until late high school. My parents thought skipping grades would be bad, and there was no sufficiently advanced curriculum from 5th grade onward. I ended up frustrated and loathing school, and the resulting anger and poor study habits (really, what 5th grader is going to do lessons they learned years earlier?) nearly ruined my college career.

    My point, I guess, is that you better bloody well be sure that whatever abstract concepts you teach will be reinforced and able to be expanded upon in the following grades. Teaching a child beyond the curriculum and the parents can cause unintentional problems.

    There's not much more maddening than being 5 standard deviations from the norm IQ-wise, astonishingly well self-taught, and unable to do anything with it.