Teaching a Child to Program

Discussion in 'Mac Programming' started by vj24601, Aug 27, 2005.

  1. vj24601 macrumors newbie

    Aug 27, 2005
    I am the father of a precocious elementary school age boy. He reads at a level well beyond his years and is showing tremendous aptitude and love for technology. He wants to learn to write programs.

    I am a relatively technically astute business user, but I am by no means a developer of any kind. I want to provide my son with the ability to pursue his interest and develop his skills. I am willing to put in the work to develop a “curriculum” for him. However, as a non-techie I have no idea where to start.

    I am looking for advice on where to start. What language should he learn? Are there good beginner books with exercises that he could work through? Is there some sort of “developer” tool kit that I should buy?

    I would appreciate any advice you may be able to provide. Thank you in advance.

    (p.s. We are a Mac family. He has his own iMac and wants to develop on this platform. I wanted to include that since it probably affects the direction he would take.)
  2. neverever macrumors newbie

    Sep 18, 2004
    I started a C class at age 14, and suggest you should start with the C programming language as well. I think learning C is possible at any age, I started in middle school, but had my first "class" in highschool.

    The only problem I see is running into algebra difficulties.

    Any "C Beginners Guide" book will do, because it has simple code that you can type in and compile. The starting off difficulty is in knowing how to use the programmer tools for mac os x. But we can help you with that.
  3. kainjow Moderator emeritus


    Jun 15, 2000
    I would think C to be too difficult at that young of an age. If you want him to learn C, Xcode is free, but quite complex. It installs GCC (the compiler) which can be accessed via the Terminal. If you want him to learn C, all he needs is the Developer Tools installed, then Terminal and GCC.

    BASIC might be better, to learn the logic and concepts that are necessary for programming. Then, possibly move up to C.

    However, there aren't many good BASIC IDE's out there. The main one for Mac is REALbasic, but that is very expensive. However it lets you create useful, full-fledged GUI programs very fast.

    The other BASIC interrupter is Chipmunk Basic, which is fun to play with and learn. It's also free.
  4. vj24601 thread starter macrumors newbie

    Aug 27, 2005
    I really appreciate the feedback so far. I would say that anything requiring Algebra is probably going to be over his head at this point. He does understand basic concepts of logic, but his math skills are only to the point of basic mulitplication and division.
  5. greatdevourer macrumors 68000

    Aug 5, 2005
    Something you may want to get him teething on is AppleScript or RealBASIC to get him used to syntaxes, debugging and stuff like that while doing cool stuff :p. Then, at around 13-14, start him on a proper language, like C, then maybe move him to C++ or Java
  6. Oryan macrumors 6502a


    Apr 1, 2005
    Lincoln, NE
    I think it's wonderful that someone that young is interested in development. It reminds me of myself. I started learning BASIC in elementary school and then C/C++ in middle school. My school had a few books on BASIC that I started learning from. Also, you might want to check your local library.
  7. ham_man macrumors 68020


    Jan 21, 2005
    FutureBASIC might be the ticket, though it carries a hefty price tag at 170 dollars...
  8. dollystereo macrumors 6502a


    Oct 6, 2004
    Forget C, is complicated, Use JAVA si easy and can be learned at any age, I teach my 12 years old Java and he makes their own programs!!!
    Graphics is a little complicated in java but can work!
    Try Java.

  9. WebMongol macrumors member

    Sep 19, 2004
    Bay Area, CA
    Do not punish your elementary school age son with language like C, C++, C#, Objective-C, Java, etc. It's low level languages created for professional developers.
    Teaching kids programming should feel like a fun game.
    Kids should not remember magic sequences, like 'public static void main(String[] args)' just to write their first hello world program.
    The first logical step is to start with language and environment created to teach children basics of programming, like Logo language (ACSLogo for Mac OSX X) http://www.alancsmith.co.uk/logo/index.html or Python based minimalistic programming language:
    After one year with Logo and its turtle graphics it's time to move to next language like Python or Ruby. There is a wealth of information on the web about Python:


    One of the best way for kids to learn a programming language is to write simple game with proper tools. Pygame is a set of Python modules designed for writing games.

    Good luck.
  10. Omen88 macrumors regular


    Jan 8, 2002
    Flanders (Belgium)
    I couldn't agree more with you! Letting a child start with C or Java will make him never touch a computer again. He should be at least 12-14 before starting that.

    Start with something easy which gives lots of graphical feedback (like Logo). Though Alan Kay tought smalltalk to children.
  11. SpaceMagic macrumors 68000


    Oct 26, 2003
    Cardiff, Wales
    Graphical Feedback: RealBasic.

    I was programming in its older sibling, BASIC, when I was 7. We used to have an old BBC Micro which ran on a BASIC kernel. It's very very simple and teaches you simply (by use of example) what an integer, string or double is.

    With RealBasic on OS X we move up a step and get a graphical interface which allows you to literally drag and drop graphical items into a window, double click, then program the actions they want you to perform. The actual programming language is in English - which helps! For example to get the program to quit you type the code 'Quit'. Could it be easier?

    This is only the starting point, as RealBasic can be used to make nearly anything. Coming up against obstacles is always beneficial to a kids learning and with RealBasic I can guarantee he'll sit wondering (as with any language) how to get one thing to influence another, or how to use the text in one box to show up in another. You can then turn to the excellent Reference in the Help menu where you can learn by example.

    I do think RealBasic is a good starting point for anyone. I would agree with others and say eventually move up to C, but for a first timer, RealBasic allows you to see results straight away. And, if you need any help.. you can always ask here!
  12. Abstract macrumors Penryn


    Dec 27, 2002
    Location Location Location
    My highschool taught us how to program in an educator's programming language called "TURING" and it was quite good to learn from. :) I think it was developed at the University of Toronto, but I can't be certain.
  13. superbovine macrumors 68030


    Nov 7, 2003
    here is a turing-complete language that might be fun to learn as well.

  14. caveman_uk Guest


    Feb 17, 2003
    Hitchin, Herts, UK
    The first language I programmed in was BASIC - I would have been about 11. In then moved onto Pascal and Z80 assembler. I'd agree that the language constructs for the languages mentioned above would probably put someone off if they're young. And I don't mean that in a derogatory way either. Nice big language ideas like inheritance are great for big programs but probably overkill if you just want to learn the basics of looping, logic, program flow etc.

    The suggestions folks have made here are good but I'm surprised not more people have mentioned Applescript. With Applescript Studio you can create mac apps using xcode but in a much friendlier language than objective-C. One advantage Applescript Studio has over realbasic is that it's free and comes with the developer tools

  15. witness macrumors 6502

    Apr 7, 2005
    I agree with most of the comments here; C is a difficult language to start with, it requires a detailed understanding of how computers work.

    If you want to start with a modern language then I'd suggest C# (mono on OS X) or Java.

    But for children I'd recommend a Lego Robotics Invention System . The software from Lego is Windows only, but there are lots of people out there who have created non-windows versions. Your child can learn to program using Java or C or similar languages and control robots at the same time. I have one of these sets and they are great.
  16. dermeister macrumors 6502


    Jan 19, 2003
    No AppleScript, its so syntactically sweet it hurts. It'll ruin him.

    Straight C, he would never acomplish anything.

    REALbasic would be perfect.
  17. macmaniacttt macrumors member

    Mar 4, 2004
    12-year old

    You didn't say how old he was, but I am a 12-year old who wanted to start to program, so about a year ago, I started with PHP. Though this isn't really on the Mac platform specifically, it was a great starting point: based on C, relatively easy to use, and not that complex. After spending some time in PHP making programs and just fiddling around, I got a Cocoa book and have started to learn that. It's definitely a step up from PHP, but better than a step up from nothing. If he wants to talk to someone around his age, feel free to im me (macmaniacttt) or email me (macmaniacttt@gmail.com).


    P.S. If you decide to start with PHP, Programming PHP by O'Reilly was a GREAT book.
  18. StarbucksSam macrumors 65816


    Nov 21, 2004
    Washington, D.C.
    I don't know how old your son is, but being a teenager, I know that people my age and younger generally have shorter attention spans and when the going gets tough, we may be more inclined to quit.

    I don't think you should do anything that would push your kid to hard - if he/she wants to learn programming, DEFINITELY start with basics - do not jump in to C++ and expect the next Steve Jobs in ten days.

    I think it's great that you want to help your kid pursue its interests, but just remember that a kid is a kid despite intellectual genius. I was a very precocious child myself, but frankly, if I showed interest in something and found it to be too hard, I'd more often than not give up.
  19. greatm31 macrumors member


    Oct 19, 2001
    As a self-taught programmer, I absolutely agree that you should stay away from C and Java for an elementary schooler. If he were starting in high school, perhaps, but at that age Logo and BASIC are great languages to begin with.

    I have one additional reccomendation that you might like: Scheme. Scheme is a language based on Lisp and is all about the fundamentals of programming and computer science. It is a simple language that is also incredibly powerful. I'm not completely certain that it's on his level, but you may want to check it out. One book I would recommend is "The Schemer's Guide" by Iain Ferguson.

    If that seems a little off-target, then go with BASIC or Logo. One thing you might want to do is learn to program with him, and let him pursue his own ideas for side-programs while he's learning. I remember making an Etch-e-Sketch program in BASIC and I thought it was mad cool. Anyway, good luck and if you have problems down the road there are plenty of programmers on MacRumors that can help you out.
  20. Omen88 macrumors regular


    Jan 8, 2002
    Flanders (Belgium)
    Great to see a fellow schemer here on macrumors :) Though I have to disagree a little. The recursive thinking in scheme is way too hard for a child I think. A professor of mine claims that university students need 2 years to grasp scheme to its full potential. Though I have to admit it is a beautiful language.
  21. seriypshick macrumors member


    Apr 4, 2005

    I think C is pretty simple. It makes easy things easy, and hard things possible. I think C is simple enough if you don't get into things like pointers(which is the low-level programiming).

    If you decide to go with C, I recomend "C for Dummies". It's fun, very easy to read and understand. Also, it doesn't go into any low-level programming.
  22. HiRez macrumors 603


    Jan 6, 2004
    Western US
    I would have to agree that C is probably too difficult at that age for self-learning. Yes, kids that age can and have figured out C, but in my opinion, you risk confusing and alienating a child. BASIC may stink as a hardcore application development language, but it's great for learning basic programming techniques at an early age.

    Python may also be a good possibility, with its gentle, easy-to-read syntax and fast, interpreted results. It's also quite powerful if you want to advance deeper into it, and now has object-oriented constructs such as classes. It's also installed by default in OS X. All you need is Terminal and TextWrangler and you're good to go.

    However, there are a lot more learning books out there on BASIC than on Python. And, doing visual things with Python (or Ruby or Perl or even C) is more difficult than in a BASIC IDE such as RealBasic, where you can easily create windows and draw into them, and create controls such as buttons and scroll bars. This type of thing can make programming a lot more fun for a young person. While averaging an array of monthly temperature data or simulating a bank transaction may be a better starting point, many kids (and even adults) will get bored quickly with these types of exercises. I know I did. Someone else mentioned Logo, which was one of the first languages I used as a child. It's a great starter, if you can still find it.
  23. caveman_uk Guest


    Feb 17, 2003
    Hitchin, Herts, UK
    Logo for mac

    As an added plus the source code is available so if you get bored with moving a turtle around you can see how the Cocoa program works.
  24. cube macrumors Pentium

    May 10, 2004
    Logo, then Scheme.

    Try to get some teacher to sign up for a free workshop here.

    You could get youself a book called "The Little Schemer". It has a Q&A format. You can look inside at amazon.com.

Share This Page