In order to teach kids how to program, you need first to get them interested in something that is computer related. One of the best ways to get them interested in computers is games. They may want to write their own games, and that could be their entry into programming.
Here are some links to sites that deal with this subject.
App Inventor is a beginner introduction to programming and app creation. From MIT.
Also, from MIT, there is the Scratch language. You can program right from the web site.
Python and PyGames
Python is a very clean and very easy to understand language, yet a very powerful one as well.
PyGames is a set of libraries that allow someone to write their own games using the language.
Here are several tutorials on the Python language, which you will need to write games using PyGames:
- For beginners, it is recommended that they start with something that does not assume they know too much about programming. The Python Programming for non-programmers is a good start, specially when combined with the IDLE Python GUI Integrated Development Environment
- Linux Journal has a short one page tutorial on Python, called Python Programming for Beginners
- If you prefer a printed tutorial, then download and print these Tutorial in PDF format with even a test, and some classic games that use PyGame library (Asteroids, Pacman, Spacewar).
- Introduction to PyGames is a good place to start (after learning Python basics) from the above. It contains a nice 25 line demo of a bouncing ball! Good to get the young ones' attention.
- Learning Python the Hard Way
- PyDance is another game written in Python using the PyGames library.
- A complete book teaching Python programming can be found here Think like a Computer Scientist: Learning with Python by Allen Downey, Jeff Elkner and Chris Meyers. Another link to it is here.
- Python tutorial, from the official Python web site.
- Google Directory list of Python FAQs, Help, and Tutorials
- An Introduction to Python by Guido van Rossum, and Fred L. Drake, Jr. (Editor)
- Thinking In Python by Bruce Eckel
- Dive Into Python: Python for Experienced Programmers by Mark Pilgrim
- Text Processing In Python by David Mertz
- Python Language Reference Manual by Guido van Rossum
- Hello World: Computer programming for kids and other beginners is a book for teaching kids programming using Python as the language of choice.
Slashdot discussion on Robocode, titled: Learning Java through violence
Kuro5hin discussion on Robocode
Squeak is a language that has developed into a community of students and teachers interested in learning and teaching programming using this deriviative of Smalltalk-80 object oriented language.
Some kids can get started using plain HTML, writing web pages for everyone on the net to see. The instant gratification provided from instantly publishing their work, can be a good motivation for them to get started.
- Web site builder for kids
- Learning HTML for kids
- Lissa Explains HTML
- HTML Tutorial for kids
- Google Directory HTML / Web Page Design
PHP is a relatively easy language to use. Here are some tutorials on it.
Other Resources for kids and programming
- Four tools for teaching kids to code
- Teaching Computers to Kids
- How to teach programming to kids by Chris Pirillo.
- Open Source programming languages for kids at Linux.com.
- How to Design Programs
- Game Maker
- Klik n Play
- Inform - Adventure Game Building
- Anirak A game written in Java and runs over the internet in Java capable browsers.
- Also, by the same author, there is a Pacman applet tutorial
Discussions and other stuff
- A family's experience with teaching kids programming Kids Computer Programming
- Slashdot has a lengthy discussion on an article called The Little Coder's predicament with lots of good comments from parents and kids alike.
- Video Game Simulation Programming on Google Directory.
- A Slashdot discussion on Moving your kids to Linux.
- Another Slashdot discussion Best introduction to programming for bright 11-14 year olds.
- Another Slashdot discussion Teaching primary school students programming.
- Another Slashdot discussion MIT Media Lab making programming fun for kids.