Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation

Teaching The New Generation

by growlf (Pilgrim)
on Dec 03, 2001 at 20:00 UTC ( [id://129100] : perlmeditation . print w/replies, xml ) Need Help??

I would like to begin my kids education of programming. 2 of the 5 are fairly interested and one is adamant about the opportunity. This is not surprising since this is about 70% of what they see me do (the other 30% is play games with them and eat - sleep is out of the question since i go down after they do and rise long before them as well).

Their ages are 11, 10, and 8 (there are 2 more but they are not intersted due to age or.. well "boys" in the case of the one). The 11 yearold is an avid computer geek in the making already and able to build CAT5 cables for me and route my network issues when I am away from home. The 8 year old is extremely good with Bryce, Poser and math in general - also the most adamant about learning to program.

Now, the question is this:
Where to start? I mean, I downloaded and set up POEMUD on one of the home servers (as an expected tool for the process - always helps to make learning FUN) and began writing lesson plans for Perl. Then I stopped short. I know my love for the language is based on reason, ability, familiarity, and raw power of it. But, perhaps this is not the best choice for them. Maybe starting easier with simple D/HTML (*cringe* no flame for that please - it is a language.. and a start, albeit a meager one) or maybe Java or C++.

I am interested in your suggestions oh, venerable ones. Anyone have any teaching experience with younger programmers?  And, I know some of our members are the younger generation as well.. tips on what got you started in Perl or other languages would be very much appreciated.

By the side - I have taught high school programming and networking classes before, so that part of the process will not be too much of a new challenge.

Update: Thanks dragonchild, I found a couple nodes on this such as one and that helps somewhat. But particularly I am thinking of the age issue as well.


Replies are listed 'Best First'.
Re: Teaching The New Generation
by footpad (Abbot) on Dec 03, 2001 at 20:43 UTC

    Going the extra step, here's a few topical links (in no particular order) found using Search Search to find nodes containing the words "teach teaching:"

    There are many others, but I think the most obvious relevant point is to choose projects that are important to them. In fact, I would make it a team effort, e.g. hold a "meeting" where the lot of you get together and make a list of various projects that they'd like to learn and to build.

    Also, there are a lot of applications that come to mind just from the bits you've posted. For example, you mentioned:

    • The B-word that strikes fear into all fathers with daughters. This suggests a database of names, email addresses, and (*gak*) telephone numbers.

    • Gaming, which suggests a database of high scores, cheat codes, whatever with perhaps a CGI script to upload new scores and/or maintain the currently playing list.

      For that matter, perhaps you could create a little spider that searches the tech sites of the current play list and looks for new patches, FAQ's, or whatever. the results could then be summarized in an RSS file or fired off as an email.

    • Networking, which brings in IP addressing, topology, and all those sorts of administriva.

    • A certain lack of interest, which suggests that you need to find out what would fire the interest in those particular tots.

    I guess the main point is to find out what problems they would find interesting to solve and then work in the skills they need to learn: Basic Programming Skills, Database Design, Careful Design, Research Skills, and so forth. You can cloak these in Gift Lists, comic book libraries, action figure tracking, viewing logs, video tape libraries, or whatever.

    In my experience, programming requires a lot of problem solving and critical thinking. If you can get them doing that--and taking direct action to solve their own problems--then you'll help them develop some basic skills they'll need to survive later, whether they turn into programmers or not.

    Finally, make sure they're always accomplishing something. Personally, I find training works much better when you're working toward concrete goals. For example, I've taught a variety of coursewares for certain programming languages and my students generally seemed to prefer those that focused on skills that they could then apply to their work and needs.

    (BTW, I suggested the meeting earlier because there is generally an element of interaction in all jobs. For example, you may be a lone gun, but you deal with people all the time. If you can help them learn how to deal with other people fairly, then you'll be helping them avoid some of the problems you ran into.2)

    Oh, yes....wattle time3....



    1 - Yes, the root note has been reaped, but there is some good discussion in the orphaned replies.

    2 - For everyone else: In case you hadn't noticed, I've known growlf in RL for a very long time. So I'm allowed a little gentle ribbing. :-)

    3 - ObRef (See #2).

Re: Teaching The New Generation
by dragonchild (Archbishop) on Dec 03, 2001 at 20:10 UTC
    There've been a number of threads (that I'm too lazy to use SuperSearch to find) on this very topic. One, I think, actually hit like 40+ nodes in length.

    The gist (as I remember) was that Perl is just fine to teach, so long as the teacher teaches good habits. :-)

    It's good to teach because the reward cycle is very short. You can do things very quickly in Perl that kids will find cool.

    I know I plan on teaching my fiancee and her three kids programming (as the ages are appropriate) in Perl and TurtleLOGO (if I can find it!). Both give very quick returns on small investment, and are useful, to boot.

    We are the carpenters and bricklayers of the Information Age.

    Don't go borrowing trouble. For programmers, this means Worry only about what you need to implement.

Re: Teaching The New Generation
by andye (Curate) on Dec 03, 2001 at 21:49 UTC
    As a kid I enjoyed tinkering with robots, buggys, etc. The culmination of these was a 6-legged walking robot which ran off an air compressor and a BBC B - an ancient lego-glue-and-breadboard ancestor of this robot (sadly, nothing to do with me), using the definitely cool Shadow Project air muscles).

    As an adult I've been unable to resist the similarly cool Lego Mindstorms. Although I haven't had much time to play with this, I can say that it's definitely a high-quality kit. For example, the infrared interface is about 100% more reliable than the one in my laptop. It comes with a point-and-click interface for programming, but you can dump that and use Perl instead (haven't had time to try this yet myself).

    Anyway, I had a point (I think). This sort of simple hardware started me off on programming because of the very tangible results, e.g. the project can be to have the robot follow a white line on the floor, or try and trip people up. Depends on the kid of course.


