Amitabha Mukerjee
I dislike the word “teach”. I think we do not learn much when we are
“taught”; we know only those things that we learn ourselves.
The other day, I was looking through the
textbooks of Chikku who is a girl in my neighbourhood. I was particularly struck by her computers
book. It was a well produced book, with colour pictures and lots of words like
“CPU”, “random-access memory” and a whole chapter on Microsoft Word. When I asked her about computers though, it
turned out that she gets only half hour a week actually on the computer; most
of the work in the course is in memorizing the definitions given in the book.
I look around me, and overwhelmingly, this
is the fate of children around us. When
I talk to school teachers about “programming” – they talk about languages such
as C or Java and how these are taught in class 9 etc. Before that, computers are all about
memorizing some meaningless words.
For this, Chikku’s parents even pay an extra
chunk to her school.
I think, that it is time that parents took
into account what their children really learn, and not what they are “taught”.
And one of the things that children need to
learn is programming. The word “program”
comes from the Greek – pro means before, and gramma means
writing. (The sense of “gram” as a
weight is from the writing on standard metal weights.) A program was a written schedule that was
put up before the public (e.g. for a play).
This sense of a list of actions lent itself to the meaning – “plan
of tasks” which is what programming
means in the context of today’s computers.
It is vital that our children learn
programming from an early age – perhaps class three, certainly class six, and
not class ten. This is because unlike
almost anything else they are taught in school, programming trains the child in
planning out her own tasks – and is directly relevant to real life
success. As you are reading this paper,
you are executing a “program” – pick up the paper, open it, hold it in front of
our eyes, synchronize head and paper, find the column on which an article
continues, etc.. . .
Programming gives a child immediate
feedback. As anyone who has written any computer
program knows, things don’t work the first time. You have to change things, try again. And again. There is a shair by Fakira which
says “The value of victory is half a grain.
Failures are the true diamonds." That is why debugging programs are
so educative.
We must introduce our children to
failure. That is the only way they can
learn. And programming is the best tool
I know for involving the child in repeated failures, ultimately conquering the
task and gaining immense self-esteem.
What many people don’t
realize is that teaching programming does not even require computers. Here is something you can do with a bunch of
kids: give each kid two straws, and have
them measure it. Say they are 21cm
each. Now, using a ruler, have them cut both
straws into exactly (8, 6, 4, 3) -cm pieces.
Now have them draw a line 30cm long, and try to cover it exactly with
these pieces (no gaps, no extras). How
many ways are there of doing it? Now have them talk about the steps they did to
get the straws to fit. This is a program.
Next, have them try the same
for a line that is 40 cm. What lengths
can’t they get? Why? This second program asks them to combine a
lot of the earlier simpler programs (subroutines), and leads them to an
important insight.
Next – draw a maze with many
paths, and have them line up the straws so as to find a path from the Start to
the End. Each piece must fit exactly in
each path segment. This can be a
challenging program.
In a recent workshop with
some school teachers, we introduced some tools we use to help small children
program the motion of a toy with a set of motors. After the teachers played with these, they
spontaneously started talking about the importance of learning programming for
schoolchildren. This weekend, Tikku will
also be playing with these programs.
We don’t need to “teach” our
kids computers. We need for our kids to
“learn” programming. And it is not as
costly as you think.
---
Amitabha Mukerjee (mukerjee@gmail.com) teaches Computer Science at IIT