Programming language for children

CLIFFORD ILKAY clifford_ilkay at
Sun Jun 14 03:21:45 UTC 2009

On 13/06/09 01:32 PM, Karl F. Larsen wrote:
> Kjetil Halvorsen wrote:
>> I want to try to learn my daughters some programming language. (they
>> are 13,14 years)
>> In earlier times I would have thought about logo. What programming
>> language, available in ubuntu,
>> would you propose for this in our time?
>> Kjetil
> 	Get good books for both C and C++ and if they like programing they will
> get good very fast.
> 73 Karl

Neither of those languages are suitable as an introduction to
programming for children. Most children, actually most adults, even some
who call themselves "programmers", don't have the background knowledge
to be effective with C or C++. You can ease them into these languages
eventually but they will need a solid understanding of computer
architecture. Such courses are available in our high schools under
various names, e.g. "Computer Engineering", where the students will
learn about digital electronics first and then build up to
microprocessors. If they understand how a CPU works and how it
interfaces with peripherals, they're ready for C but not before.

Now that we've established what is NOT suitable, let's concentrate on
what is.

Many people seem to like Squeak <> for children and
there is an active community around it. I'm ambivalent about it.

Others have suggested Python and I would agree 100%. Some resources that
I've found especially useful for teaching programming to children using
Python are:

"Learn to Program Using Python" by Alan Gauld. Buy it here:

There is an accompanying web site at

"How to Think Like a Computer Scientist: Learning With Python" by Allen
Downey, Jeff Elkner and Chris Meyers. Buy it here:
<> or get the same
content on-line at <>.

ShowMeDo <> have many useful
videos, too.

Someone suggested you have them build a web page with HTML. That is an
excellent suggestion. I would augment that with the Django
<> tutorial but the tutorial should only be
attempted after they master the fundamentals of programming and Python.
It's useful to have them build a web site "the old-fashioned way" first
and then have them tackle Django.

A very good exercise is to have them build a static web page that
displays their favourite family photo. Provide minimal instruction on
how to do it because part of the process should be for them to learn how
to learn. Even if they've never done this before, it shouldn't take them
very long to do it. After they've completed that, ask them, "Now, what
if you had to display all of our family photos on your web site?"
Assuming you have a large enough number of photos that it would be
impractical for them to copy/paste their HTML code and just change the
file names, it will force them to think about alternative approaches.
That is when you can introduce the Django tutorial. Reassure them that
even if they don't at first understand what they are doing, they should
follow the tutorial exactly. The tutorial will have them building a
simple poll application. They can work on their photo gallery
application simultaneously and as they understand things in the Django
tutorial, they can jump to the gallery application to apply their

The photo gallery is just a suggestion. If they're interested in
something else, have them do that. For instance, if they're interested
in mathematics, you could show them how you can use Python as a
programmable, graphing calculator.

Python is an ideal teaching languages because it's vocabulary is
concise, it's syntax is simple, it's interpreted so they can get instant
feedback, they don't need anything more than a Python shell, ipython is
an excellent one, to get started, and there are many good resources for
it. You don't need bloated and complex IDEs to get things done in Python.

Clifford Ilkay
1419-3266 Yonge St.
Toronto, ON
Canada  M4N 3P6

+1 416-410-3326
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 3286 bytes
Desc: S/MIME Cryptographic Signature
URL: <>

More information about the ubuntu-users mailing list