teaching programming to children

A

andy

A young friend of me (12 years old) has asked me to teach him programming (after
I shortly described my programming job as telling the computer what to do and
not the other way arround). I choose python because I personally like it but I
was wondering to what extent is it appropriate for this task.

a) Its interpreter is very nice but it hides some basic truths about computers.
Namely, the need to compile and the differences between the languages of humans
and languages of computers.

b) Most simple tasks can be achieved so easily that "there's nothing to learn".
What do you think would be our first programming assignments? And what language
constructs should we start with?

c) Should we run to "cool" things (GUI, networking, other proposals?) or should
we first make a good hold of "algorithms" (which in my opinion is at the heart
of programming).

I would be gratefull if people who had a similar experience would told me about
it. Or if someone could refer me to sources and articles.

thanks...
 
D

Duncan Booth

(e-mail address removed) wrote in

A young friend of me (12 years old) has asked me to teach him
programming (after I shortly described my programming job as telling
the computer what to do and not the other way arround). I choose
python because I personally like it but I was wondering to what extent
is it appropriate for this task.

a) Its interpreter is very nice but it hides some basic truths about
computers. Namely, the need to compile and the differences between the
languages of humans and languages of computers.
It hides the need to compile, but a basic truth about computers is that
they can hide things that you don't need to know about. A lot of languages
hide, or make less obvious, any compilation stage. I think you
underestimate the difference between human language and Python. Even though
Python is readable it is still very different.
b) Most simple tasks can be achieved so easily that "there's nothing
to learn". What do you think would be our first programming
assignments? And what language constructs should we start with?

c) Should we run to "cool" things (GUI, networking, other proposals?)
or should we first make a good hold of "algorithms" (which in my
opinion is at the heart of programming).

I would be gratefull if people who had a similar experience would told
me about it. Or if someone could refer me to sources and articles.

Have a look at http://www.livewires.org.uk/python/ and see if it is what
you want.
 
J

John Roth

A young friend of me (12 years old) has asked me to teach him programming (after
I shortly described my programming job as telling the computer what to do and
not the other way arround). I choose python because I personally like it but I
was wondering to what extent is it appropriate for this task.

a) Its interpreter is very nice but it hides some basic truths about computers.
Namely, the need to compile and the differences between the languages of humans
and languages of computers.

How people acquire skills is one of the things we normally don't think too
much about, because most of us aren't trained in it. Novices (and your young
friend is a novice) need to have things where they can get "instant
gratification."
A language that hides complexity that is essentially optimization (and a
separate
compile step certainly fits into that category) is much easier on novices.
b) Most simple tasks can be achieved so easily that "there's nothing to learn".
What do you think would be our first programming assignments? And what language
constructs should we start with?

I'd start out with the python tutorial, and keep at the command line until
he becomes comfortable with the syntax. Then I'd introduce how to save
programs and execute them from the command line. Of course, if she asks
about saving programs on her own, introduce it then. Use a simple GUI
IDE - IDLE or PythonWin for example. Don't use anything as complex as
EMacs or Vi to start out with.
c) Should we run to "cool" things (GUI, networking, other proposals?) or should
we first make a good hold of "algorithms" (which in my opinion is at the heart
of programming).

Start out with whatever he regards as 'cool,' as long as it's also simple.
However,
don't let that be an excuse to get sloppy. If you know Test Driven
Development,
introduce that at the same time you introduce saving programs. It will save
everyone ***lots*** of grief later if he gets the idea that design and
testing
is "the way."
I would be gratefull if people who had a similar experience would told me about
it. Or if someone could refer me to sources and articles.

thanks...

You're welcome.

John Roth
 
J

Jim Hefferon

(e-mail address removed) wrote
I would be gratefull if people who had a similar experience would told me about
it.
I brought home Alice http://www.alice.org for my kids the other day and
they now beg me to give them extra computer time so they can play with
it more. It is worth a look, at least.

Jim
 
S

Stan Graves

A young friend of me (12 years old) has asked me to teach him
programming (after I shortly described my programming job as
telling the computer what to do and not the other way arround).
I choose python because I personally like it but I was wondering
to what extent is it appropriate for this task.
What do you think would be our first programming assignments? And what
language constructs should we start with?

I'd start the same way that all real world programming starts, with a
problem to solve.

Start with the problem analysis and decomposition. Then move into
prototyping, and develpment. You can even deliver the product in
stages, eventually adding the GUI and the networked version.

I'd try to find a simple task that would be of use and interest to the
person. Maybe a simple database to keep track of all his comic books
- or the stats of his favorite sports team - or an insect collection -
something that he is interested in already and can be easily
represented on a computer. Once you have a real problem, then you
have something to talk about. The problem and the proposed solution
will drive the way the programming language is introduced.

In essence, I'd step back from "programming" and focus on the
"design". To me, "programming" a set of written directions to get
from one place to another. It's a set sequence, often without
context, the only known points are the start and the end. If you get
lost along the way, it can be difficult to recover.

I prefer to focus on the "problem" and the "design" space - I think of
that as a map. I know where I am, I know where I'm going. I like to
have a feel for how those two places are related, and what I'm likely
to find along the way. But, I don't have any specific directions or
instructions that describe how to get from one place to the other.
It's simplistic - but it gives me a useful way to think about my
approach to solving problems.

--Stan Graves
(e-mail address removed)
http://www.SoundInMotionDJ.com
 
T

Thomas Guettler

Am Thu, 16 Oct 2003 08:55:21 +0200 schrieb and:
I would be gratefull if people who had a similar experience
would told me about
it. Or if someone could refer me to sources and articles.

