Forgot your password?
typodupeerror
News

Ask Slashdot: Software for Youngsters? 168

Posted by Cliff
from the ecouraging-the-next-generation dept.
Maniacal asks: "I was wondering if there were any games or software programs out there that could keep a kid's interest while teaching him or her the fundamentals of programming. There are plenty of learning games out there but I haven't seen any that cover this area."
Maniacal continues...

"When I was a kid in the 80's, the only way to get your computer to do anything was to write programs yourself. So, with BASIC book in hand, I spent hours upon hours out my eyes and teaching myself to program. Computers today have to many things to keep a child interested so that type of exploration is gone. If there aren't any such programs available, then any suggestions about a good language to start with, basic books that a 6-10 year old child could understand, and/or inexpensive compilers would be appreciated."

I remember programs like Logo (which could be considered a language, too) and games like Zork which kept my interest in computers when I was growing up. One concern is that today's games are more distracting, focusing on the environment provided by the game, as opposed to interesting, which focuses on not just the game, but on things external to it as well. Any comments?
This discussion has been archived. No new comments can be posted.

Ask Slashdot: Software for Youngsters?

Comments Filter:
  • by Anonymous Coward
    I agree with Cliff's addendum but I'd like to amend the question:

    I want to know about books/programs that will get ANYONE into programming. I know two adult females who are interested and able but not knowledgable.
  • by Anonymous Coward
    Definitly check out Alice. it's at;

    http://alice.cs.cmu.edu/

    It is an authoring environment for 3D worlds,
    aimed at beginners, to teach programming. It uses the Python scripting language which is a good OO language. I also agree with the mindstorms bit, I remember writing Lego/logo programs on an Apple in high school. Cool stuff.
  • by Anonymous Coward
    For adults and older kids I'd suggest the "Little Schemer", used with DrScheme, a "smart programming environment". For information on DrScheme see http://www.cs.rice.edu/~matthias/SmartPE/ . You might also be interested in the TeachScheme! Project: " To teach with Scheme, students only need to learn about five language constructs. Then they can design and implement compact simulations of ping-pong, lunar landers, hangman, and other (graphical) programs. The effect is that students focus on problem solving and not language details." See http://www.cs.rice.edu/CS/PLT/Teaching/ and http://www.inf-gr.htw-zittau.de/~wagenkn/Natasha_C hen.html.
  • by Anonymous Coward
    despite the violent-sounding name, this game is
    about robots (strictly robots) trashing each other
    with guns, missiles, etc. on the moons of jupiter.

    the trick is that the game player programs the
    robots' AI using a sort of visual programming
    language-like environment. you can test your
    programs against each other, against the computer,
    or against programs by other players.

    it may not be a kids game (there is a strategy
    element to it) but i know at least one
    non-programmer who has gotten interested in
    programming after playing this game.
  • IRIX 6.2 and 6.5, Communicator 4.x. Also does it on my linux and FreeBSD boxes at home.

    - A.P.
    --


    "One World, One Web, One Program" - Microsoft Promotional Ad

  • Posted by Bocharn:

    I think the kid should select himself if he wants to do programming or do anything else.
    I started with playing games on Commodore. I could
    stop the loaded program and modify the BASIC code so that I have more lives in the game. As I grew older the love for programming grew by itself.
    Bocharn.
  • Posted by James Crowson:

    Just because C is the most widely used doesn't make it better. I mean you have to edit a bunch of unstructured, chaotic source code, then save it, compile it, link it, and then run it *just to test one function*. Ick.

    And don't even get me started on having to know beforehand how much stack space your program will use.

  • Posted by Rumball:

    First, a little history...

    When I was a kid of about 7 or 8, my parents bought me and my brother an apple2 clone, the Laser 128K. I loved that thing to death. I spent hours tinkering in the native OS. Then we found an old copy of Apple Dos3 something, I forget the actual name. Anyways, the point is that I spent many hours on this thing, thinking up new and interesting things to write. I wrote my own simple RPG games, experimented with Graphics, creating my own interface to the OS,a slightly graphicalized and hotkeyed one (shame on me!) as well as a rudimentary password system!

    When I look back, I am quite proud of those moments. Albeit they didn't take a lot of technical skill to accomplish what I did, what it did require was a little imagination. With a good idea, it seemed anything was possible.

    I think that if you want to give your kids, or children in general, an opportunity to become familiar with computers, it has to be something that sparks their imagination. For most kids, this doesn't mean throwing them in front of a computer and say :"ok, here's vi, here's gcc, have fun". Not to look down on children, but this is past "most" children's ability. Face it, C is hard. Most "real programming languages" I saw referred to earlier are just too complicated for a child of 6-10 to learn, at least for starters. Complicated syntax, data structures, as well as overall program design in these langauges are tough, and definately nowhere for a 6-10 year old to start out on!

    I'm not demanding that you buy your kids an old Apple][ and a ProDOS disk, although that could hardly be a bad idea :). I think most windows computers come with Qbasic or something, which may or may not be a good place to start. I've never seen the documentation for it, so I wouldn't know. Kids need good documentation. However, there are a lot of alternatives: HTML can be a good place to start for young kids who know about the WWW. It is sort of like a natural progression because it can lead in to things like perl, javascript, and even graphics design. When they have some more experience, perl might be alright, however the syntax is still quite complicated. Some games are good. Text based adventure games are good for developing a familiarity with computers. nethack, ancient angiush,etc, are good, but I'm honestly not sure how that would sit with today's kids, especially if they have tasted things like Final Fantasy 7 and so on.

    Anyways, there is no definate answer. If you want your children to like computers, you sort of have to put yourself in their place and try to think what they would like. Some kids might like the challenge of learning C, others might enjoy BASIC, HTML, whatever. Just make sure that you focus on developing their imagination, that is the most important part.

    -Rumball
    PS. In case you're wondering, the Laser 128/128EX came out sometime around 1987 and was one of the only apple 2e/2c clones that I know of. ( that's 128K!)
  • Posted by fotang:

    uses Guile (www.gnu.org), a Scheme implementation.
    Have played it a few times. Not bad if
    you want to have some fun with Scheme.

    --
    Some idjit rm ~/.netscape/cookies..what is my passwd?
  • Obviously your used to a static scope language. Dynamic scoped languages are older, and much more interesting. Who wants to pass be reference when you can really confuse everyone with uplevel (or is it upvar) tricks.

    I'll agree that static scoping is a lot easier to program in, a lot easier to read, but it isn't the only way, and you should be exposed to dynamics scoped languages a little just because once in your lifetime it will be useful.

    I've programed my 10k lines of TCL/TK, and for the tasks I was doing it was great. Yeah, C has good points, but TCL worked, was easier to program and more readable then your average perl script. Is it a perfect langauge for every task? No, of course not. Is it useful and easy to use? yes.

  • I once worked on a project that made a Java-applet to teach programming. Basically it's this GUI display where you write a program that creates a world and some robots, and then has them walk around and do stuff (kind of logo-like).

    You can poke at it at:
    http://www.kluge.net/mqp/

    (there's supposed to be a www.robotl.com, but it seems to have gone away.)
  • by Ian Bicking (980)
    UCBLogo is the only real Unix Logo out there. It does standard Logo stuff, mostly with turtles. It's GPLed.

    MSWLogo is an extension of UCBLogo that includes a lot of more graphical things, but it only works on Windows :(

    I also recently saw a bit about a Java version of Logo. You can find more about that at here [caltech.edu].

    I'd highly encourage teaching Logo to a child. It's a great language, far far better than Basic.

  • by seth (984)
    LegoMindstorms are perfect. The language is a visual and reimisent of Logo. The software and product was designed by the same people (Papuert (sp?)) who designed the original logo teaching language.
  • Logo is a great little language. Dont cut it down. Its a functional style language that makes a great introduction to something like scheme. I suggest logo, then scheme.
  • Yep! I bought 2 of them as they can talk to each other. This mixes robotics and computers together. Haven't got the hang of their lang yet, maybe your youngster will. Got a couple neat robots running around the house fscking with the cat. Now need to figure how to get them to rise over all the wires laying on the floor.

  • Nothing teaches structure, style and discipline like professional music lessons and hours of practice.

  • I think a better approach would be to provide the opportunities (like have a machine available, and maybe some good tools), and let the kid decide for him/herself whether s/he wants to become a programmer? Give the kid time to be a kid, and time to find out what s/he likes and dislikes.

    My step-daughter is 13, and not at all interested in programming, but through her own interested decided she wants to build some web pages. Now she's reading up about Javascript and doing image maps and all sort of stuff. I hope this leads to an interest in technology because she's smart and could be a good engineer/programmer/whatever, but if it doesn't I'm not going to push her.
  • by jafac (1449)
    Don't teach your kids programming.

    Teach them math, and they'll feel the urge to learn programming eventually. Programming should be a means to an end, not an end.
  • My old LISP teacher explained that people who's minds had already been trapped in the procedural way of thinking, by C, Pascal, whatever often found it difficult to get the hang of functional languages like Miranda, Scheme, LISP.

    Conversely, moving from functional to procedural is less of a wrench, and the resulting procedural programs are likely to be more elegant.

    Also, newcomers (I'm told) find functional languages easier to learn "cold" than procedural.
  • by Stratus (1790)
    Remember Logo? You give it commands like:

    REPEAT 36
    GO SQUARE
    RIGHT 10
    NEXT

    END

    # SQUARE
    REPEAT 4
    DRAW 100
    RIGHT 90
    NEXT
    RETURN

    ...and it makes neat pictures. It's what sparked my interest in programming.

    There's a web version at:

    http://www.sonic.net/~nbs/webturtle/

  • Well, if you look at the HTML code, you'll see what's wrong - the problem has to do with how one's browser interprets "width=100%" in an image tag that's inside a table. The image is the little image http://images.slashdot.org/sbs.gif [slashdot.org] - this image forms the bottom of the title bar (in this case, the "Ask Slashdot: Are There Computer Programs Designed to get Youngers Interested in Computers?").

    Now, this little image is given a table cell (<TD> element) all to its lonesome. The desired effect is that this image fill up the entire horizontal width of the table cell (hence the width=100% in the IMG tag). Unfortunately, Netscape is (incorrectly) interpretting the 100% as relative to the table one up in the nesting hierarchy, making that image too wide, which then screws up everything else.

    The workaround that most slashdot pages employ is to use this image as the TD's background, instead of having a 100% image tag inside it. This is rendered correctly in Netscape.

    And good lord, you do not want to run weblint on slashdot-produced code. I shudder at the prospect.

    I think the Rob's made the code available, though - some aspiring perl hacker code get their ten minutes of fame by giving that code a thorough cleaning; it really needs it. (And while they were at it, they could make the HTML output have linebreaks every now and then so that bugs would be easier to track down)

  • There was a shareware program called Combat Zone for windows, came out 1994 IIRC, that had you programming some robots (in ROBOL) to do things like turn, use radar, move and shoot the hell out of other robots. Nice and simple, in some ways too simple. This was written by guy who yearned for something similar to what he learn't to program on way back. I've looked for similar things for ages and finally noticed on freshmeat something called RealTimeBattle which is a Linux rewrite/extension of a similar thing for windows but isn't Combat Zone. You can program for this Linux one in any language (examples in Perl, C++ etc) and the program tries to use real physics for accelerating, turning etc.

    So there's at least 4 of these 'Robots controlled by a program you write in an arena shooting other robots' type programs.

    The real way these things grab you is when you put your program up against your friend's and watch the fight. Then good honest childhood rivalry makes you a better programmer for the next fight.


    I just tried freshmeat to get the homepage for RTB but couldn't get in. You try.
  • Yeah, like I'd drop $200 and give it to my kid!

    When she can beat me at an armwrestling match, then I'll let her play with it too.

    Until then, it's Elmo's playschool for her!
  • UCB logo might be a good place to start. I was thinking about putting a front end on it for really young kids - like kids too young to read.
  • Most kiddy games are made to run on win3.1. I think they do that because they would loose the dumb parent market who never upgrade. Use WINE!
    ---------
  • But the source to MegaZeux exists and it's been GPLed...

    ...richie
  • ZZT and MegaZeux are game building systems that allow you to play and program games in ASCII/VGA text mode. Because you can edit the fonts the graphics can get pretty fancy. With MegaZeux you can add sound to your games.

    Each games comes with a built-in programming language (an object-based one) that allows you to program the "robots" in the game. There are also many built-in elements.

    My son learned to program ZZT and MegaZeux by himself - by reading the help and by reading other people's code. He was 9 when he started.

    I had tried LOGO with him, but he quickly lost interest - it took too long to do anything beyond pretty spirals.

    ZZT and MegaZeux run on DOS (although a MegaZeux is being ported to Linux). Here are some links:

    www.zeux.org [zeux.org]

    My son's Web page [netlabs.net]

    ...richie

  • I'd be interested to know the answer to this one too. My feeling is that probably the best way to learn is the way we all did---by writing programs, plain and simple. When I was learning there were magazines with lots of listings to type in and debug---I guess these days books will have to do instead.

    As for languages, I'm not sure Basic is really the answer any more---it looks horribly primitive. Java might be nice, although still a bit complicated. Actually the best bet might be (of all things) Tcl. I know it looks strange but for a first-timer this doesn't really matter. It's simple and (with Tk) you can do all kinds of cool graphics and windowing stuff right from day one.

  • You can pass-by-reference perfectly well using upvar. No, it's not the way C handles things, but so what?

    I know Tcl does look very strange to people trying it for the first time after C or the like. That doesn't necessarily mean it's inaccessible to the novice programmer. I suggested it because, with Tk, it allows a newcomer to do a lot (especially graphics) very quickly. Tk canvases are really no harder to use than logo turtle graphics, and can do an awful lot more. Most Basics (haven't looked at Visual Basic myself but...) can't come close.

  • Programming will certainly change a lot over that time scale (not sure about disappear, people have been predicting that for a while now...). Even so, I'd say that whatever happens, the skills that make you a hacker are about the best preperation she is likely to get for whatever the future may throw at her.
  • Here are links for:

    RealTimeBattle [slashdot.org]

    GNU Robots [gun.org]

    Both run under Linux, both are GPLed.

    Doug Loss

  • I'm not sure there are any educational games that teach programming, per se, but at least back in the day (Apple ][, or thereabouts), there were some games that taught the kind of structured thinking that gives rise to an interest in programming. A couple such examples are Rocky's Boots and Robot Odyssey. I'm sure there are others, but those two come readily to mind.

    Hope that helps.
    Scott.
  • I wanted to do this when I was 15. It was not possible, as where I live in order to be "dual enrolled" in school, you had to be 16 years of age or older. It has to do with having to be 16 to drop out of high school.
  • Mind you, it was the early Eighties.
    Basic, Logo, and those ultra cool Atari, TRS-80, and Commodore machines. I sat down and wrote stupid games and simulations all day long, and taught myself assembler to make them crash more.

    But I was already interested; "Wargames" and "Whiz Kids" and the whole blossoming geek culture. Dress your kid funny so he or she can't make friends, and teach them to speak their mind and build within them an intimidating vocabulary. They will either turn to role-playing games, vandalism, computers, or all of the above.



  • Go to http://google.stanford.edu/
    search for asimov.net
    get stuff like ftp://ftp.asimov.net
    apple.asimov.net
    and others that seem to be talking about apple emulators for games.
    good luck
    report your ultimate findings.
    thank you
  • A year or so ago, I gave my wee brother my old BASIC book that I got with my TI 99/4A. It was made for really young kids, having little figures going about helping you learn. It has good, fun programs, and has a good learning curve. I don't know, however, where you'd find one now, except maybe at an antique store.
  • I still have my copy of Gortek and The Microchips for C-64 (on cassette). Taught me the basics of conditional looping, arithmetic, and some BASIC cruft. Also had a fun game that taught me to touch-type.

    If you want your kid to learn computers and programming, give him a stock Linux box set up to access the internet, give him the root password, back up the root partition, and cut him loose with some introductory programming books.

  • Me too... Could be a tag-nesting problem. The problem shows up on the main Ask Slashdot page and on the "reply" page, but not on the "Flat Mode" page, if that helps narrow it down.

    It might be worth running the page through a web-lint kind of program to see if a tag is getting dropped or added somewhere.

  • NO! Not Pascal!

    I did machine control with Pascal and assembly...
    Believe me, C is far better for many reasons.

    Java would be my choice, in fact my 10-YO has been working his way through the tutorial. Hopefully I'll help him hit critical mass soon.

    I have been thinking of this idea of a game/programming environment for quite a while in fact...

    sdw
  • It depends on the age, but the more REAL educators I talk to (i.e., the ones working with kids, not stuffy administrators in their ivory towers), the more I hear that kids should NOT be spending a lot of time in "Interactive Educational Programs" at a young age - meaning up to somewhere around 5th or 6th grade. Most software for that age does little more than teach kids to poke the mouse and follow tightly constrained scripts. No imagination or "interaction" involved.

    They're OK for entertainment, but don't think you're teaching them creativity or reasoning. Reading them a book does 100X what any "educational software" can do at that age.

    (By Junior High though, things change fast. I'm now wondering how to teach my 14 yr old Object Oriented Analysis and Design when they're handing out VB software at school! :-/ )

  • I learned Basic and Extended Basic on a TRS 80 4A like many others here...in my opinion the only help there is a similar logic to current languages. The best thing basic taught me was to constantly re-check my work, but I agree with other posters that the games you can create are pretty dull by today's standards.

    Here's what's going on in my extended family...

    First create a web page (yes, I know many people don't consider HTML manipulating to be coding)together, then look at the html and explain the logic patterns in it. Using Notepad, then encourage your kid to create her own. When you upload it, you'll be able to point out and analyze the mistakes together. (That's why I suggest Notepad rather than an HTML editor that points out your mistakes as you make them.)

    When she feels comfortable with HTML, start helping her add JavaScript and then Perl to her pages. The Dummies books are definitely written at a level that most kids 8+ can understand.

    I would recommend this approach for parents with kids starting anywhere from 8 to 11, depending on their development. Before 8, just keep them around while you code...it's amazing how much they pick up from watching.

  • Since I haven't seen any other mention of these, I 'll give it a shot.

    Sorry I don't have URLS for all these, but that's what search engines are for. These are the ones I'm keeping my eye on for when my 2.5 year-old twigs can type :-)

    • JavaBlue
    • Squeak (used it, it's pretty cool)
    • ToonTalk (commercial, Winders only, free demo)
    • Python IDE's
    • CRobots (GNU, I think, even has a GUI)
  • I too nursed on the sweet teets of the BASIC language. My digital alma mater was the TI-99/4A. Great, great computer.

    I think the driving force that pushed most geeks of our generation into programming was games. Specifically the fantasy that one could master the machine and forge one's own kick-butt arcade creation was a huge motivator as a child.

    But for us, we grew up in a time when the standard for great games was Combat on the 2600, not 3-D shooters like Quake. Today's software is so rich it just seems it would be frustrating to be a kid trying to strike out on his/her own. Gee, I made a happy face that flits around a maze eating dots. That's great. We had tools like sprites and PAINT commands. Today, you have your Open GL and malloc()'s. Woo hoo.

    Ahh for those simpler times...
  • Haven't seen anyone mention these classics yet. You write a C or Pascal program to control the robot. Your robot then fights other robots. Last robot alive wins.
  • I've been doing Tcl/Tk programming with my son (8yo), for over a year now. I think it is great because to get instant gratification. Bringing up the "wish" shell and entering the single line
    "button .b -text "Hello,World" , pops up a GUI native button that you can press. Adding simple "-command" using ".b configure" call-backs brings it to life. Anything a little more complicated can be created in text script.

    Tcl/Tk is a real language that is multi-platform and with a lot of real-world support.

    We even wrote a small shoot-em-up space invaders type game that my son has learnt to modify.

    Send me an email if you want the code. Tcl/Tk can be downloaded from http://www.scriptics.com
  • Definitely Mudding is a good way to get teenagers interested in computers in general. MUD/MUSHes which allow programming of objects generally have good programming tutorials and often people to assist in the learning process.
    Some places are almost competitive about their coding practices.... competition being something that motivates a lot of teenagers.

    But be warned.. there may be social consequences :-)
  • by NYC (10100)
    Squeak is an interesting programming environment.
    The Morphic environment is a object prototype based programming enviroment. Kids can program Morph objects to do various things, both by using VB-type controls and via code.

    Alan Kay, one of the creators, and one of the greatest minds in CS, created Squeak with kids in mind.

    Plus, Squeak runs on almost any OS known to man: Unix, Win32, MacOS (PPC, 68K), DOS, Itsy, WinCE, etc...

    http://squeak.cs.uiuc.edu
    http://minnow.cc.gatech.edu/squeak.1
    http://minnow.cc.gatech.edu/SqueakDoc.1
  • I remember reading on /. or wirednews about a new programming language called 'Sqeak' that teaches OO programming to youngsters. Supposedly it will be easy to use and program, but I really don't know much else about it. I beleive it was an open source project, anyone heard any more of this??
  • I'm surprised no-one's mentioned Stagecast Creator. It started out in life as Cocoa at Apple [apple.com]; Larry Tesler (yes, that Larry Tesler) took it and ran with it when Apple killed the project. It's a world-building sort of metaphor. --Tom, who also learned BASIC on a TRS-80. Microsoft BASIC (remember?)
  • I learned BASIC at 6 or 7 on my Apple IIc, and it really helped me grasp things like variables and loops and such before I ever actually did much programming at all. Let your kid try his/her hand at a little BASIC... It's really easy and forgiving, and it does make a great jumping-off point.

    if s/he really isn't interested in programming, I'd say don't push it. Nobody taught me---I did it all of my own volition. And now, years later, I can't describe the giddy feeling of looking at PERL and going "Oh wow---I know how to do this!" :) If you're looking for something a little more complex, I do recommend PERL as a second language (after BASIC). C is a lot harder to master at first without real instruction, and even though C++ is more "logical," (or should I say humanized?) it's still pretty hard as well.

    Amy
  • In _my_ day, all we had was a C64 and a BASIC interpreter! And we LOVED it!
  • I want to know about books/programs that will get ANYONE into programming. I know two adult females who are interested and able but not knowledgable.


    This is interesting, because I know at least one other person who was in the same position. She visited her local library and looked for books, and found a few that covered BASIC and Pascal.


    IMO, something like Pascal or Turing would be the best choice for a first language, as they are well structured, have straightforward syntax, and give access to most of the features that are actually used in real programming. Once they have the fundamentals down, the student could move to something like C/C++. Starting with C would IMO be a bad idea because the syntax is cryptic as all heck to a novice. Someone who doesn't know how to program can still look at a Pascal or Turing program and see what most of it does. Syntax aside, the three languages mentioned above are similar in structure, so there shouldn't be much of a problem moving to C/C++ after the fundamentals have been grasped.


    IMO, Scheme/LISP would be a less than ideal choice. I've used Scheme, and while it is neat and represents an interesting model of programming, IMO C/C++ would be more useful if the person actually wants to do professional programming. IMO the algorithmic model of C/C++ style languages is easier for a novice to grasp than that of LISP/Scheme, also.


    BASIC, from what I've seen, is slowly mutating to resemble Pascal. However, it's still easy to write spaghetti in BASIC, while you at least have to try a little harder in Pascal/Turing. I just don't see any advantage to it.


    For Pascal vs. Turing, the decision is pretty arbitrary as they're nearly identical. I've written in both, and if you add/remove semicolons and make minor tweaks a Turing program will compile in Pascal or vice versa. Turing does have good multithreading support, OTOH, which Pascal didn't the last time I checked. OTOH, Turing is a lot more reluctant to let you do things like pointer aliasing and messing with assembly code, port i/o (on the x86), etc.


    As far as good books are concerned, I can't name any offhand. Ye (new) Olde K&R ANSI C book is decent as a C reference but not good as a tutorial. The local library seems to be a good resource, as my friend did manage to find books that were of use to her.

  • Try FUNdaMENTAL! Available for MAC and PC.
    Here is a clip from the web page [homestead.com]:

    FUNdaMENTAL is a complex, object-oriented programming language designed specifically for educational purposes. The language is presented in a supportive environment that provides youngsters full access to the creative challenges of real programming at a level just right for them. An optimal technology curriculum for grades six through nine, FUNdaMENTAL can be used and enjoyed by any creative person over the age of nine.

    FUNdaMENTAL is proof that the best kind of "fun" comes from rigorous "mental" activity!

    --
    John Tokash
    Homestead Technologies
    http://www.homestead.com/hackfurby/

  • Please be a troll. Please be joking.
    I've had to clean up after programmers like you: I'm still recovering from the shock of having to deal with a large parts manufacturer's database, only to discover that they had paid $40k for a piece of junk written in basic. The programmers were nowhere to be found. I had hoped that was an isolated case.

    You scare me, guy.

    More on topic, though, I think basic and forth are both very good options for a starting programming language.
  • I remember when I started out with BASIC on my TRS-80 Color Computer. I was only like 6 or 7 years old and was amazing people that had no idea about computers.

    Nowadays, I don't know... My first non-BASIC language on a "real" computer (my 8088) was Turbo Pascal. They still teach that in a lot of high schools... That's what I'd probably recommend, but maybe that was easier for me because I had already been programming in BASIC for five or six years by that time.

    I'm interested in hearing opinions as well... I have a two year old that loves playing with my computer. I'd really like to get her interested in something other than games.

    --Zak
  • I don't know about you, but I learnt programming on an old 8-bit machine (a Commodore 16). Had I set out to learn on a "bigger" system, I would have found it much harder. You could pick up a C64 for free these days; why not consider that option?
  • by ghira (13007)
    Suitable for even younger users than "Omega" would be the
    rather impressive "Chipwits", which I remember seeing in the
    days of thin macs and fat macs. You programmed a little robot
    by plugging program modules together on a grid. Basically,
    you had to build a flow chart. You had about 8 grids available,
    and could use the 7 "extra" ones for subroutines.

    It was quite impressive - the game came with a variety of maps
    you could program the robot to deal with. You had to teach it
    about food, obstacles, bombs, and so on.
  • by ghira (13007)
    Origin used to sell a game called "Omega" which was, basically, a
    BASIC-ified version of crobots, with rather nicer graphics, and
    some Origin-programmed enemies you could defeat.

    You also had a limited budget with which to build your cybertank
    (until you got to security level 10 and had an infinite budget),
    forcing you to decide whether to have faster weapons,
    more armour, repair kits, or whatever.

    It came with a library of pre-written routines to do things like
    follow left-hand walls, or whatever, which you could use
    until you wanted/needed to modify or re-implement them entirely
    to suit your own needs.

    No connection with the roguelike game of the same name, of course.

    There's crobots itself, of course.
  • Lots of great suggestions mentioned, so I'm mostly repeating what's already said.

    For a programing language take a look at Rebol. It's very modern design and straight forward syntax makes a coding a snap. "Rebol in Ten Steps" provides a thorough explanation. http://www.rebol.com/rebolsteps.html
    I'm impressed with it's total approach. On the downside it's a messaging language, so there's no graphics or the like to get his attention, pity.

    I liked the idea of introducing HTML. Initially, I feel that getting his interest is the most important part. He's still using his skills to create, which is ultimately the goal. With his work up on the Web he can show his friends at school (maybe register a domain, if it proves his thing)

    Although males and females use computers differently (solitary versus socially) you could try to include his friends. That way he'll have some geek pals in the school yard to bounce his ideas off. :)

    Music is great. Sadly, kids often aren't interested when their young, but give it a try. Computers have an appeal that a piano or guitar doesn't. When I young was I resisted learning music. Now that I'm older I've come back to the idea, and I'm keen to learn.

    Are his reading and verbal skill at a good level? I realize these skills use different parts of the brain, but they really are the most important assets any person can have. Encourage his reading and make him read out loud every day. Anyway he'll need to love reading, for there comes time when a young man must buy his first O'Rielly book. :)

    He's still quite young and hasn't figured out what he wants in life. His computer skills are something he'll always have, but if he decides to be a bohemian fashion designer, that's OK too.
  • In elementary school we learned LogoWriter on the Apple IIe. It's a derivative of Logo--draw things by telling a turtle to move, interactive interpreter, simple functional programming with global variables--with some multimedia features.
    You have four turtles; each can take any shape or be invisible, which is cool for representing characters in a game. The main window holds graphics, bitmapped text, and text-editor-style text, all programmable. There's even rudimentary event-driven programming--you can tell it what to do when various control-keys are pressed, then do something else in the meantime.
    Definitely a lot it couldn't do, but programs were quicker to write and more engaging than my native BASIC. State of the art for my class were races/obstacle courses where the turtle moved inexorably forward while you kept it on the path by pressing control-keys to turn.
    LogoWriter was by LCSI. I heard they might have updated/replaced it with MicroWorlds, which I haven't seen.

    A step up in complexity and power from LogoWriter is Hypercard. I never got far into it, but the HyperTalk language is English-like, with object-orientation everywhere (each object has its own code area where you can extend its vocabulary). If there's a mac classic around that nobody wants, you could dedicate it to hypercard, which hasn't changed much in the past decade, so it still works fine on slow machines.
    Or, slightly far out, how about Squeak, a graphical environment written in Smalltalk, source code included? See squeak.cs.uiuc.edu
    Whatever you choose, prefer stuff that's interactive (no compile/run if you just want to try one command) and has a modern approach, like object-orientation and stuff. I guess BASIC is good at showing you how the computer does one thing after another, but it's not a good way to organize programs.
  • ... that was fun! simple logic stuff. Until i
    found BASIC and started programming.
  • Musicians also get higher math scores on their SAT's.
  • I think giving a youngster an old machine like a c=64 or some other basic based machine, with very little software and a simple book on basic programming is a good (and cheap) way to go.

    When I was young, my friends all had ataris and nintendos or segas, i had a Vic-20, about 20 tapes and a small stack of thin books on basic. I was forced to use the computer to learn math (it was that or a boring night with dad and a text book)
    And it didn't take long before I got curious enough to start writing a few simple programs.

    I think a vic-20 now goes for about $10 with a bunch of tapes and accessories at the average yard sale.

    Give a kid an old machine, and limit the time they can spend on Mom & Dad's machine (and NO nintendo! Let them play with the neighbor's) You might be surprised at what they will come up with.
  • I LOVED that game - but my brothers thought it wasn't all that great, it might not work to well as a method of stimulating interest. For Sharpening Skills, it'll do great.
    I Remember making a pair of chips, one for a controler and one for a controlee. You told the controlee robot which way to go and how far by banging the controler against the wall. It'd send serial signals to the controlee, and away you went! Neat stuff.
    Last I checked, this game was 'out of print' and it was never popular enough that I'd expect to find it in any used software joint. You might get lucky, though. You could also try talking directly to "The Learning Company" they made the game and might (conceivably) have some left in stock. Be sure to ask for the Hard Disk version, though!

    (And no, I'm not selling my copy!)
  • There was a game in the early 90's for DOS and Mac called The Incredible Machine. The premise was that you were given a number of items - basketball, ropes, pulleys, balloons, ramps, etc. A different list for each game. You had to build a rube goldberg-like machine to perform some task. It was a lot of fun and the logical thinking that went into getting the machine to work is the exact sort of thing that hooks a person on programming.

    Just checked. You can buy The Incredible Machine 2 or 3 from Sierra. 2 runs on DOS 3 runs on Win 3.1.

    Here's a couple of urls:

    http://www.sierra.com/store/quicksheet?SKU=83649 10100

    http://www.sierra.com/store/quicksheet?SKU=83672 10100

    Let me know if you try it. I'd like to know how it works out.

    dar
    darogers@xnet.com
  • Take the kid to the computer store and have him pick out some killer games. Then buy him all the parts to build a killer machine and guide him on building it, with playing the games as an incentive. Worked for me once upon a time.
  • The idea is to get youngster interested. You can't just say here, start programing something, kid. Building a machine is a good introduction to computers. After you make one, it's only natural to next want to "make it" do something. Hence, wanting to learn to program.
    Slapping some software in front of a kid isn't much motivation. Learning a bit of what a computer could be made to do is.
  • It seems to me that music might be an additional way to instill programming skills. I recollect that IBM did a study, and found musicians to have a closely related skill set. Music is a highly structured activity, repeats itself with variations, and has a sense of timing, ( important in kernel programming). With a MIDI synth and a computer, this may be a good way to go. The gratification is quick, important in starting out, and it's as complex as you which to make it.
  • I remember, in about 1982, a couple of years after I built my first computer (a ZX80 in '79), I had a game for the Apple ][ called "Rocky's Boots". Rocky was a groundhog or something, and he went around this maze of rooms creating Rube Goldberg type machines using cool little cartoon AND/OR/NOR/NOT/XOR/XAND gates. This was aimed at REALLY young kids, like 5 or so. It was how I learned electronics. I've still got the game, and a working Apple ][, and I'd love to see someone clone it. It's the kind of thing we *really* need these days... something fun, non-violent, educational, and not condescending to kids. Anyone else remember it?
  • I work with the Electronic Learning Communities research group at Georgia Tech and my advisor(Dr. Amy Bruckman) has spent the last several years creating an environment for kids that allows them to learn how to program while learning creative writing skills. The environment I am refering to is called MOOSE Crossing.

    MOOSE Crossing is a place where kids 13 and under can come to meet other kids from around the world, build new places to hang out, and program cool objects to play with. You could build a swamp next to the forest, a pet store in town, or maybe a disco in The Emerald City. You could make an elephant that tells elephant jokes, or a robot that asks people what they think about nuclear power. The world of MOOSE Crossing is built by kids, for kids. Big people are welcome too--especially teachers looking for interesting activities for their classes.

    Basically, MOOSE Crossing is a MOO designed for kids using a custom programming language that lets kids make interesting objects and share them with their friends.

    For more information check out: http://www.cc.gatech.edu/~asb/moose-crossing/

    MOOSE Crossing is also the subject of my advisor's thesis research. If you are interested that dissertation can be found at: http://www.cc.gatech.edu/~asb/thesis/index.html
  • It sounds like what you may be looking for...

    While I myself have not dredged up the cash or time to grab one myself, it seems the perfect solution...

    Its combination of real objects with behaviors and properties, and its programmable nature, combined with the joy of putting things together and seeing them do something, may just be what you're looking form.

    Lego Mindstorms is a new type of kit where, besides standard passive blocks, there are active elements; motors, sensors, and a central brick which is programmable via PC (Soon others), which contains the code needed to run anything you build and attach to it. Examples of things already done with the Mindstorms technology; A photocopier, a optical punchcard reader, a robot that follows lines, etc. A cross between Logo, basic, and Lego!

    -Twink
    Gee, I may be first too!
  • There is a board game from Wizards of the Coast called RoboRally. You "program" your robot in batchs of 5 segments with commands like "turn left", "Turn right", "back up 1 space", "forward 1", "forward 2", etc. There are all kinds of obstacles to avoid or deal with (conveyor belts, lasers, pits) and robots can "interact" by either shooting or pushing each other (granted, usually by accident). Getting an instruction wrong (left vs right say) or getting shoved one column off course can have disastrous repurcussions (call them "bugs" ;-).
    It isn't particularly deep, but it is fun and teaches the basics of planning ahead. Just avoid most of the expansions, or just use the cool boards out of them. SOme of the later rules were just silly.
  • by celer (111533)
    I think basic is about as good as it will get. I learned BASIC at age 10 or so using a book by IBM
    for the PCjr. The book was excellent for kids, it had cartoon characters and projects that were achievable. For instance you could make snow flakes or just simple designs. And yet it still had some practical programs. I could not even fathom trying to learn C or any other complex language at that time. It took me about two years to hit the ceiling with what I could do with basic. (I think I stopped when I tried to start doing texture mapped 3d stuff :( )
  • QuakeC is the best route as to how not to learn programming correctly... Also it's sure not an easy way to learn especially if you are new to programming.

    A few months back I saw that interplay (www.interplay.com) was working on a "C for dummies" sorta program that teaches you the basics as well as associates it with basic game programming. I don't see mention of it on their site currently but it's probably there somewhere.

    Another good resource... go to a community college and take an intro programming class... good choices would be C, C++ or java. Java probably being the best if you want to learn the concepts of Object Oriented programming.

Heuristics are bug ridden by definition. If they didn't have bugs, then they'd be algorithms.

Working...