Re: Teaching The New Generation
by elusion (Curate) on Dec 04, 2001 at 06:07 UTC
    I guess I'll share how I got interested in Perl and Programming in general. I've always played on computers. Mainly games, I actually remember QBasic, I wonder how many 15 year olds have even heard of it. Anyways. I learned some basic stuff in that when I was about six, but I never really got past displaying characters and making the computer beep.

    In sixth or seventh grade I decided I was going to start a web page. I went to geocities, and started a site. I downloaded an HTML tutorial and went to work. The first things there were horrible, to say the least, but I eventually I got better.

    Then sometime in seventh grade I got a TI-81 calculator. I thought it was really cool, I mean just like at the screen. I ended up learning you could do programs on it. I looked at source and at my manual, I picked things up pretty quick. (It's only basic after all) I started writing programs to make my math easier/less time consuming. I wrote one to solve the quadratic equation, etc. Pretty basic stuff.

    In eighth, I learned some JavaScript. I didn't get very far with it, but I wanted to do some cool stuff for my webpage. I read, and did some basic stuff, mainly with math.

    Then, at the end of eighth I started looking at perl. It looked really cool, and I decided to learn it, having no idea about real programming. I found this place, and have learned quite a bit, and that's where I am today, a year and a half later. Hope this helps you find a starting point. I think that either math programming, or web stuff is good place to start. I guess it depends on the kid.

    elusion :

Re: Teaching The New Generation
by poqui (Deacon) on Dec 03, 2001 at 22:14 UTC
    I actually got started in programming through math.
    I had never seen a computer and was barely aware of their existence in 10th grade, but I did have Geometry in that grade. I really took to the proofs in Geometry and did pretty well with them.
    Then a year later, I moved to an area where the schools had computers and had a friend who played with them, so I decided to check it out and found a book on Basic in the library.
    I was struck at how similar writing programs was to writing proofs, and the rest was history.

    I guess If I was starting today though, I would start with C.

    "That that is, is... for what is that but that? and is but is?" Shakespeare, Twelfth Night, Act IV, Scene 2

    "Yet THAT which is not neither is nor is not That which is!" Frater Perdurabo (pseud. Aleister Crowley), Liber CCCXXXIII, The Book of Lies
Re: Teaching The New Generation
by rje (Deacon) on Dec 04, 2001 at 03:15 UTC
    Hey, I think perl is a great language to start on. It
    has a nice learning curve, yet there's enough material
    there to build on until you're almost at the Scheme-
    level of sophistication. Go for it!

    Awhile back, I started teaching perl to my wife; alas,
    we didn't really apply ourselves to the task, and it's
    fallen to the wayside. But someday...


Re: Teaching The New Generation
by pmas (Hermit) on Dec 04, 2001 at 19:49 UTC
    I know I am little late with my answer, but, here it goes anyway...

    I was looking into the same issue couple months ago for my son (11 years) and he just loves GameMaker. It is something like LEGO to build your own games - sometimes open-source, so you can peek how cool tricks are done.

    Article here in PM is Learning how to program (for youngsters of any age). And BTW I love to play with GameMaker, too. Simple playable game you can create in an hour or less.

    To make errors is human. But to make million errors per second, you need a computer.

      WOW! That GameMaker link was a real winner for all three of them! It looks quite nice and will help keep the interest in continuing. Thank you for that tip!

      The Lego MindStorms was another that I had tried a year ago (it still sits in the box on the shelf - the COMPLETE set with all of the modules and available add-ons for it (including all three "brains" and the camera, not to mention the starwars set). *sigh* I think it was too far too fast at the time. Looks cool, but too far of a first leap.

      I have a funny feeling that when i get home tomorrow morning in the early AM, my kids and I will be avidly downloading and trying things out the rest of the day. The page and info alone got my attention and I heartily agree with you in that [id://Learning%20how%20to%20program%20%28for%20youngsters%20of%20any%20age%29|post] - it looks FUN! I had to download the tank game and play it - lost an hour with that... specially when my business partner came over to see what was so entertaining and logged in another terminal to play it as well. We chalked it up to a great "motivational" lunch *grin*


Re: Teaching The New Generation
by Juerd (Abbot) on Dec 20, 2001 at 02:34 UTC
    And, I know some of our members are the younger generation as well.. tips on what got you started in Perl or other languages would be very much appreciated.

    My first programming experience was seeing my brother using gwbasic for school when I was about (I guess) 9 years old. I found myself reading, copying and changing their listings. After a while, I tried to create my own programs. For a few years, AUTO, LIST, RUN, LOAD and SAVE were my life.
    When we got qbasic, at first I used it just for the help file it had, but I soon figured out some things couldn't be done in gwbasic. The concept of not having line numbers was new to me, and I continued using goto. I then discovered SUBs, FUNCTIONs and structured programming using WHILE. Without knowing why, I tried if I could rewrite my programs so that there wouldn't be any goto in there.
    I guess I was 12 years old when I tried C++. I had a copy of Borland Turbo C++, and the only thing I liked was the color highlighting. It wasn't long before I gave up C++ and went back to basic. QuickBasic, because it could create .exe files. I had been using compilers and linkers for gwbasic, but they didn't like qbasic code.
    QuickBasic was enough for me, I thought. But then, in 1996, I learned to use Visual Basic for Windows. It took a while before I understood the basics of event-based programming.
    When I was 15, I installed Linux and was looking for a programming language that ran under Linux. Still frightened by my C++ experience, I first tried to find a Basic-like language, but failed in finding a good one. In the library, I found some books about Perl, and it seemed to be installed on my system. I started using it, and felt comfortable with it. I continued programming in Visual Basic for Windows and even tried the fossil called Visual Basic for DOS 1.0 just for fun, but again and again I found out that Perl had HUGE advantages over Basic. As I got more familiar with Linux, I also learned more and more Perl. With but a few exceptions, I haven't touched Basic ever since. Perl is a programming language that perfectly fits my needs, and it lets me code the way I think.

    Many ask who taught me all this. Books, online manuals and a lot of other online resources have. Since a few years, I've been using IRC, but I learn more by asking where I can find the answer than by asking for the answer itself.

    2;0 juerd@ouranos:~$ perl -e'undef christmas' Segmentation fault 2;139 juerd@ouranos:~$