My first experience with computers was, that my
sister learnt math with it. My father programmed
a very easy small loop:

The programm choosed two numbers smaller than 100,
and asked:

34+12=?

Then you need to type in the anwser, if it was
correct, the computer made a nice sound.

A twelve year old boy can learn both with this:
Programming and math. He can start to add
more difficult operations: multiplying or
divison.

My second experience with programming was,
that I learned english vocabulary with it. You can
code a small programming for learning this quite easy.

I would just use print and sys.stdin.readline(), this
makes the programm easy to understand. You can learn
a lot with such a small application: Capital cities, Years
of important historical events ...

I aks myself if my son, which is now 6 months old, will learn
python when he is twelve.

thomas
 
L

Lee Harr

A young friend of me (12 years old) has asked me to teach him programming (after
I shortly described my programming job as telling the computer what to do and
not the other way arround). I choose python because I personally like it but I
was wondering to what extent is it appropriate for this task.
c) Should we run to "cool" things (GUI, networking, other proposals?) or should
we first make a good hold of "algorithms" (which in my opinion is at the heart
of programming).


I think you can do both. I have been writing a book and related modules:

http://www.nongnu.org/pygsear/
http://staff.easthighschool.net/lee/computers/book/

Feedback welcome, of course :eek:)
 
J

John Roth

Jim Hefferon said:
(e-mail address removed) wrote
I brought home Alice http://www.alice.org for my kids the other day and
they now beg me to give them extra computer time so they can play with
it more. It is worth a look, at least.

I took a quick look at the Alice site, and it looks like an absolutely
wonderful
learning tool for children that have no obvious interest in ever becoming
professional programmers (or even power users.)

John Roth
 
L

Lee Doolan

andy> A young friend of me (12 years old) has asked me to teach
andy> him programming (after I shortly described my programming
andy> job as telling the computer what to do and not the other way
andy> arround). I choose python because I personally like it but I
andy> was wondering to what extent is it appropriate for this
andy> task.

andy> a) Its interpreter is very nice but it hides some basic
andy> truths about computers. Namely, the need to compile and the
andy> differences between the languages of humans and languages of
andy> computers.

andy> b) Most simple tasks can be achieved so easily that "there's
andy> nothing to learn". What do you think would be our first
andy> programming assignments? And what language constructs should
andy> we start with?

andy> c) Should we run to "cool" things (GUI, networking, other
andy> proposals?) or should we first make a good hold of
andy> "algorithms" (which in my opinion is at the heart of
andy> programming).

andy> I would be gratefull if people who had a similar experience
andy> would told me about it. Or if someone could refer me to
andy> sources and articles.

andy> thanks...

andy> ----------------------------------------------------------------
andy> This message was sent using IMP, the Internet Messaging
andy> Program.


,----[ http://www.squeak.org/ ]
| The core team behind Squeak includes Dan Ingalls, Alan Kay, Ted
| Kaehler, John Maloney, and Scott Wallace. All of this has attracted
| many of the best and most experienced Smalltalk programmers and
| implementers in the world."
`----

The Squeak source code is available although I'm not sure of the
license details.
 
C

Cousin Stanley

Lee ....

Thanks for posting the link to Squeak ....

http://www.squeak.org/

Although I've heard about SmallTalk for many years,
I've never got around to actually looking into it ....

There seems to be enough gee-whiz factor
in the Squeak package right out of the box
that might attract potential young programmers
while learning ....

I'm sure it will keep this 57 year old kid programmer
occupied for at least a few days ....

I ran across a couple of SmallTalk references
yesterday while looking for some Python info
and Squeak seems to provide a convenient way
to examine some of those concepts ....
 
D

Daniel Ehrenberg

A young friend of me (12 years old) has asked me to teach him programming (after
I shortly described my programming job as telling the computer what to do and
not the other way arround). I choose python because I personally like it but I
was wondering to what extent is it appropriate for this task.

a) Its interpreter is very nice but it hides some basic truths about computers.
Namely, the need to compile and the differences between the languages of humans
and languages of computers.

Underlying truth that all programs have to be compiled? That's a
reason not to use any scripting languages? Compilation is not that big
a step, and scripting languages are gaining ground. You like Python,
so you probably use it for many things. Why can't your friend?

Python is not exactly like English.
b) Most simple tasks can be achieved so easily that "there's nothing to learn".
What do you think would be our first programming assignments? And what language
constructs should we start with?
There is stuff to learn, and if there truly is "nothing to learn",
then you can move on to advanced things faster.
c) Should we run to "cool" things (GUI, networking, other proposals?) or should
we first make a good hold of "algorithms" (which in my opinion is at the heart
of programming).
IMHO you shouldn't fixate on algorithms because it will bore him/her.
Maybe you could teach algorithms and "cool" things at the same time?
 
S

Sean Ross

c) Should we run to "cool" things (GUI, networking, other proposals?) or
should
IMHO you shouldn't fixate on algorithms because it will bore him/her.
Maybe you could teach algorithms and "cool" things at the same time?

How about trying to make a small game. Perhaps a text-based adventure, or
maybe use pygame to make Pong or maybe Tetris. Something that doesn't take
too long to make, or too long before providing some feed back. Most of the
language constructs would be encountered during such an enterprise, and you
may even have to use some algorithms along the way ...

Have fun,
Sean
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,756
Messages
2,569,534
Members
45,007
Latest member
OrderFitnessKetoCapsules

Latest Threads

Top