Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Re: Teaching Children How to Program

by dragonchild (Archbishop)
on Nov 13, 2005 at 20:43 UTC ( #508144=note: print w/ replies, xml ) Need Help??


in reply to Teaching Children How to Program

My 10-year old has been on me to teach him how to program for a while. After an abortive attempt to start with logic and flowcharts, I've decided to use a language that provides instant feedback. I want to use Lisp. I may choose to use Ruby, but I'm pretty sure it will be Common Lisp. Reason? I want my son to think logically before procedurally or OO-lly. I want him to design bottom-up instead of top-down, which is what the procedural languages practically demand that the programmer do.

What I do know is that you have to spend time on the editor as well as the language. If the programmer has to fight the editor just to get hello_world.* to work, then the programmer will associate programming with frustration. That's bad.


My criteria for good software:
  1. Does it work?
  2. Can someone else come in, make a change, and be reasonably certain no bugs were introduced?


Comment on Re: Teaching Children How to Program
Re^2: Teaching Children How to Program
by GrandFather (Cardinal) on Nov 13, 2005 at 21:10 UTC

    When "teaching" Panda yesterday, I pointed him at Komodo. Nice GUI IDE with an editor that just works (Panda has used Word and other similar editors before) and the immediacy of pressing a button to run the code he was playing with combined with the feedback of syntax checking as he was editing removed a vast amount of frustration.

    Of the languages that I've played with (see my home node), Perl is the one that I would choose for teaching simple programming concepts without having to worry very much about types and the difference between numbers and strings and other such unimportant cruft. DWIM saves the day :).


    Perl is Huffman encoded by design.

      I agree that Komodo is a very nice editor, especially if one is just learning. However, I've had equally good results with the Open-Source Eclipse project, using the incredible EPIC plugin to enable Perl projects.

      It takes a little more initial setup than Komodo, but I have found many more useful features in Eclipse/EPIC as I have been writing more and more code; Eclipse also seems to perform better for me, but YMMV on that one.

      I will say this: I really enjoy ActiveState's graphical debugger, part of their "PDK" software. Unfortunately, I don't think that component is available for free. A close second is Devel::ptkdb, which is a Tk-based GUI debugger for Perl code.

      <-radiant.matrix->
      A collection of thoughts and links from the minds of geeks
      The Code that can be seen is not the true Code
      "In any sufficiently large group of people, most are idiots" - Kaa's Law

        I had a serious look at Eclipse with the intent of using it at work, but at the end of the day (a rather frustrating week actually!) I was editing Perl with it and could run the code, but I couldn't get break points working so I couldn't debug it. Of less importance, I was fighting with the IDE in various ways too, but that would have sorted itself out in time.

        Other workmates have used Eclipse in other contexts and are very impressed with it, I just couldn't get it to do the job for me with Perl. However, having just purchased a Handspring Visor which runs Palm OS, I may find a different reason for using Eclipse :).


        Perl is Huffman encoded by design.
Re^2: Teaching Children How to Program
by ambrus (Abbot) on Nov 13, 2005 at 21:28 UTC

    You could also try scheme instead of common lisp, PLT scheme can be very nice for beginners.

    Update: my father tought me Basic when I was young btw.

      My grandfather (no relation to my Grandfather) taught me BASIC when I was 10 on his TRaSh 80. Those were the days. Fiddling the tape player volume as you carefully try for the 4th time to load a gigantic 15k program. Why, when I was a boy we had to program uphill in 10 feet of snow.

        Ahh, that's nothing. Why when I was a lad we used to program by poking holes in a pieces of card then mailing the cards away and waiting a week to see if the program worked.

        When the TRS80 came out I programmed it in Z80 machine code just for the challenge. (My Grandfather had a mechanical adding machine that I used for extracting square roots by using successive approximations - by hand.)


        Perl is Huffman encoded by design.
      The library was my sole teacher. No humans required.

      I started off with Basic (on a Dick Smith VZ200) when about 10/11 years old. I started to teach myself Pascal when 13 and I didn't get into C and assembler until I was around 14. I still have the Turbo C 2.0 manuals from then and use the library reference even today.

      Teaching kids who want to learn is a worthwhile endeavour. But anyone who wants to know will learn of their own accord.

      I guess pointing kids in the right direction is the main thing..

        I started off with QBASIC on an Atari400 when I was 11, based on a single book. Had a lot of fun. That's great that it worked for you and I - we happened upon our passions. Many people, however, need to be shown things until they find their passion. For many (most?!) of the kids Sandy will be teaching, programming isn't going to be it. However, there may be one or two kids who just completely latch on to the experience, not having seen it before (or not having had the opportunity to try it before). And that's exactly the reason why we expose our kids to various things - to help them find their passion.

        Kids who find their passion on their own, that's great. But why leave such an important thing as "the rest of your life" to chance like that? By all means, don't force them into something (well, not for too long - sometimes doing what you don't like builds character, and that's important, too). Expose them to it.

        I suppose one of the biggest things I've learned in life so far is that everyone learns differently. Some kids seek out their passion. Others need to be exposed to something before they discover it. Some find a passion, then change their minds a few years later. None of these are bad - they just are.

        Intro classes are great - you'll find 50% of the kids don't continue in it (that's good - they've been exposed, and discovered it's not their passion, so they can continue looking), 30% will like it enough to try a second class before discontinuing, 20% may go on a bit further, but never develop a career out of it, a few may go on and make it into a career, and maybe one or two will find it to be their passion. All of these, that is what makes what Sandy volunteered to do worthwhile. Including the ones who don't pursue it. They may think it's dumb today, but 15-20 years from now, they'll look back and be glad that not only they took the course, but that they didn't pursue it. :-)

        I Completely agree. If someone wanted to learn than one will learn.

        I taught myself perl and started creating usefull programs within about 6 months. After having done this I qualified for a new scripting position involving VBScript.

        Wanting to script rather than my old job, has given me way more than enough motivation to learn a second language.

        Side note: Today I am told that I should also learn tcl. .... Away we go!

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://508144]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others exploiting the Monastery: (14)
As of 2014-07-10 17:27 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    When choosing user names for websites, I prefer to use:








    Results (214 votes), past polls