Forgot your password?
typodupeerror

Teaching Primary School Students Programming? 198

Posted by Cliff
from the toddlers-as-coders dept.
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?"
This discussion has been archived. No new comments can be posted.

Teaching Primary School Students Programming?

Comments Filter:
  • Scheme? *ducks* (Score:4, Interesting)

    by AslanTheMentat (896280) on Saturday August 26, 2006 @08:32PM (#15986701) Homepage
    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 [neu.edu]
    Just a thought...
    • by Sigma 7 (266129)

      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

      • by rolfwind (528248)
        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.
    • Re:Scheme? *ducks* (Score:5, Insightful)

      by Nicolay77 (258497) <nicolay.g@gm[ ].com ['ail' in gap]> on Saturday August 26, 2006 @09:27PM (#15986946) Homepage
      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.
    • Re:Scheme? *ducks* (Score:4, Informative)

      by rolfwind (528248) on Saturday August 26, 2006 @10:10PM (#15987190)
      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 [wikipedia.org]

      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.
    • Re: (Score:3, 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 [teach-scheme.org]
      How to Design Programs [htdp.org]

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

      • Re: (Score:3, Interesting)

        by TheRaven64 (641858)
        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. Event

    • by Jim Hall (2985)

      You could try GNU Robots [gnu.org], 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 [chipwits.com], which has been "com

    • by gklinger (571901)
      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, o

      • by jmorris42 (1458) *
        > ..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
    • 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 th

  • 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 instructi
    • by emudoug42 (977380)
      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.
      • Re: (Score:3, Insightful)

        by daeg (828071)
        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.
    • by MBCook (132727)

      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 (checke

    • by pimpimpim (811140)
      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 versi

    • by newsdee (629448)
      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 I
  • Karel (Score:4, Informative)

    by tansey (238786) on Saturday August 26, 2006 @08:37PM (#15986721) Journal
    The freshmen level OOP class that I took taught us by using BlueJ and Karel [pace.edu]. I loved it, thought it was fun and easy to use, and really helped teach solid OO concepts. I recommend it highly.
    • by Lehk228 (705449)
      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
    • by TBone (5692)

      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

  • 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.
    • by AuMatar (183847)
      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.
      • by dosius (230542)
        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.
    • 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.
      • by TheGreek (2403)

        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)

  • by justanyone (308934) on Saturday August 26, 2006 @08:42PM (#15986746) Homepage Journal

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

    If they like noises, Squeak [gatech.edu] is good, but the cogently verbiaged might prefer SmallTalk [lesser-software.com] in a group. For those speech impaired, knowing there's other people who Lisp [alu.org] would be good.

    The mean ones will abuse Snobol [fit.edu] in Winter

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

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

    Or, you could just look Here [jvoegele.com] for a comparison of popular programming languages.
  • HTML (Score:2, Insightful)

    by Chasa (998060)
    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.
    • by 4D6963 (933028)

      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.

  • What about a snake? (Score:5, Informative)

    by cjhuitt (466651) on Saturday August 26, 2006 @08:45PM (#15986759)
    Have you considered python [python.org]? 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 [greenteapress.com] (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 [wikipedia.org] program. It appears there are some clones [wikipedia.org] out there also, although I have no idea how good they are. (The first alternative listed says it is popular with educators.)

    Good luck.
  • CeeBot (Score:2, Informative)

    by muridae (966931)
    http://www.ceebot.com/ceebot/index-e.php [ceebot.com] 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: [ibm.com]
  • 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
  • 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 advanc

  • 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, Qui
  • 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 che

    • 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

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

    • by TBone (5692)

      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

      • 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

  • Squeak (Score:3, Informative)

    by sydbarrett74 (74307) <sydbarrett74.gmail@com> on Saturday August 26, 2006 @09:11PM (#15986865)
    Squeak [squeak.org], 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....
    • Re: (Score:3, Informative)

      by TVmisGuided (151197)

      Squeak is actually a Smalltalk [smalltalk.org] derivative.

      [/pedant]

    • Re: (Score:3, Informative)

      by chris_sawtell (10326)
      Squeakland [squeakland.org] 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 [exept.de] or Cincom Smalltalk [cincom.com]

      If the teacher finds the Smalltalk paradigm incomprehensible I'd suggest (s)he try Ruby. [ruby-lang.org] The author, quite truthfully, claims it's a 'surprise-free

  • I would recommend that you take a look at http://www.alice.org/ [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.
    • by Novus (182265)
      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
  • Python and Blender (Score:3, Informative)

    by LetterRip (30937) on Saturday August 26, 2006 @09:15PM (#15986888)
    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
  • 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 irrelevan

    • Re: (Score:2, Informative)

      by martalli (818692)
      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 av
  • 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 [justbasic.com]
  • My Curriculum (Score:2, Informative)

    by wynand1004 (671213)
    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 [christianthompson.com] - A drag and drop programming language (No longer free but you can downloa it from my homepage).

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

    Grade 8: Kids Programming Language [kidsprogra...nguage.com] - A BASIC-like programming language with eas
  • by tverbeek (457094) on Saturday August 26, 2006 @09:52PM (#15987089) Homepage
    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 [mit.edu] 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 [toontalk.com].

    Or there's always BrainFuck [muppetlabs.com].
  • 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

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

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

  • by tietokone-olmi (26595) on Saturday August 26, 2006 @10:28PM (#15987293)
    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?
  • by Proudrooster (580120) on Saturday August 26, 2006 @10:52PM (#15987413) Homepage
    As humans brains develop, they go through many developmental phases along the way. Piaget came up with a developmental stage theory [massey.ac.nz]. 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.
    • by Trizor (797662) <trizor@gmail.com> on Saturday August 26, 2006 @11:42PM (#15987653)
      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.
  • 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 c
  • 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 o

  • Starlogo (Score:3, Insightful)

    by njord (548740) on Sunday August 27, 2006 @12:25AM (#15987892)
    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 [mit.edu], 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
  • 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.
  • 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 a
  • 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 [ffii.org]

    http://threeseas.net/abstraction_physics.html [threeseas.net]

    Once they understand how they are already using abstraction physics then they will be better a
  • When I was nine, I was introduced to programming with Apple BASIC. I almost didn't recover.
    • by Aladrin (926209)
      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.
      • My point is, either you unlearned most of what you learned with BASIC... or you're a bad computer programmer.
  • http://www.ni.com/academic/ [ni.com]

    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 thi
  • 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
  • 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 [louderthanabomb.com]. 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

  • 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 impo
  • My suggestion is to d/l edubuntu [edubuntu.org] Live CD (x86 [ubuntu.com], PPC [ubuntu.com], AMD64 [ubuntu.com] 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 [ubuntu.com] (most above the level of the average elementary student, no doubt) and educational games. One is the LOGO programming language/environment [kde.org], which is designed to teach programming to children. Also, in the GCompris educational packages is a "boat race [gcompris.net]" game that is a programming teaching aid (f
  • 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 progr
  • by Khelder (34398)
    I'd suggest looking at Alice [alice.org], 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.)
  • 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.s [actionscript.org]
  • 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 sc

If you're not part of the solution, you're part of the precipitate.

Working...