Mac Teaching a Child to Program

vj24601

macrumors newbie
Original poster
Aug 27, 2005
2
0
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.)
 

neverever

macrumors newbie
Sep 18, 2004
24
0
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.
 

kainjow

Moderator emeritus
Jun 15, 2000
7,958
5
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.
 

vj24601

macrumors newbie
Original poster
Aug 27, 2005
2
0
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.
 

greatdevourer

macrumors 68000
Aug 5, 2005
1,996
0
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
 

Oryan

macrumors 6502a
Apr 1, 2005
595
0
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.
 

dollystereo

macrumors 6502a
Oct 6, 2004
900
109
France
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.


IS ALREADY INSTALLED in any mac
 

WebMongol

macrumors member
Sep 19, 2004
50
0
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:
http://gvr.sourceforge.net/about.php
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:

http://wiki.python.org/moin/BeginnersGuide/NonProgrammers
http://www.livewires.org.uk/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.
http://www.pygame.org/news.html


Good luck.
 

Omen88

macrumors regular
Jan 8, 2002
177
0
Flanders (Belgium)
WebMongol said:
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:
http://gvr.sourceforge.net/about.php
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:

http://wiki.python.org/moin/BeginnersGuide/NonProgrammers
http://www.livewires.org.uk/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.
http://www.pygame.org/news.html


Good luck.
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.
 

SpaceMagic

macrumors 68000
Oct 26, 2003
1,740
0
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!
 

Abstract

macrumors Penryn
Dec 27, 2002
24,415
124
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.
 

superbovine

macrumors 68030
Nov 7, 2003
2,872
0
Abstract said:
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.
here is a turing-complete language that might be fun to learn as well.
moo!

http://www.bigzaphod.org/cow/
 

caveman_uk

Guest
Feb 17, 2003
2,390
1
Hitchin, Herts, UK
WebMongol said:
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.
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

Link
 

witness

macrumors 6502
Apr 7, 2005
435
0
Austria
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.
 

dermeister

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

Straight C, he would never acomplish anything.

REALbasic would be perfect.
 

macmaniacttt

macrumors member
Mar 4, 2004
33
0
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).

-d

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

StarbucksSam

macrumors 65816
Nov 21, 2004
1,427
0
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.
 

greatm31

macrumors member
Oct 19, 2001
69
27
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.
 

Omen88

macrumors regular
Jan 8, 2002
177
0
Flanders (Belgium)
greatm31 said:
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.
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.
 

seriypshick

macrumors member
Apr 4, 2005
76
0
Everywhere
C

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.
 

HiRez

macrumors 603
Jan 6, 2004
5,850
1,811
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.
 

cube

Suspended
May 10, 2004
16,983
4,966
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.
 

Similar threads

Register on MacRumors! This sidebar will go away, and you'll see fewer ads.