Slashdot Mirror


Teaching Programming Skills to Children?

KlaatuVN asks: "My younger siblings are asking for ways to learn to program. If I remember correctly, when I was younger I started programming by writing games like 'Lemonade Stand' in BASIC for the Commodore 64. Short of finding a Commodore 64 emulator and digging up some old BASIC programming books somewhere, what do you think is a good way of teaching children to program? I'm not trying to start a 'language war', but that does enter into it. Should I start with a scripting language? What, O Wise Slashdot Readers, are your opinions?" When I was just starting out in computers, I remember LOGO being a big help in teaching me the logic skills I would eventually use as a programmer. I know LOGO is still around, but it would be interesting to note if there are other similar projects like it. What tools, and programs would you use to teach programming skills to interested youngsters?

121 comments

  1. QuickBASIC by hackwrench · · Score: 1

    QuickBASIC is easy to use and there's less of the problems associated with API's with it. If you don't mind the lack of legality about it, there are copies on the net. QuickBASIC

    1. Re:QuickBASIC by murat · · Score: 2, Informative

      Depends on the age. For younger children I'd teach Visual Basic instead of QuickBasic. For older ones, I'd start with C.

    2. Re:QuickBASIC by Anonymous Coward · · Score: 0

      I would forget about Visual Basic. . . unless the kids want to write buisness apps. To do the type of graphics that we did as kids is sort of strange in modern windows programming.

      First thing, I would make sure that they can type fast.

      After typing, php or asp vb script. This would let the kids write programs that display things in a web browser so they could show their friends at school. Be sure to teach them about file io early on so they can do real things.

      Then, I would push them into writing a roll playing game because it is fun, easy, and a good learning experience. That would be a good time to introduce them to sql.

      After they get comfortable with the basics of programming, teach them postscript, and have them generate dynamic custom graphics for their rpg.

      By the time they finish this, it will be time to tell them about thoes data structures and algorithims that they have already been using.

    3. Re:QuickBASIC by Directrix1 · · Score: 1

      Best Language = English. By the time they grow up, the IT sector will be so friggin' saturated with plain jane programmers that he'd probably wanna be flippin' burgers instead because it pays better. Thats probably what I'll be forced to do anyways. And I've been doing this junk since I was 8 (I'm 23 now in case your wondering).

      --
      Occam's razor is the blind faith in the natural selection of least resistance and in universal oversimplification. -- EF
    4. Re:QuickBASIC by John+Hasler · · Score: 1

      Please don't teach children _any_ dialect of Basic.
      Start them with Logo and then move them up to Python. Ucblogo is free and available for Linux and probably the *BSDs.

      --
      Warning: this article may contain humor, sarcasm, parody, and perhaps even irony. Read at your own risk.
    5. Re:QuickBASIC by dtfinch · · Score: 1

      I started with Basic when I was 9, and I turned out fine. But my mother encouraged me to master as many languages as I could as they became available to me, so I did. Pascal seems like a very nice, but powerful starting language as well.

    6. Re:QuickBASIC by llamaluvr · · Score: 1

      I'd never teach Visual Basic to anybody who never programmed before. I took my first programming class in VB, and we spent more time customizing objects and labels and textboxes and such, and not enough time programming. Folks should just get used to using a console for I/O before they endure the trouble of making a GUI.

      I first learned programming on QBASIC and AppleBASIC, but I really got the bug when I started programming in "TI BASIC", or the BASIC that's included with TI graphing calculators. The language isn't all that powerful, but it's got all of the most basic constructs (no functions, but there are subroutines), you don't have to worry about datatypes, and graphics are really simple. I was making little games in no time. Not to mention that your programs can use all of the mathematical operations that the calculator can use, something that will be useful to kids as they begin taking high school math courses.

      I'd probably recommend the TI-86, because it has up to 8-letter variable names, and decent string functions, but the TI-83 is better at some respects as far as graphics are concerned (split-screen between the graph window and the console is really cool!).

      --
      Insightful: 76, Off-Topic: 379, Flamebait: 24, Funny: 152, Interesting: 201, Underrated: 55, Troll: 9, Total: 896
    7. Re:QuickBASIC by jzedd · · Score: 1

      Murat...C? Even for older children that might be a little too challenging. I would suggest one of the many forms of BASIC floating around the internet.

  2. Start them off with a challenge! by kurosawdust · · Score: 2, Funny
  3. Use Brainf*ck by fredrikj · · Score: 2, Funny

    'nuff said.

    1. Re:Use Brainf*ck by stefanlasiewski · · Score: 3, Funny

      No, I'm sure they get enough of a brainfuck in school.

      Teacher: "You are all individuals"
      Students: "Yes, we are all individuals"

      --
      "Can of worms? The can is open... the worms are everywhere."
    2. Re:Use Brainf*ck by Associate · · Score: 1

      I'm not.

      --
      Someone hates these cans.
  4. Stagecast Creator by TitaniumFox · · Score: 2, Informative

    Stagecast Creator is a fairly elementary language that can introduce the young ones to object oriented thinking. You can program multi-level games and applications like calculators. Each object is defined by its set of parameters and how it interacts with other objects. A few friends of mine have used it to introduce their kids to programming and have found it to be pretty successful.

    TiFox

    --
    -- I'd say your post was about 3 monkeys, 18 minutes.
    1. Re:Stagecast Creator by Anonymous Coward · · Score: 0

      Maybe I should give it to my co-worker!...:(

  5. Older kids learn Python easily enough by flockofseagulls · · Score: 5, Interesting

    I've been teaching Python to older kids and teens (10+) and have had good success. A few younger kids started in the classes but had trouble with typing and general computer skills. Most of the kids caught on to programming and were writing their own variations on assignments.

    Very young kids have problems with attention span, reading, typing, etc. so you may want to use something like Lego Mindstorms instead of text-based programming.

    See www.geekschool.org for one approach.

    1. Re:Older kids learn Python easily enough by Sidlon · · Score: 1

      To really ease kids into python, be sure to check out the turtle module first. (ahhh... the memories)

    2. Re:Older kids learn Python easily enough by mbogosian · · Score: 2, Informative

      Very young kids have problems with attention span, reading, typing, etc. so you may want to use something like Lego Mindstorms instead of text-based programming.

      Actually it's not just kids how have attention span issues who can benefit from Lego Mindstorms. If your siblings haven't yet taken high school geometry yet (or haven't had enough exposure to boolean logic), then Lego Mindstorms is a really cool to get a day-to-week-long introduction. Past that, I'd say, based on my own experience, that (when I was 11) C was difficult for me to pick up until after I learned Pascal. They both have similar structures, but Pascal was a much better introduction because of its use of natural language in most of its syntax.

      You can find some tutorials here, here, here, here, and here.

      The only problem with Pascal (nowadays) is that compilers/debuggers seem hard to come by. Here's a free one that might help. If that doesn't work, then you could always try something this, but I wouldn't recommend it for the beginner who doesn't even know what compilers or linkers are and why they are necessary.

    3. Re:Older kids learn Python easily enough by sebmol · · Score: 1

      The only problem with Pascal (nowadays) is that compilers/debuggers seem hard to come by.

      Borland sells and maintains an exceptional programming system based on a Pascal dialect called Delphi.

      --
      "Light is faster than sound." - "Is that why people tend to look bright until you hear them speak?"
    4. Re:Older kids learn Python easily enough by techstar25 · · Score: 1

      I'm glad someone suggested Pascal. Pascal has a very easy to learn syntax so you can spend more time concentrating on learning good logic(which would apply to any language). Here is a link I found to a college professor's site where he has Turbo Pascal 7 for DOS available to download. This particular version works with all versions of Windows. FreePascal seems to have versions for other OS's.
      Simon Huggins at Northhampton College

  6. Oh yeah... by TitaniumFox · · Score: 1

    I forgot to mention that it's point'n'click like QuickBasic is, so it's suitable for younger children.

    Additionally, here's a link for game creation resources for those who are non-programmers. Since games keep interest up, this could be a way to teach programming.

    --
    -- I'd say your post was about 3 monkeys, 18 minutes.
  7. Rocky's Boots. by Glonoinha · · Score: 2, Informative

    Good luck finding it - but if you do it is a killer teacher of Boolean Logic.

    Last time I played it was on an Apple IIe.

    --
    Glonoinha the MebiByte Slayer
    1. Re:Rocky's Boots. by TitaniumFox · · Score: 2, Informative

      OMG, yes! I remember this program. At the time (10yo, I think), I didn't even realize what AND and OR gates were, and I was using them to solve the problems.

      It's an excellent program.

      Find it and an apple II emulator here.

      --
      -- I'd say your post was about 3 monkeys, 18 minutes.
    2. Re:Rocky's Boots. by orangesquid · · Score: 2, Informative

      Rocky's Boots did wonders for my understanding of computers, logic, and programming. I would definitely start with Rocky's Boots on an Apple II emulator. There are disk images floating around the net.

      --
      --TheOrangeSquid Is it any wonder things seem so awry? We swim in a sea of confusion and don't have to think to survive
    3. Re:Rocky's Boots. by BTAppWriter · · Score: 1

      OMG, yes! I remember this program. At the time (10yo, I think), I didn't even realize what AND and OR gates were, and I was using them to solve the problems. It's an excellent program.

      Yeah I remember that one too. My favorite (in high school) was its sequel: Robot Odyssey, made by the same company, The Learning Company. This game is more advanced. It takes the concept of Rocky's Boots and turns it into an adventure game where you use 4 robots to try to escape from a mysterious underground world. You have to program one or more robots, using logic circuits, to accomplish goals on each level. You use the same principles of AND, OR, and NOT gates, plus flip-flops. I think it eventually gets into the realms of muxes and demuxes as well, but I didn't get that far...

      You can find it here. It provides links to download the game, and an Apple II emulator.

      I agree that finding an interesting programming language for children can be a challenge these days. Back in the 80s it used to be easy. Programming languages came with the computers, they were simple, and had easy-to-use features that usually allowed access to fun things like graphics and sound. Nowadays, I'd suggest VB. It's not the BASIC we grew up with (with the line numbers, etc.). It's more like Pascal in syntax, plus it has commands for graphics, animation, and sound on Windows. Plus I bet you'd be able to find some easy to follow, beginner programming books for it.

      Good luck.

      --
      "So remember the new number: 0118-999-88199-9119-725...3"
  8. There's always by Judg3 · · Score: 4, Insightful

    Lego Mindstorms and it's RCX language. Fairly intuitive, robust, and you can get it to do cool real-world stuff.
    While I think a child might be ok with making some little PC games, I think they would love it even more if they could build a dinosaur and make it walk like they want it to.

    --
    Looking for hardware (Currently need: Large Etch-a-Sketch) Have one? See my journal!
    1. Re:There's always by Basje · · Score: 1

      Lego in general. It learns children combine basic blocks to form a larger thing. I know it helped me develop my technical skills

      --
      the pun is mightier than the sword
    2. Re:There's always by Rick+the+Red · · Score: 2, Funny
      Lego in general. It learns children
      Apparantly not very well.
      --
      If all this should have a reason, we would be the last to know.
    3. Re:There's always by Anonymous Coward · · Score: 0

      Perhaps you should have replied in his native language. Oh, you can't? Then SHUT THE FUCK UP, loser.

    4. Re:There's always by llamaluvr · · Score: 2, Insightful

      I'm a teaching assistant for an introductory college programming course, and we used NQC (Not Quite C) to program the Mindstorm robots during part of the course. It was a cool hand-on activity, but the students picked up a lot of bad habits that became evident when we moved to C++ later in the course. A lot of students seemed to think that all functions had zero parameters and always returned the type "void", and that all variables should be globals.

      It was probably more due to the pace of the course, but NQC and the robots kinda messed a lot of students up. I guess it's important to realize that programming the robots is fundamentally different from programming console apps. The Mindstorm robots can help develop basic programming "cause and effect" concepts, but it's not as much help with programming structures like classes and functions.

      --
      Insightful: 76, Off-Topic: 379, Flamebait: 24, Funny: 152, Interesting: 201, Underrated: 55, Troll: 9, Total: 896
    5. Re:There's always by Basje · · Score: 1

      You still can't spell you mean?

      English isn't my primary language. What's your excuse?

      --
      the pun is mightier than the sword
  9. Concepts, Not Particulars Important by edward.virtually@pob · · Score: 1

    The most important things to communicate about programming are the central concepts -- variables, expressions, conditional branching, looping, etc. Use whatever language you (or whoever is doing the teaching) are most comfortable with. Using an emulated C64 would not be that bad, aside from the primitiveness of line numbering by today's standards -- BASIC is not a bad TRAINING language, just a bad production one :-), but Perl or Python or BASH would be just as good or better depending on your religious views. I think making sure you start slowly and go at the student's pace will be most important. Begin with Hello World and procede from there to classics like Guess The Number. I was very lucky to have gone to junior and high school when computer classes taught how to write programs instead of use them. Good luck to you and your siblings!

    1. Re:Concepts, Not Particulars Important by vertical_98 · · Score: 1

      I agree with the above, but I can tell you one very important thing. MAKE IT INTERESTING FOR THEM!!!
      I can not stress that enough. If they don't see a benefit (and I mean IMMEDIATE benefit), it doesn't matter what language you use. Thats why Logo was such a good training tool for kids. You get to see what you are doing up front. From there go to xBasic or something else that is more involved but still quick payoff.
      In my DOS days, Turbo C was a great language to use as the step up from BASIC. I am sure there are others today that would fill the same niche.

      Best of Luck

      Vertical

      --
      72 CD D7 52 D0 7E D8 47 44 91 D5 84 D1 59 F1 A9-This is my 128bit integer. There are many like it, but this one is mine.
  10. Assembly by inflexion · · Score: 3, Interesting

    I would vote for assembly (no this isn't a joke). Assembly is really simple when it comes down to it and would be good for instruction for several reasons:

    1) fewer operators than pretty much any other language (unless you're talking about x86 asm)
    2) teaches how computers *really* work inside. I never became an effective C programmer until I learned assembly and what was going on behind the scenes. Your kids will learn the basics of booleans, memory layout, branches, etc much more thoroughly than if they started with C. After they've mastered asm then they can move on to C and will appreciate it that much more.

    1. Re:Assembly by GuyMannDude · · Score: 3, Funny

      And teaching the kiddies assembly will have the side benefit of scaring them off of a career in programming so they'll be more likely to go where the big bucks are: business.

      Sure they'll cry now when make them sit still and trace program flow through the LDA and JMP instructions but when they're making six figures a year just for spewing some business buzzwords at those five-per-day meetings in comfy, fancy chairs they won't be able to stop thanking you enough.

      GMD

    2. Re:Assembly by rodolfo.borges · · Score: 1

      I agree 100% on you.
      I think it's very important for a computer hacker/programmer/scientist wanna-be to know how the computer work, and learning assembly makes that way clearer.

      I myself started with BASIC, tought.
      Only about five years ago I wrote my first assembly little program (for 8051) to control an LCD and some keys, attached to the serial port of a PC, a console for an mp3-car-player.

    3. Re:Assembly by bill_mcgonigle · · Score: 1

      And teaching the kiddies assembly will have the side benefit of scaring them off of a career in programming

      I first picked up assembly by wanting to make stuff move around the screen on a VIC-20 in 4th grade. Of course, I though C-64 BASIC was the bomb after that, but I didn't know any better at the time, so I didn't realize that it was hard and scary. Kids have a knack for being able to do hard stuff if they don't know it is.

      Anyway, yes, I is a professional programmer now.

      --
      My God, it's Full of Source!
      OUTSIDE_IP=$(dig +short my.ip @outsideip.net)
  11. Test-first by splattertrousers · · Score: 1
    Whatever language you choose, I would strongly suggest teaching them to write test-first.

    It will help keep them focused on writing something that works correctly, and writing only what is needed. It should also keep them from wasting hours trying to figure out why something isn't working.

  12. Teach them Perl . . . by jmt9581 · · Score: 1

    So they'll never have a chance of learning to write in English. (kidding)

    --

    My blog

  13. TI-85 by Slashed+Otter · · Score: 1

    Not sure how appropriate it would be for very young kids, but the TI graphing calculators make a great environment for learning basic programming. They have their own scripting language that's very easy to pick up. It's nice because you can literally learn how to show output and accept input in almost no time at all (you could write the "guess a number between 1 and 1000 game" in around 10 minutes.) It also has graphing capabilities to handle graphics, though that would require some minimal math skills (x and y coordinates and such.)

    I learned to program on one of these things in high school and it was quite fun re-implementing old games...pong, brickles, concentration. A friend of mine even wrote a FPS, though it only had one really short level. And for under $100 (also doubling as a calculator), it's a lot cheaper than a full computer. I learned on a TI-85, though they probably have newer models now.

    1. Re:TI-85 by trmj · · Score: 1

      The TI-89 is much better for programming on.

      It may be more expensive (usually around $150), but it uses a command line interface with a seperate output window, you can split the screen to view graphics and source at once, it's open source (like all TI calculators using basic), and the manual comes with an ok intro to programming.

      Also, unlike the other calculators (I think) it allows the calling of external functions and programs, which can be sorted into folders in the filesystem.

      Throughout my entire Alg II class in high school I programmed two games: an RPG with multiple skill levels and the option to save games (that's when I learned to use coherent variable names, hehe), and an Oregon Trail type game that was never finished, mainly because I had to do all of my assignments in the last week of class to pass with a 70%.

      --
      Work sucked, until it became unemployment, when it became slightly more tolerable. -Tet
  14. A pure and useless language by splattertrousers · · Score: 2, Funny
    Since they're just programming to learn to program, you have the opportunity to start with a "pure" language that doesn't necessarily have to be particularly useful.

    I'd stay away from kludgy languages like C, C++, Java, Basic, etc.

    So Smalltalk might be good. I'd suggest Lisp, but it might be too useless ;) I've also heard good things about Ruby.

    And assembler might be good too. A big light turned on in my head when I learned assember, because I finally figured out what was going on inside the computer.

  15. flexible by muon1183 · · Score: 2, Insightful

    Go with a flexible language as a first language. You don't want them stuck using only one programming paradigm. If possible, choose something that can do OOP, functional, logic, etc. It will serve them well down the road if they ever want to use it for anything not to be stuck in just one paradigm.

    --

    There's no sig like SIGSEG
    1. Re:flexible by batemanm · · Score: 1
      This could be too confusing for beginners if they can switch between OOP functional etc. I current teach C to people that have done a years worth of Java and they are always getting confused about what can be done in each language. Personally I'd say pick a pretty minimal language which can do graphics. Being able to draw pretty things on screen always interests people. From my own experince I'd say something like Pascal but as others have pointed out it can be difficult to find compilers. So I'd probably go with smalltalk.

      I don't think the point you made about being stuck with one paradigm is valid as soon as you understand one you can then learn another and you won't get the confusion of not understanding the boundries. Just because these kids are learning one language now doesn't mean that is the only language they will learn.

  16. HTML, Mindstorms and games by AdamBa · · Score: 1
    HTML is good because they can see immediate results and show their website to a friend, and learn a lot from doing "View Source".

    Lego Mindstorms is another one that is simplified but gives impressive results.

    Beyond that I would look for something that let them write games with graphics easily. Don't have any great suggestions though. BASICA for the original IBM PC, which is where I wrote my first games, was pretty good, but I think with windowing systems, doing any graphics has gotten so complicated that there might not be any system where it is simple to do graphics. But definitely writing games is a good way to learn, even if it is just "guess what number I am thinking of" in Python.

    - adam

    1. Re:HTML, Mindstorms and games by an_mo · · Score: 1

      html is not a language, dude

    2. Re:HTML, Mindstorms and games by andrewski · · Score: 1

      Right. It's a text markup device.

      It'll serve as a good intro to TeX, though. You are going to teach your kid DTP the REAL way, aren't you?

    3. Re:HTML, Mindstorms and games by dotgain · · Score: 1
      html is not a language, dude

      Err, HTML: HyperText Markup L - l -
      lingo?

      If HTML is not a language, what then, are the likes of English and Italian, just to name a couple?

      HTML has conditionals, but not branches. Because of this, it is not a programming language.

  17. Director (or its children/cousins) by dr00g911 · · Score: 2, Informative

    Macromedia Director (or Revolution, or Hypercard) seem to be a natural for an introductory taste to programming... at least they were for me.

    My "real" first taste of programming was BASIC, with the old K-power magazines and my Atari 400/Apple II+. Those were the days.

    At any rate, my entry into building actual applications came with Director 1.0, many years later.

    It gives a timeline that anyone can animate and assign rudimentary interactivity to -- building presentations, programs, and even specialized applications -- without any programming needed, but also allows for Lingo scripting (as a next step) -- which you can achieve pretty much anything with.

    Lingo is very close to BASIC, but the syntax comes closer to C/Javascript/PHP, and it's getting more object-oriented with every revision.

    The bottom line is that *anyone* can build an application or presentation with any of these tools that work, without programming.

    But *with* programming, you can add bells, whistles and functions that wouldn't be possible working in the timeline alone.

    From there, kids can (if they have aptitude) make the jump to C or scripting languages once they can understand more complicated syntax.

    Just my thoughts, but if someone tried to teach Perl or VBScript to an 8-year-old, I think it'd be an uphill battle.

    A battle I'd pay to see, because I think it'd be much funnier than anything that's broadcast on TV these days, at any rate.

    God, I miss LOGO.

    --dr00gy

    1. Re:Director (or its children/cousins) by zero_offset · · Score: 1
      I was hoping NOBODY would say Director. Macromedia languages are awful. The guy who came up with Lingo should be permanently barred from using computers. The language is extremely arbitrary and bears little or no useful resemblance to any "real" language. Recent versions of Flash apparently support a reasonably standard JavaScript spinoff, so progress is being made (and we'll ignore how hideous JavaScript is as a language), but whatever you do, don't let your kids "learn" by using Macromedia products.

      I believe there are two reasons so many people talk about Basic. The first one is, of course, that on older home computers it was always available. The second one, and I believe the more important one, is that it went a long way towards insulating you from being able to do anything really harmful, while allowing you to do things with immediate visible results.

      Browsers, via HTML and locally-executed script code, go a long way towards satisfying both requirements. I would personally recommend letting them use IE so that they can use VBScript (which is a hell of a lot easier for a beginner to read and write than JavaScript), and perhaps encourage them to rewrite their VBS code in JS, which should nicely lay the groundwork for understanding programming generically, rather than specializing in one language, which is what cripples and confuses many self-taught beginners.

      But whatever you do, avoid Macromedia languages like the plague...

      --

      Slashdot quality declines as the number of hot grits posts decreases. - Provolt's Law, Apr-09-2005

  18. No good new teaching languages by 0x0d0a · · Score: 1

    I haven't seen anything since BASIC and Pascal that's been particularly good as a teaching language.

    Java, which is commonly used in schools, is *awful* as a first language -- tons of focus on semantics and OOP, not much on data structures.

    I strongly disagree with people that push Scheme as a first language. I don't think functional programming is incredibly intuitive.

    On the up side, whatever you use these days has memory protection and preemptive scheduling. I remember learning C on the classic Mac OS -- make a mistake, and the OS instead of the app goes down.

  19. I second Python by pbox · · Score: 1

    Please do not start with BASIC, it was good for C=64, but only because there was nothing else (at least early on). Now we have python and other (even more?) fully implemented OOP languages, like scheme. Teach OOP first, they can learn BASIC later if they need to, it is harder the other way around.

    --
    Code poet, espresso fiend, starter upper.
  20. go with visual stuff by mikecheng · · Score: 2, Insightful
    No, I don't mean "Visual Basic" per se.

    The reason "we" got into programming when young is that we were all probably maths/science people looking for an outlet for our energy ("I never made the first team, I just made the first team laugh" - billy bragg).

    Unless they already have a flexible and mathematical brain, it's really going to be hard to teach them to cope with the logic of

    x = x+1

    That statement is directly contradictory to anything that they ever learn in maths, and I certainly wouldn't want them believing that it was actually a statement of equality.

    As programmers we contort our brains to think of it as 'x takes the value of whatever x is now plus 1' - but it's us changing our thinking to suit the computers for this specific task.

    I have thought a number of times about trying to teach teenagers computer programming, but after having taught them maths for the last 4 years, I don't think I would attempt this with any but the most advanced students.

    However, programming concepts can be taught using more visual tools. I can't remember the name of the program, but I have seen a Lego Mindstorm programming interface which is ideal for kids: it's visual, it's dragging and dropping program pieces, and it gives kids some concrete feedback on their progress (since it makes the Lego robot, or whatever, do something).

    You and I might be happy to write a "helloworld" or a "prime number list generator", but most people need something a bit less abstract as a proof of their progress. LOGO had the conrete output of a picture (so it'd be a competition between the kids to make the picture). Mindstorms have robots (so it's a competition to make the coolest robot).

    To summarise the summary of the summary
    • Be visual (few things are more boring to kids than grammar and syntax)
    • Pick something with concrete feedback (e.g. making pictures, controlling robots)
    --
    Cool, but useless.
    1. Re:go with visual stuff by jbolden · · Score: 1

      I think you are making too much of this. Kids can understand different words being used to mean different things in different context. Certainly fortran made a bad choice with =, and long ago we should have moved to the Pascal standard of := for assignment
      == boolean operator

      and then maybe
      = could be a lazy operator

      But regardless its easy to teach kids the notation and just say "=" means something else.

  21. Fun, introductory programs are key by eamonman · · Score: 1


    From about K through 6, I fondly remember using LOGO and I think PILOT to make different graphical creations. I also recall Logowriter as a fun tool to even make movies with ;) (I still remember making about a 5 minute long 'movie' with Airwolf (hey, it was a cool show), using a bunch of different sprites.)
    Note though that these, I believe, helped me to learn to use the computer in a fun and natural way, not necessarially to learn how to actually program correctly with them. That is probably more important than anything to get kids to go into the computer fields. I mean, once they start taking those comp sci classes, by that time they either like CS or don't. Once they go down the path CS or eng, then they can take whatever requisite classes are necessary.

    --
    0- Eamonman Proud member of DNRC
    1. Re:Fun, introductory programs are key by dotgain · · Score: 1
      One language I have never regretted learning (probably mainly because I work in prepress) is Postscript. Yes, it is a language. Yes, a programming language. Really.

      Yes, you pretty much only use it for things that end up on paper or film (which is quite often for me), but the language itself can be used for computation. The results don't always need to be printed, and you can create your own dictionaries of synthetic commands to use all the time.

      And you learn about stack-based languages. It's really quite powerful. It shouldn't be your first language, but neither should it be your last if you want to write code to output text and graphics.

      /pi 22 7 div def

  22. PYTHON by Anonymous Coward · · Score: 0

    I strongly recommend Python as a first language. It instills good habits from the beginning, can be used to teach imperative, functional, or OOP styles of programming, and has an interpreter so that they can learn easily by experimentation. Python is a very well-designed and orderly language, so intuition will take you a long way. They'll see patterns more easily than with something like Perl, where there are a million ways of doing everything, or like Java, where the underlying simplicity is hidden by the complexity of forced OOP and explicit typing, casting, etc. Python code is very easy to read, and unlike Perl, I can actually read other people's throwaway code. Sure, you can read Perl when the person went to efforts to make it readable, but Perl hackers regard it a macho virtue that nobody else can understand their code. One last advantage is that far from just being a good scripting language, teach the kid C after python, and there is nothing they can't do with the two.

    1. Re:PYTHON by Chexsum · · Score: 0

      And, you can make games with Python. =O)

      --
      Pixels keep you awake!
  23. Criteria by Piquan · · Score: 4, Interesting

    I'd look at it from some criteria. The weights that you give these criteria would vary depending on your target audience. For most audiences, I've listed them in descending order.

    I refer to the Lego Mindstorm's RCX here. There are two forms for this. One is the graphical program builder that comes with it. The other is traditional languages like NQC. Generally, NQC etc have all the disadvantages of C.

    • Interactivity. It is important for a student to be able to examine the state of the program. Being able to enter single commands, and later form them into subroutines, is very helpful. Good: Logo, Lisp, Python, Smalltalk. Bad: C, Perl, Java.
    • Feedback. The program should be able to easily effect things outside of the command processor. Turtles or robots are good vehicles for this. Graphical displays are okay. Very good: Logo, RCX. Kinda good: Smalltalk (under Squeak), Lisp (under something like Lispworks). Not too bad: Java, CGI Perl. Bad: C. (Note: Any language can give output, but there's an extra spark of interest when you can easily produce "cool" effects.)
    • Growth potential. As the student begins to learn about more advanced data structures and algorithms, the language should grow with the student. Good: Lisp, Python, Smalltalk. Bad: BASIC, Perl (it gets too bogged down in syntax).
    • Easy to use. The language should not require a lot of low-level work like memory allocation. It also should not have an overly cumbersome syntax. Good: Python, Logo, Lisp, Perl. Bad: C.
    • Flexibility. The language should allow you to teach different styles of programming, such as functional, imperative, and object-oriented. Good: Lisp. Bad: Almost anything else.
    • Real-world applicability. The language should be usable in the real world. Good: Python, Perl. Bad: Logo.

    Overall, either Logo or Python would be a good choice, depending on your target audience. I'd say that Logo would be a good choice for 12 and under, and that Python would be good for after that. Note that Logo knowledge easily translates to Lisp, so one possible track would be to start with Logo, and later transitition to Lisp.

    1. Re:Criteria by Anonymous Coward · · Score: 0

      Interactivity

      How about JavaScript? Everyone likes webpages, and JS makes it easy to build something interactive in a few lines of code. It's also very portable and doesn't require any special setup.

    2. Re:Criteria by Piquan · · Score: 1

      By "interactivity", I meant the student can interact with the running interpreter. (Nearly all languages allow the program and user to interact during the program's runtime.) In interactive languages like Python, Lisp, Logo, or (to a lesser degree) BASIC, the student can have a dialogue with the processor. As the dialogue proceeds, the user can define new functions and test them one-by-one, with no harness. It really does make it much easier to get started programming, which is probably why BASIC was so popular.

      Here's an example of a session with Python. (Unfortunately, I don't know how to make /. preserve the indentation, which is part of Python syntax. Just imagine indentation where you think it should be.)

      >>> print "Hello, world!"
      Hello, world!
      >>> width=20
      >>> height=30
      >>> area=width*height
      >>> print area
      600
      >>> def circle_area(radius):
      ... return 3.14*(radius**2)
      ...
      >>> print circle_area(5)
      78.5
      >>> def hollow_cylinder_volume(inner_radius, outer_radius, length):
      ... outer_cylinder_area = circle_area(outer_radius)
      ... inner_cylinder_area = circle_area(inner_radius)
      ... return length*(outer_cylinder_area - inner_cylinder_area)
      ...
      >>> hollow_cylinder_volume(1,2,5)
      47.100000000000001

      Note how the student can start small and proceed with greater levels of abstration, all in the same session. This progressive development is very useful. I can have bought, found online, or written tutorials for Lisp, Logo, BASIC, Smalltalk, Prolog (not a good teaching language for first-timers, but I'm including it as interactive), and (as wispoftow pointed out) Mathematica-- all interactive languages. All of them follow a similar structure: start small, test, build bigger, in a single, progressively growing session.

      "But", an objector might say, "I can run similar programs in JavaScript."

      This is true, but it is not an interactive mode, ie, not interacting with the interpreter, at least. It is a code-execute-debug cycle. Any Lisp programmer will tell you, it makes a huge difference.

      The debugging is a big part of this. You see the sample session above? When I was typing it into Python, it actually took 48 lines, over twice as long as what I pasted. The difference was debugging. For example, I accidentally typed "circle_volume" instead of "circle_area" into the definition of hollow_cylinder_volume one time. I can make lots of silly mistakes, and I'm a professional programmer. Imagine how many mistakes a student is going to make!

      Using an interactive interpreter also encourages unit testing at every granularity. You see how I ran a quick test on circle_area as soon as I wrote it? Since it's so easy in interactive languages, it's encouraged. Small steps, that's what you want.

      Now, Mozilla has the JavaScript Console, which provides some interactivity. But it's really a far cry from what the other languages offer.

      Now, I don't know enough about JavaScript to meaningfully evaluate how appropriate it would be regarding the other categories. It certainly does get the "cool web page" factor. But, you were asking about interactivity-- and JavaScript just isn't.

  24. What are their ages? by Anonymous Coward · · Score: 0

    My younger siblings are asking for ways to learn to program. If I remember correctly, when I was younger I started programming by writing games like 'Lemonade Stand' in BASIC for the Commodore 64. Short of finding a Commodore 64 emulator and digging up some old BASIC programming books somewhere, what do you think is a good way of teaching children to program? I'm not trying to start a 'language war', but that does enter into it. Should I start with a scripting language? What, O Wise Slashdot Readers, are your opinions?

    It would have been nice if you spent a little less time regaling us with tales of your beloved C=64 and more time telling us a little about your siblings -- like their ages!

  25. BASIC and other good environments... by RevAaron · · Score: 1

    You don't need to get a C64 emulator just to program in BASIC- there are plenty of free implementations tailored for all sorts of reasons, and quite a few intended for beginning programmers wanting to make cool stuff- simple graphics and the like. Kids like that kind of stuff usually, a high return for their time investment. Especially important with today's no-attention-span kids. I think some good experience programming could help with that though. :)

    Other than that, there are a wealth of other environments which could also be fun as well as useful. There is Squeak Smalltalk, which has been used in education for almost 30 years. Most recently, there is the eToys system- which can be used by kids and adults a like for creating interactive, multi-media-ish setups by drawing/dragging your objects, assigning actions. You can do a lot without writing a line of code- but if you want to, the power of a full, mature language is at your disposal. Quite a combo!

    --

    Working toward a usable PDA environment in the spirit of Newton OS: Dynapad
  26. How old are they? by Van+Halen · · Score: 1
    Depending on the kids' age, I might recommend BYOND. Somewhere around 12 is about the minimum age I'd recommend for that, though it really depends on the individual. It is certainly not a system designed for kids, but it is easy enough to pick up that some kids with natural tendencies towards programming will probably have no trouble.

    The system itself is geared towards creating 2-D games (as someone else already said, making a game can keep it nice and fun), and comes complete with a powerful yet simple object-oriented language. I must say, after using it for a couple of years, I'm really impressed with the language. It's so well designed that many of us there who are seasoned developers have come to the conclusion that it's a superb first language for anyone who's just starting to learn programming. I have personally witnessed a number of young programmers within the BYOND community successfully learn fundamental concepts more easily than they possibly could have at their age, starting with another language. The way the language is designed, new programmers start doing things right away, putting together different pieces; and then suddenly a lightbulb goes on and they advance to the next level.

    The only real drawback (from a kids learning standpoint) compared to similar systems is that BYOND doesn't provide any canned graphics/sounds like some others do. It provides the flexibility and framework to add your own, but this also means it's more work to create something nifty right off the bat. I've seen people get frustrated because while they have the programming part down, they may not be good at creating their own graphics and sounds, so they feel like the programming is a waste.

    Disclaimer: the guys who created it are personal friends of mine, so yes, I am somewhat biased, but I stand behind my recommendation on the strength of the system.

  27. Stagecast by krokodil · · Score: 1

    http://www.stagecast.com/ is pretty good. It is visual programming tool for kids to create games. While it does not have programming language in classic sense, it teaches to think algorithms.

    My 10 yeard old dauggter mastered it pretty quickly.

  28. Please clairify a few things... by wowbagger · · Score: 1

    Please clarify a few things - specifically what you mean by "children" - are we talking 6, 12, 16, what?

    For little kids ( say below 12 years of age), you want something to captivate them. Definitely things like Lego Mindstorms, Technixs, and anything else that moves. Remember that before 12 years of age, kids' logic is not the best.

    Now, if you are talking about 12 or so, then what you want is something that will let the kid start making useful programs. I'd suggest something interpreted - kids that age learn by trying things out first, and a "edit compile link run curse debug repeat" cycle isn't likely to get them hooked. I'd suggest BASIC, TCL, Python, Forth and the like.

    Teach them the VERY basics first - modularity first. Teach them to do little chunks they can build upon, rather than trying to cram the whole thing into main(). Teach them the value of a few well-placed (print|puts) statements.

    Only when they have those fundementals down should you even THINK about more advanced languages.

    I've a co-worker who's kid is learning on one of the programmable calculators that's out now - the thing's Z-80 based. I cut my teeth on a Z-80 (TRS-80 Model 1 Level 1) - nice and simple machine to work with. That may be a fruitful approach.

  29. Karel++ by BobTheJanitor · · Score: 3, Insightful
    Karel++ is a great starting point. Karel is a simulated robot that exists in a virtual space that can be modified like a Skinner box.

    Karel takes simple commands (for example, turnLeft(), moveForward(), or pickUpBall()) and has boolean functions that act as sensers (such as hitWall() or wallOnRight().

    When coupled with basic control structures, it's a fun and easy language to learn, and most Karel implementations have a graphic display of Karel moving around its world, so a wall-hugging function like the following isn't purely academic, it can be experienced just by watching.

    repeat forever{
    while(!hitWall()){
    moveForw ard();
    }
    turnLeft();
    }
    You can make Karel programs that solve mazes or that clear the room of balls, etc. It's obviously not a good programming language to do anything of use (although I have seen a Karel half-adder accomplished by picking up and dropping balls), it's a great introduction to OO programming that seems more like a game than education.
    1. Re:Karel++ by Eagle7 · · Score: 1

      That's what they used in my High School... I think it's as good a place to start as any. Although I like the Mindstorms suggestions as well, but I think something like this would be easier to move from when they start to use something like C or Java.

      --
      _sig_ is away
  30. Movies by GuyMannDude · · Score: 4, Funny

    Sit them down on the couch, push the DVD of Hackers into your player, pour the microwave popcorn into a big bowl and have them enjoy the movie for 90 minutes. Then when the show is over, carefully explain to them that real-life programming is the exact opposite of everything they just saw.

    Hope that helps,
    GMD

    1. Re:Movies by Associate · · Score: 1

      Exactly. Explain also that it's like becoming a priest, except for the sex with small boys thing. You'll be married to your work. Only your peers will understand you. And you won't go to the beach to get a tan.

      Disclaimer: This post is not intended to be a flame. If you are a programmer and enjoy having sex with boys, my intent was not to insult you. Although, you might want to get some help.

      --
      Someone hates these cans.
  31. Something Graphical by DeadSea · · Score: 1
    When I was in elementary school and Junior High, I learned some programming, mostly in Basic. I remember writing a program to print my name, and a few other such simple things. It wasn't all that exciting to me. I didn't really get into programming until high school when I had a ti-81 programmable graphics calculator. I discovered I could program it to do my homework. I also discoverd that I liked putting it in drawing mode and programming things to appear on the screen.

    The graphical aspect of programming is what would probably draw kids in most quickly. As a kid, I wanted it to be simple, I wanted it to be flexible, I wanted instant results. The ideal programming environment for beginners would have graphics. It would have a powerful, but flexible API. I'm thinking that Flash, or something similar might be appropriate.

  32. Smalltalk by merlyn · · Score: 1
    See the Squeakland site to see how Squeak Smalltalk can be used in a classroom.

    Squeak is great on multiple levels:

    • It's Smalltalk, a true OO language (unlike Perl, Python, Java, C++ etc).
    • It's multimedia out of the box
    • It's truly cross-platform (same bit-for-bit image can run on 10 different platforms)
    • It's muckable (entire source code of OS down to the VM can be patched in a running system, and even the VM can be patched and simulated and rebuilt)
    • It's internet ready (built in email, news, irc, web clients, and web server)
    • It has multiple levels of programming (tiles, smalltalk, C/C++)
    • It has a large user community, including support from the people who originated Smalltalk in 1972
    • It's free!
  33. Robocode by Gefd · · Score: 5, Informative

    Though I don't have children I would think that something like Robocode would be ideal. Considering that you can get almost instant feedback for the changes you make, and that it's a game, which if my niece is any indication, will consume any child above 2.5yrs to the point of tears when bedtime comes around.

    - Gef

  34. LOGO... by netfunk · · Score: 4, Insightful

    ...or Visual Basic. Seriously.

    I have to say this, because someone recommended assembly language with a straight face.

    Some things you should remember:

    1) Programming languages are just an expression of a problem's solution. The less time you can spend learning to express, the more time you can be solving.

    2) Teaching someone logic is really the goal at early stages. Teaching them how a computer works (i.e. - low level programming) is really just noise at the start. Teaching someone object orientation is problematic in the opposite direction.

    3) Your mileage may vary by age. A ten year old learns VERY differently than an 11 year old.

    4) You're probably a genious that learned to program by plowing through manuals and books and scouring the web. This makes you the exception to the rule. Most people do NOT learn this way.

    5) Not everyone will be good at programming, ever, but everyone can make it further than Hello World...they can make it to the point where they are conscious that they are _creating_ something.

    6) Most people benefit from immediate visual feedback. Teaching someone how to compile and link slows them down. Teaching someone to write to stdout slows them down. Slapping together something in Visual Basic and then showing them how to hook up responses gets them moving quickly, especially when they can hit F5 and see what happens immediately. VB adds other complexity, though, which makes something like LOGO better in terms of simplicity.

    7) Not everyone wants to be a coding god. Some people just want to see what programming is, some people _think_ they are l33t hax0rs but don't know shit (you always get these in large classes), some people are there against their will (parents made them do it, etc)...just keep it simple and fun. Most people won't take this to be the start of a career in software development.

    I used to teach programming courses for summer camps. Java is just totally inaccessible as a first language. I tried. Visual Basic actually worked very well. Object orientation is best explained by NOT explaining it (people will naturally understand what a "push button" is, but it's a waste of time to explain how it's "subclassed" from a "widget". These things can come later). Half the trick is not scaring them off in the first few weeks.

    If there was a free Logo package that didn't suck, I'd have used that (maybe there is, I couldn't find one at the time, but that was years ago).

    My response to it all was to develop Toby (http://icculus.org/toby/), which is a variation on Logo.

    --ryan.

    --
    Don't say, "don't quote me," because if no one quotes you, you probably haven't said a thing worth saying.
  35. FutureBasic by addaon · · Score: 1

    This may be a weird answer, but I learned with FutureBasic (version 3, I think) on a macintosh. First, let's get one thing out of the way: It's not basic. It's procedural, but it allows well-structured code. It allows really quick really powerful application development, but it's entirely coding, no silly point-and-build stuff. And I learned when I was eight; I had looked at C++, but I just wasn't ready for that yet. The editor is great (it's handling of tabs is still the best of any editor I've ever seen) and the usability is real. I really really really recommend it as the language for teaching children up to age 15 or so; beyond that I recommend Lisp, as the math (well, not math, perhaps formal logic) facilities are up for the task of Lisp, the learning is a bit more valuable, but creating usable apps is a bit harder.

    --

    I've had this sig for three days.
  36. REBOL by JDWTopGuy · · Score: 1

    I think REBOL would be a good beginning language because you can stick with it for a long time and it'll remain useful.

    It doesn't have the stupid limitations of BASIC. It's incredibly easy to parse strings, retrieve data from internet, do stuff with arrays (called blocks in REBOL), TCP/IP etc. It handles user advancement pretty darn well, going all the way to GUI programming.

    REBOL for Dummies is a very well-written book, although it's dated by a few versions. I strongly suggest reading it.

    You can get REBOL at REBOL.com. It's free and runs on a huge number of platforms.

    No, I don't work for them. :-)

    --
    Ron Paul 2012
  37. Good Luck! by Dunkalis · · Score: 1

    I first programmed with Microsoft QBASIC. I thought it was awesome, but I was a young kid at the time. Hell, I made some pretty cool things. Things have changed since then. When I was trying to learn C++, BASIC came back to haunt me. I did not understand even how to use functions and loops properly, so that was bad, and I gave up. Python, however, was so clear and simple I actually learned more about C++ using Python than C++!

    I recommend Python, since you can write some very good programs quickly and its just plain fun. I'd also recommend Scheme, simply because of the functional nature and the enlightenment they will gain from using it.

    Also try using PyGame after you get the basics down to give the kids something interesting and fun to do.

    --
    Slashdot is a waste of time. I enjoy wasting time.
  38. Scheme. by The+Cydonian · · Score: 1

    Everyone knows that good programming can only be taught using Scheme. Surely, kids can see the benefits of learning the statically scoped and properly tail-recursive dialect of the mother of all computer languages.

  39. PostScript by iankerickson · · Score: 2, Interesting
    Consider using PostScript as a teaching language for kids.

    I know, I know. Calm down, breath in and out, and put the flame-throwers away. Yes, PostScript is obscure. Yes, it's not a prepositional language (i.e. modifier before object, as in English), like Pascal or Basic. It's not even remotely "English-like". Yes, it's not a functional language, like C or nearly everything else. Yes, it's not object-oriented. Yes, it's not a fasionable language or one that will prepare kids for "the real world". There isn't even a bleeping "For Dummies" book for PostScript. Et cetera, and so on and so forth. Blah blah blah.

    But PostScript does have a lot going for it, due in part to its wierdness:
    • It's freely available and portable. Download Ghostscript and a viewer, and you're done. You can even use Adobe Distiller, if you already have it. (It's simple: type out an ASCII EPS in any editor, save the file as .eps or .ps, and drag-and-drop the text file onto Distiller. The interpretation will scroll by in the Distiller window and you'll get a PDF if your code is correct.)
    • You can download COMPLETE documentation that is well-written and loaded with code examples from Adobe and a few other places on the web. The Adobe books are named by color: the Red book, the Blue book, the Green book. Google for "Thinking in PostScript".
    • Postscript creates output kids can understand: pictures. You can do numeric results if you want, but basically the can program the computer to generate really cool pictures extremely easily.
    • They can print the results. Send the completed EPS or PS to the printer, and your kids get a hard copy of the results. It difficult to convey how satisfying this really is until you've done it. Even on a crappy printer, PostScript output looks really, really good compared to the image on a monitor. You can put the output on your fridge.
    • It's extensible. Add fonts, TIFF files, EPS files, or JPEG photos to a directory the interpreter can find, and kids can "call" them, like subroutines in a library. You could supply them with, say, JPEGs of their favorite cartoon character or rock star (What's the difference? Eh, Barney?) and they could write a program to make a montage, or a kalediescope, or an escher-like pattern from the photo(s).
    • It's interactive, if you get ghostscript. I think edit-save-compile-run-debug-repeat style IDEs are a little bit much for beginners. You want to remove all upfront obstacles to their playing with the language. With an interactive language, you can type code from the prompt and see what happens right away. That's what was so easy about BASIC on PCs from the 80s. The computers were so crude back then, most didn't have the free memory to support a modern IDE with seperate editor, interpreter, compiler, and debugger. It all had to fit in ROM.
    • PostScript is standardized. There are well-thought out, detailed specs for the language that have very reliable, nearly bug-free implementations. One non-obvious advantage of this is that code examples in PostScript from almost any book will work on your setup. Compare that to BASIC or (shudder) AppleScript, where it depends entirely on the version you have how much work will be required to rewrite the code sample into working code.
    • It's a real world language. Most printers, copiers, pre-press equipment and software, and all PDFs use PostScript for their inner logic. You can read the newspaper or a magazine together and look for fonts, rules, ligatures, transformations, and em-dashes.

    Printing and publishing are great "nerdy" hobbies for kids. I used to help my parents collate the books they wrote, photocopy hand-drawn illustrations on to the dot-matrix print-out from our Apple IIe, and trouble-shoot Apple Writer II and the printer. It turned out those skills (as prerequisites) ne

    --
    Democracy. Whiskey. Sexy. Pick any two.
  40. Not BASIC by dacarr · · Score: 1

    The Jargon file has an entry on BASIC. Quite frankly, I've not completely recovered.

    --
    This sig no verb.
  41. Many Choices by bpb213 · · Score: 2, Informative

    I have seen a lot of programming languages for kids around:

    1. Squeak. (Based on smalltalk). Graphical environment that has all sorts of 3d, sound, voice, etc stuff to play with. Everything is editable, down right to the squeak environment (of course this isnt mandatory, but can be done). Squeak kind sucks for professional work (its kinda slow, being an emulated environment) but is great to teach stuff on. Heck, it even has a part that kids can "program" without writing a line of code (using a visual paradigm that I dont have the most experience with, sorry). (oh, btw, squeak runs on all platforms)

    2. Logo. Yup, still alive and kicking. Also runs on all platforms. If you want to teach multiagent systems, then you can look into *Logo (star logo).

    3. Boxer. A mac only thing that has a lot of educational properties.

    4. Toon Talk. Oriented on the younger crowd. Uses a lego like code building process to solve missions. Only for windows i think.

    Any way, those programs should more then enough provide an educational start in programming to the younger audience.

    --

    This .sig looking for creative and witty saying.
  42. Yes To HTML by buffy_fan · · Score: 1

    Show them HTML - because it is forgiving, ubiquitous and has 'legs'

    It costs nothing to start, just open up notepad and IE/Moz and you are away.

    You can start almost anywhere with HTML and take it as near or far as you wish. You might just work out how to say "Hello World" and learn how to surf more effectively, or you might start exploring Flash, Java, Javascript, XML, PHP, Databases etc - Lots of directions to suit most tastes.

    Not everyone gets off on Knuth, and you can be productive and have fun without it. Most of us will never progress beyond a bit of scripting, but that can be enough to help us through the day.

    At school I took Basic, Pascal and C, but was never able to make use of them once the course had ended, because I didn't really know enough, or have an itch that those languages would help me scratch. Later on, I took HTML. Suddenly I had something I could play with and make use of. From that base I progressed into Graphics, Javascript, ASP then PHP, XML and Python. I found myself wanting to have a server to run these from and ended up getting into Tomcat, and then Apache, Samba and Linux - All because I got a foot in the door with HTML.

    "But you are a clueless script monkey with no training" I hear you cry. True. But once you have fudged a dozen or so web pages and sworn all night at your own lame Javascript, you start to hang out on line and listen to the artisans talk about how to do it all properly.

    Then you go back and rewrite your code (and rewrite, and rewrite), and take pride in it, because you see from personal experience, some consequences of doing it wrong. You develop the hunger for knowledge. I now find myself studying software architecture, XP, Patterns etc. Expert? No. Happy Hacker? Yes.

    Yes, you can get into bad habits if you don't start in a structured way, and I admit I was influenced by my previous experience of programming languages, but I reckon everyone can get crufty or outdated, wherever they start from. It is all about developing an enquiring mind and staying on the ball.

    Bottom Line: Learing HTML give you a foot in a very interesting door.

    Apologies if this is gibberish, It's late.

    1. Re:Yes To HTML by Bitsy+Boffin · · Score: 1

      HTML is a MARKUP language, not a programming language, it teaches nothing of programming only of markup. If you combine it, from the start, with something like ColdFusion, PHP or ASP that would be a good place to start, but HTML on it's own has no potential for teaching programming.

      --
      NZ Electronics Enthusiasts: Check out my Trade Me Listings
    2. Re:Yes To HTML by buffy_fan · · Score: 2, Insightful

      Quite Right, I guess I should have been more clear.

      The point I was trying to make is that HTML is a base from which student can explore in whichever directions interest them, and have something to show for it at the end.

      I don't know the students in question so there is no way I can know what will make them happy and capture their imagination. That is the strength of html. So many things can be associated with it, that there should be something for everyone. No, it isn't a programming language, but it can teach them something of structure, and it builds their confidence and competence while they work out what *they* want to learn about next.

      If you have decided that they will make great kernel programmers, fine, give them C. Maybe they will love it!

      *However* They might find that they are happy tinkering with Flash or playing around creating yet another content management system using client/server side scripting. Give them HTML and they have a forgiving environment to explore and play with. I reckon that is important.

      If the students really have a talent for programming, they will quickly outgrow HTML and find something to get their teeth into. If not, then they will still have some basic understanding of the web, and won't have wasted their time or yours getting disheartened and struggling with something that doesn't suit them (I'm making an assumption here that HTML is easier than any programming language, I reckon that stands).

      You can be an accountant without understanding calculus, and you can be productive with computers without understanding the subtleties of pointers. You can't assume everyone wants to or can become a hardcore programmer. The thing to do is to let them explore where their level is.

    3. Re:Yes To HTML by scubacuda · · Score: 1
      It costs nothing to start, just open up notepad and IE/Moz and you are away.

      And if they misbehave, threaten to make them do everything in vi.

      If they complain, start quizzing them on all the shortcuts.

  43. calculators, maybe? by bigreddog81 · · Score: 0

    Well, the way I started out was by learning how to program my TI-83 Plus, first in its built-in BASIC language and then in z80 assembly. But, that may not be the way to go, as TI-BASIC is really limited and doesn't really teach you much (though you get more from learning TI-89 BASIC, as it's more complex), and z80 ASM tends to be a bit tricky as a first real language... (Though it made me enthusiastic about learning other languages because they seemed so much easier :-P)

    --
    In theory, there is no difference between theory and practice. In practice, there is.
  44. QuickBasic by dotgod · · Score: 1

    I don't care how many people say it teaches bad habits....I think quickbasic is a good way to start. it picks up syntax errors as you type and it's a good way to introduce functions and teach them the basics of writing algorithms.

  45. MOD PARENT UP! by Anonymous Coward · · Score: 1

    I second the vote for Python.

    Python has already found a place in some high-schools - and has been a wild success. It's popularity exploded far quicker than they imagined. I became a python convert after about 20 minutes of following a few excellent tutorials one rainy sunday afternoon. I found myself writing incredibly useful little scripts for almost an entire week. Try it and you'll see how easy it is to learn. It should be a piece of cake for intelligent kids.

    Other people have mentioned Visual Basic. Well, okay - but Visual Basic doesn't concentrate on the guts of the programming. Students are more likely to splat buttons down on a form than produce anything useful in terms of knowledge of program flow, code and algorithms. I should know - that was exactly what I did when I was learning (at the age of about 14, I'm now 26) - I found I did so much more with QuickBasic for DOS than I ever did with VisualBasic 1.0 (in which I'd sit there designing huge GUIs that I excessively tweaked, promptly lost interest in and never wrote any code for them).

  46. If you want some expert advice... by xenephon · · Score: 2, Informative

    Seymour Papert, who holds the Lego chair for learning research at MIT (and who created Logo) wrote a book called the Connected Family which addresses this issue. The book is available at amazon, and there's a companion website. In a nutshell, he recommends using meaningful projects to teach programming concepts in an environment like that provided by Logo.

  47. Kids pick this stuff up automatically. by wackybrit · · Score: 1

    You don't need to molly-coddle most inquisitive children on technical issues. At a young age they WANT to learn technical stuff, and they find it easy.

    Back in the early 80's, my parents gave me a computer in reward for learning to count to 20 (the number of stairs in our house). I don't actually remember this (I was about 3?) but supposedly I just played games on it and crap for a while.

    However, I do remember that I was programming when I was 5. Sure, it was crappy BBC BASIC, and my programming was all:

    IF PRINT

    Hardly any understanding of loops, GOTOs everywhere, but it was a start. I don't remember my mentality as a child, but I must have been interested in it to continue with it and to play with it.

    I started to learn 6502 assembler at age 7 (there was a thread about this on here a few days ago!!), C at 9, and then, bizarrely, I stopped programming for a while.

    Now, at 21, I'm a full-on Perl programmer. So perhaps my story is not that great, cuz they could end up as quiche-eating bearded Perl programmers, but you hopefully see my point ;-)

    I'd personally recommend Perl as a starting language. I'm biased, but I think it has the flexibility and weak syntax that kids need. There's 'more than one way' to do everything, and you don't have to declare variables and crap. It's like a modern day powerful BASIC.

    It's not like they need to be doing regexes on the first day either :-)

    1. Re:Kids pick this stuff up automatically. by wackybrit · · Score: 2, Interesting

      Just incase it sounded like I was blowing my own trumpet in the parent post, I wanted to point out that I haven't become some sort of master coder simply because I started early.

      Infact, I've met coders with just a few years' experience who can kick my ass. Despite the early grounding, it appears I turned into a generalist rather than a specialist. Perhaps this proves that nurture is not everything..

  48. HTML and PHP by gozar · · Score: 1

    We just started a programming class at our high school using HTML and PHP. This is our first programming class and it has been a resounding success. The students are learning something that they can immediately put to use, and they'll be able to use it almost everywhere. It is very cross platform, all they need is a text editor.

    A good side effect is that we can help teach website design. Hopefully 20 less crappy websites when these students go out into the world.

    --
    What, me worry?
  49. Real life preparation by scubacuda · · Score: 1
    To adequately prepare them for real life working environments, put the ones who know the least about programming in *charge* of the smart ones. Call those in charge managers.

  50. Feedback and Showing Off by eddy+the+lip · · Score: 2, Interesting

    Interesting that this question comes up now, as I'm just starting to teach programming to a 12 year old.

    One of the first things that I worried about was what language to use. After some thought, I decided that as long as a few guidelines were followed in language choice, it didn't really matter. The most important things were:

    • rapid feedback. Children are remarkably curious (at least based on a few flammable experiments in my parent's basement), but they also like instant feedback. They need to see results, or they'll lose interest.
    • give them something they can show off. Being able to go to their friends and say "look at the cool thing I did" is great incentive.
    • avoid theory like the plague. "|| is logical OR and does this..." is boring. "if($friend == 'tracy' || $friend == 'brent') { print "bugger off!"; }" is fun. And better than "hello, world."
    • simple environment. They're learning a language and a new way of thinking already, no need to make them learn some complex IDE as well.

    Language considerations came from that:

    • "rapid feedback" and "simple environment" meant a scripting language (no compile step), and a text editor. A side benefit of this was portability. I can teach on my linux box or her windows machine.
    • "showing off" meant something web based. She already knows HTML and maintains more websites than I can count, and a lot of her friends are online. She linked her first lesson from her homepage, so this seemed to be a good decision.
    • ability to use a subset of the language. I wanted to jump into making stuff right away, rather than spending three lessons getting up to speed on language requirements.

    This all translated into a text editor, PHP and assignments uploaded to her site. I seriously considered Perl and Python (especially Python - as it turns out that would have been very handy for teaching proper style. The concept of whitespace and proper indenting is surprisingly difficult to instill ;) ). PHP isn't my favorite language for a lot of reasons, but it's fine for teaching control flow, logic, data structures, modularity. It was handily available on her server, and meant she could show her work to her web friends right away. Python might be better in a classroom situation, because there's a pool of people with a similar environment that work can be shown to.

    At any rate, we're only three lessons in, so this is still in the expermintal stages. But if you're interested in swapping experiences, reply to this and I'll leave an email address.

    --

    This is the voice of World Control. I bring you Peace.

  51. Game mods by Imoen1337 · · Score: 1

    I know I learned a lot of logic *before* I tackled any "hard" programming languages by writing game mods. Even if there is a graphical tool involved it's usually easy to see a fun result, and there are always games like Neverwinter Nights that combine a graphical editor with underlying code. And hell, you get to play games!

  52. Teach them the true purpose of Computers ... by Glonoinha · · Score: 1

    First person shooters. Start them out with Doom so they can appreciate the concept, them up to Duke Nukem 3D, then Quake, Quake II, Q3A, Unreal Tournament and UT2003, CounterStrike.

    Hacking. Get his older sister a SprintPCS phone and the next month take him to SprintPCS - show him how to put in her phone number and the default password and get a complete list of all the people she has called, times and dates. Show him how to go onto her computer and read her AIM logs, look through her Internet Cache for pictures and how to re-open the html files there to see what she was browsing.

    Warez. Show him how to find PhotoShop on UseNet, download all 18,000 parts of the file, where to find the two missing parts, then UUDecode the file. 'Splain him how to check it for virus and other malicious code then install it.

    Pr0n. While in UseNet, hit A.B.P.E.* and introduce him to Aria Giovanni, Nikki Nova, Erica Campbell, and Kitana Baker.

    A kid really needs to know this kind of information if he is going to get ahead in today's economy. Once he understands how the world benefits from computers he will eagerly want to be a 'computer guy' - and these are all necessary skills.

    --
    Glonoinha the MebiByte Slayer
    1. Re:Teach them the true purpose of Computers ... by JDWTopGuy · · Score: 1

      You forgot the most important one!

      <joke>
      Slashdot. Teach the kid the fine art of karma whoring. Or maybe even trolling. It's great for the ego! Teach them to turn on the "show link target" option so they don't go to goatse.cx. Teach them about the insensetive clods chasing Natalie Portman with a bowl of hot grits through soviet russia while you build a beowulf cluster of CowboyNeals.
      </joke>

      I can't believe you forgot this.

      --
      Ron Paul 2012
  53. Mathematica by wispoftow · · Score: 1

    This is a reasonable set of criteria. With this in mind, I would say that Mathematica (http://www.wolfram.com) meets each of the above requirements. Note that cost was not one of the criteria.

    Interactivity:
    The programmer opens a window much like a word processor and types commands, presses the enter button, and the result appears. Push the up arrow or click on the line above, and you are back to where you started.

    Feedback:
    Visualizing Mandelbrot sets is much cooler than "Enter a name:" "Thank you for your input, NAME" (shit, i forgot the $ and the \n).

    Growth Potential:
    One doesn't need to "learn" what an object is (~everything~ is an object in Mathematica). In the beginner's life, most things, except emotions, have probably been thought of as objects. Move this graph here. Make this graph red. Make this picture of grandma that i scanned in psychadelic colored.

    Easy to use:
    Very easy to use Mathematica

    Plot[ Cos[x], {x,-Pi, Pi}] --- mathematica
    vs.
    program plot_for_me
    real, parameter :: pi=3.1416
    integer, parameter :: npoints=30
    integer x
    real :: xpoints(:)
    allocate(xpoints(npoints))
    do x=1,npoints
    xpoints(x) = cos( whateverthehellitis )
    end do

    call plot(xpoints) -- if you are lucky, and your plot
    routine doesn't require other parameters
    stop
    end program plot_for_me

    I mean, come on! I want to teach my ten year old how to program! Perl, python and their ilk are a more pleasant mix of the two.

    Flexibility:
    The above example doesn't tell the whole story: Mathematica, too, has a fullblown C-like syntax available. Object-oriented and procedural programming are both welcome. Then let the learner fall in to their own natural way of setting up and solving problems with a computer.

    BTW, it might be slow, but one should have the mindset that you ~can~ ~do~ ~it~ with Mathematica.

    Real World Applicability:
    Mathematica is a tool that is available on all platforms. There are excellent student discounts available, both K-12 and college. If the learner goes to college, Mathematica will be there. There is a copy in nearly every physical sciences computer laboratory.

    In conclusion, we should not automatically think of programming as being necessarily being "do loops" and "inheritance." All learners comes from the same background: they do not know how to program. I say you teach something that meets the above criteria, plot some cool pictures along the way, and let the student decide how much he wants to immerse himself into the nitty-gritty of telling a computer what to do. The learner might fall in love with it, or might realize that it's not for him.

    High-level language, lots of functionality, and the ability to express yourself in many ways. Mathematica fits the bill, as might other math suites.

    1. Re:Mathematica by Piquan · · Score: 1

      I agree! Mathematica is certainly a good choice. (I used it quite a bit in my younger days, and once wrote a paper to teach programming in Mathematica.) I haven't used it in many years (about eight, I think), so I don't know where it's gone since I started.

      In case it didn't show before, I'll say that I'm a Lisp fan. Mathematica is actually more or less descended from early Lisp, and it shows in several aspects of the language. (I seem to recall seeing Car and Cdr functions, which are trademarks of Lisp.)

      From what I recall, Mathematica is principally a functional language with strong procedural capabilities. I don't remember any object-oriented stuff, but I was using Mathematica before OOP got popular. Could you fill me in a bit?

      I'm not sure how applicable it would be to children, though. While the language is complete, it is weighed heavily towards the mathematics.

      Note that your "ease of use" metric applies to many other interactive languages. In Scheme, for instance, (plot-function! cos -3.14 3.14) works fine.

    2. Re:Mathematica by Piquan · · Score: 1

      Note that cost was not one of the criteria.

      Oh, I'll add: For those looking for a free (beer and speech) alternative to Mathematica, take a look at Maxima. It's certainly not as polished as Mathematica, by any stretch of the imagination. I wouldn't recommend Maxima as a teaching language, but for somebody who just needs a symbolic integral now and then, or is toying with cryptosystems as a hobby, or whatever, it's good stuff.

      Again, Mathematica has a lot more than Maxima these days. If you're a student or professional, I highly recommend Mathematica. It also can potentially make a good teaching language, particularly among groups with solid math backgrounds. I can't say enough good stuff about Mathematica. But if you want to do some quick amateur work, Maxima is a great thing.

  54. Smalltalk might be good. I'd suggest Lisp by budgenator · · Score: 1

    I remember from decades ago (in Byte magazine)the teaching of children what they called turtle graphics, it was basicaly a visual represetion of smalltalk or lisp especialy for kids. This was for kids in the 5-6 yr old range and up, they had great suscess teaching the kids commands to make the tutrles move, to commbine the movements into more complicatated functions lots of basic logical computer concepts. It made sliding them into a more formal language later much easier.

    --
    Apocalypse Cancelled, Sorry, No Ticket Refunds
    1. Re:Smalltalk might be good. I'd suggest Lisp by Jellybob · · Score: 1

      I did some work in a primary school last year, keeping their machines running (while being undermined by the official IT support people at the council... but anyway), and they had a bunch of what can only be described as plastic blobs, about the size of a football, but flatter.

      The cool thing though was that they had a control panel on the top that allowed you to input Logo programs, and then they'd trundle off around the room following you're program :P

      This has just reminded me how much fun it was to "check the batteries" (s/check the batteries/write stupidly over the top programs/)

      You could even get them to output musical tones if you could be arsed.

  55. penguin, uhm, turtle graphics by perl_scrip · · Score: 1

    I am working on a library to help newer programmers get started with programming. The first section uses something like turtle graphics, but it is all written in and controlled with python and pygame. The first game is pong. There are also a bunch of demos and a couple of other games with the distribution. It is available at: http://www.nongnu.org/pygsear/

  56. Creating by shannara256 · · Score: 1

    I was actually thinking about this topic the other day, so here's what I decided.

    I would start out by having him (male for the sake of simplicity) play old games... games like Jetpack, Al Lowe's games, text-based games like Tradewars, Zork, Adventure. There are three reasons for this: One, these are games I remembered playing as a kid, and loved. It'd be great to rediscover them through your kid's eyes. Two, they're cheap. Every single console cost $100-$200 when it came out, with its games costing ~$50. These games are all free (and if they're all your kid plays, then he won't even know what he's missing until he gets to school). The third reason, which is the most relevent to this discussion, is that all these games would be very simple to code. If he plays and enjoys text-based adventures, it'd be much easier to code Tommy's Adventure than it would be to code Super Mario World 1024.

    So, once he's been enjoying these games for a while, I'd ask if he wanted to make his own. For starters I'd just ask for a description of the game, which I would then code. Three reasons: one, it'll be easier for me to make the game than to teach him to program (when he's still very young); two, he'll learn the value of writing design documents; and three, when he's ready to start programming, he'll have ready access to the source code to games that he's designed.

    Of course alongside all of this I'd be giving him constructive toys like Legos and encouraging him to create. Personally, problem solving is easy for me to do, but completely original design is quite a bit more difficult. Learning that would be much better than simply learning to program: it'd give him motivation to program.

  57. Pascal by minkwe · · Score: 1

    Afterall it was meant for teaching programming.

    --
    "Fighting terrorists with millitary might is like killing a mosquitor on your Dad's forehead with a rifle."
  58. Turing by Clubber+Lang · · Score: 1

    Isn't a half bad choice if you can find a copy.

    The language was designed for teaching, and I've found that it does a good job of enforcing concepts. For example in BASIC the = is used both as assignment and comparison, while in Turing you use := for assignment. (just one example)

    Syntax-wise, Turing is pretty much Pascal with a few tweaks to it, so it's not nearly as difficult as grasping something like C right off the top. Even better would be something like OOT (Object Oriented Turing). Like C++, it can handle regular Turing (C) code, but if you get to the point where you want to introduct objects then they'd already be in an environment that they're familiar with.

    Basically, I would thing that you're looking at LOGO, BASIC, Pascal, Turing etc... but if you're looking to teach, it's hard to go wrong with a language specifically designed for teaching.

    --
    Actuaries - making accountants look interesting since 1949
  59. ? Python ?Perl ?PHP by Sad+Loser · · Score: 1


    From an educational viewpoint it is early success and plenty of positive re-inforcement that is critical.

    Therefore the most important thing is that you (the tutor) should pick a language that you know well, so that you can help them debug, which is actually the most critical skill to learn.

    Python is good, but kids know understand web pages, and if they do something cool, then they can upload it, and their friends can see it. This gives them the peer approval (positive reinforcement) that keeps them going.
    Therefore I would chose a web-based language - any of the above would be good but for me, PHP is the pick.

    --
    Humorous signatures are over-rated.
    1. Re:? Python ?Perl ?PHP by GnuVince · · Score: 1

      Yeah, PHP would really help. I mean, not much fun seeing a Python program in console, while a kid could really enjoy seeing his own program on the web.

  60. Stack based languages by Mr+Z · · Score: 1

    Stack based languages are cool for some things. I love my RPN calculator -- it's a lot more efficient for typical computation. After using one, I feel my brain contort when I try to use a standard algebraic calculator. It's as if I need to figure out how to "engineer" my expression into the constraints imposed by order of evaluation.

    One word of warning, though: Stack-based machines have scalability problems when you try to make things high-performance. That's due primarily to the inherently serial nature of stack accesses. The stack becomes an artificial synchronization point for otherwise independent operations. Sure, you can use fancy techniques in order to reconstruct the original directed-acyclic graph (DAG) of instructions from the series of stack operations, but wouldn't you rather just start with the DAG to begin with? With a register-machine model, each register is essentially an edge (or set of edges) in the DAG. Much more direct.

    Ahhhh... but I digress.

    As for first programming language: I agree, good I/O (including graphics, and some easy way to do both blocking and non-blocking input) is key to retaining interest. That's why LOGO and (old fashioned) BASIC are so good! It's easy to make it "do things", where "do things" is defined as stuff happening on the screen.

    I wouldn't wait too long, though, before introducing your budding programmer to something more industrial strength. It took years for the dain brammage that BASIC gave me to subside. Even Pascal wasn't a complete cure. C was much better, since it's a language that's strong enough that it can implement the bulk of its own standard library within the language.

    You can't do that with Pascal. You can't implement write/writeln within the language. You can't even write a function that accepts parameters in the same manner as writeln. In contrast, printf() is written pretty much entirely in C, except the final system call to hand the text off to the OS.

    From that standpoint, C was a big step forward for me. It was the first language where you could really do just about everything yourself if you wanted to. You didn't have to rely on the compiler author to think of it ahead of time and provide a function for it in the language. Compare/contrast to BASIC, where the graphics commands are part of the language. Thus, I'd say that you shouldn't shield your kids from that sort of 'general language' for too long, otherwise the damage is hard to undo.

    Now, on the topic of assembly language: I'd say 'Go for it', but only if your kids show interest. I learned assembly language from beginner books, teaching myself 9900, 6502 and eventually 8086 assembly language on the way from middle school (~6th grade) through high school. (In college, I learned 6805, 8052, and baseline 80386 assembler as a part of my course work. Nowadays, I program VLIW assembler on TMS320C6000 DSPs.) It really gave me a good feel for how the machine actually worked, and gave me a better appreciation for why MHz != performance. (A 1MHz 6502 beats the pants off a 4.77MHz 8088 on most typical tasks.) Having that level of appreciation for the capabilities of your CPU will lead to a much more informed and conscious programmer, longer term. Well, at least, hopefully. Especially if your kid tries to implement even something as simple as "printf()" in assembly language. :-)

    --Joe
  61. Two possibles... by cr0sh · · Score: 1
    My first suggestion would be Javascript - if the computer has a relatively recent browser, it will have the interpretor with it - editing takes nothing more than a text editor. Error checking and debugging will be a problem, but no more so than early BASICs, IMO - plus, they can learn HTML and a bit of web design.

    My other suggestion is Blassic - a "classic" BASIC language, GPL'd and everything. There are a ton of examples, though some take a little muddling through in order to understand since the variables and such may be in spanish (understandable, considering the author). There is also little documentation - the author doesn't keep his list up-to-date - I ended up checking each keyword functionality and writing the contributed reference, but it will get out of date over time, though it should still be OK for the current version online. I have found most old style code works with it fine. Your only problem will be in finding that old code for the kids to type in (no more magazines of old, unfortunately) - check your local libraries, and EBay, and used book stores until you find something (for kids, there was a series of books in the 80's published by Scholastic called "Micro Adventures" - hard to find anymore - also look for David Ahl's "Basic Computer Games" series).

    Basically, you will want the kids to type in code (whether they understand it or not) to get a finished "example" - and if it has bugs, they will need to look and see why, and figure out how it works and what is broken. So, you need examples of this, plus the keyword reference, and a book on learning BASIC...

    --
    Reason is the Path to God - Anon
  62. LOGO by Will_TA · · Score: 1
    I taught ICT in a school for a year, and to teach the most basic programming concepts, to young children I found that logo was easily the best, since it was so visual. Things like We have this program called House. House has something which we call a varible. The varible controls how big a house we draw and then giving them demonstrations of House 10, House 50 and House 100 so easily explains what varibles are to young minds.

    For serious, older programmers - 14-18 teach an OO language. I started on Ada, then moved on to Java.

  63. Dump them off the deep end by Anonymous Coward · · Score: 0

    Look where the dollars are! This is where you want to put them!

    I recently bought my 5-6 year old step sister Visual Studio.Net professional and insist that she access to Linux and Unix Type systems.
    All be it she has not used it, yet she talks about it from the day I gave it to her.

    Ya aleast she has had the opportunity to work with todays systems in her years of question & interest.

    Dumping them off the deep end will make them familar with the technologies available today as they have grown up with it and give them reason the question technology and the way computers operate as of the reasonably annoying DOS conspirasy
    You have to have used every thing available to make a standout today and anything else would be sheltered.

    Ya this is my opinion anyhow and what possibly could have helped me in programming idea's, as I can't think like I used too.

  64. Advanced students by vasqzr · · Score: 1


    I don't know, when I was in high school I sucked at Math, I barely passed Calculus (mostly due to the fact our teacher died and we had a sub for half the year and all we did was have pizza parties and watch movies)

    But, I took to programming (Java, VB, C, Pascal) very well.

  65. damn you by Anonymous Coward · · Score: 0

    Why did you have to bring up Karel? That language sucks. They taught that in my College intro to programming class and I had a hard time with it. I can do Perl, C++, HTML, and Basic but Karel was so oversimplifed, I couldn't get all of the punctation for some reason. Maybe cause I am used to debugging on a computer which will tell me that I have a mistake and in class we could only use paper and pencil. Then again that was probably the better way to learn anyway.

  66. CMU's Alice by useruser · · Score: 1

    Check out Alice, a free gift from CMU's Entertainment Technology Center. It aims to provide a strong first exposure to programming.

  67. The authoritative answer. by valkraider · · Score: 1

    As a parent, and as a programmer - I can give the most final answer we all need.

    Don't. Start them early on Law, and get them into law school. Programmers are unemployed. Doctor's can't afford to stay in business. Small business are risky. Middle managers get laid-off. Lawyers always have high paying work. Especially in Michigan I hear.

    Allright, before you mod me off topic - you can go ahead and teach them some real basic VB/Access skills so that they can then be lawyers in the tech industry, and maybe even politicians who write laws themselves some day!

  68. The best language? by Anonymous Coward · · Score: 0

    I'm not trying to start a 'language war', but that does enter into it. Should I start with a scripting language?

    If you want your children to have a real, not imagined, advantage in the world, teach them a foreign language: Russian, French, Greek, Arabic, Japanese... You get the picture. What value is knowing how to program a computer when you can't communicate with most of the population of the world? Besides, it's a lot easier to learn languages as a child, and may increase a child's mental faculties in other, less obvious ways.

  69. Peter programming language by daiajo · · Score: 1
    gemtree has a grapical iconic tree shaped language that is very easy to follow, cute to program with, and has an easy setup to drive Peter & Lucy (rabbits) around a square grid.

    The lite version is free & great for kids.

    No arrays, sharing of functions between programs, structures, object oriented concepts, ... so very dry for an experienced programmer.

  70. Re:Pascal (for static Algo, ...) by n2kra · · Score: 1
    Pascal - Afterall it was meant for teaching programming. for the statically type Algo family.
    And Scheme was meant for Teaching also. (I was going to say everything else but that's Common Lisp)
    Not every kid a l33t haxor (another post)- how about Logo in CL, then the kid has something to break through to, if not that's OK also.

    Single Paradyme (ST - OO) languages teach you what happens when they get to their edges, when you need singletons, multiple inheritance, or something completely non-OO(that paradyme).

    Funny you should match it up with this tagline -

    // "640K ought to be enough for anybody." -- Bill Gates, 1981

    All that nice (Xerox PARC, others?) research in the 60's realized the need for a minimum "1 Meg Workstation". 1 Megabyte (real, backed by VM) RAM, 1 Megabit Network, 1 MegaPixel video. We have far exceded (except video) and still have to manage memory, check bounds manually, etc...

  71. END COMMENT by KlaatuVN · · Score: 1

    Hey.. Thanks for all the help guys.

    I just wanted to say a few things in response to all your comments.

    1) They already play enough of Counterstrike, Pokemon online and whatever holds the teens' attentions these days.

    2) They are 12 and 15, so I decided to skip LOGO and move onto Python (all you python nuts can cheer now).

    3) Since I don't know Python, I guess I'm going to have to learn it.

    4) I always suspected I was a genius, but I thought most people were this smart.

    -KlaatuVN

    --
    echo .sig