Every child should learn computer programming
In a previous post, I have listed a few
reasons for teaching programming in school. In this post, I intend to
argue that computer programming is an essential
skill in the curriculum. I was prompted to write it
when I read the following comments made by Steve Jobs:
"In
my perspective ... science and computer science is
a liberal art, it's something everyone should know how to use, at
least, and harness in their life. It's not something that should be
relegated to 5 percent of the population over in the corner. It's
something that everybody should be exposed to and everyone should
have mastery of to some extent, and that's how we viewed computation
and these computation devices."
(http://www.npr.org/2011/10/06/141115121/steve-jobs-computer-science-is-a-liberal-art?sc=tw&cc=share)
Usually,
when society decides that a skill should be known by all, or most,
people, we add it to the school curriculum. So far, it seems that
we're operating on the assumption that computer programming is a
skill that should be relegated to 5 percent of the population.
Programming
as an aid to learning
Those
of us who have learned to program usually find that our thinking
changes in many ways. When you want to write a computer program, you
have to teach the computer to do something for you. This involves
iterations through a process of deciding what you want to
achieve, breaking this down into small tasks, describing
these tasks precisely, writing the program and, most
importantly, testing and debugging it.
Debugging
is a powerful metaphor for all learning. I read somewhere that most
students approached tasks with the attitude that they either "get
it" or "don't get it". Debugging introduces a process
whereby strategies are trialled and improved upon in a gradual way.
Here's what the legendary Seymour Papert has to say in his book,
"Mindstorms":
A
deep understanding of programming, in particular the notions of successive decomposition as a mode of analysis and debugging of trial
solutions, results in significant educational benefits in
many domains of discourse, including those unrelated to computers and information technology per se.
Programming
as a skill for the 21st century
Mitch
Resnick, of MIT Media Labs, talks about "interactive literacy".
He says that one is not literate simply because he/she can read. You
expect a literate person to be able to write. In the same way, he
argues, most people consume media but are not able to create
it themselves. Here's an excerpt of his argument:
Recent
commentaries on new media literacy have emphasized the importance of
the ability to analyze media critically and the ability to
participate actively in online communities. Those abilities are
clearly important. But I feel these commentaries haven't paid enough
attention to another important aspect of new media literacy: the
ability to express oneself with new media. This aspect of literacy is
sorely lacking in today's society: very few people are able to
express themselves fluently with new media
technologies.(http://civic.mit.edu/blog/interactive-literacy-0)
Resnick
acknowledges that more content is being created now than before.
However, he points out that most of this content is in the form of
websites and blog posts that use traditional forms of media. He adds,
"For me, the most important and distinguishing property of new
media is interactivity".
Like
Papert, Resnick has backed up his words with actions. He is the main
force behind the Scratch
programming environment which enables kids to build this
interactivity in a fun and effective way.
It
is now easier than ever to teach programming to kids. There are now
many visual environments that are custom made for use with
school-aged kids. In my school, we have introduced Scratch at year 7
level, our junior year. Some of the IT teachers were reluctant at
first. Now, they rave about Scratch and love what their students have
produced with it in a very short time.
I
hope this post will help me start a conversation with some who are of
the same opinion and others who disagree with me. I am planning to
follow it up with two other posts: A guest post from a colleague on
Scratch as a constructivist learning environment and another on why I
am passionate to see girls, in particular, taught programming at
school.
Please
join the conversation by leaving a comment.
Comments
I always believe that software developers, like musicians, have only creativity and lots of thinking skills at their disposal. I personally feel that these are 2 key elements necessary to change the world. Being both, I can personally tell you how it feels to have made someone's life better. Steve Jobs was right to say that programming is a liberal art.
When I was at school, programming was an 'elective' for those interested in computers where it was generally about copying a lot of code and not knowing if it worked or didn't work or why or why not. How different it is today with programs like Scratch and the simulators which allow instant feedback on what you have created... for the first time programming is now accessible to everyone and WHY shouldn't everyone learn a little bit of it?
Also, it probably isn't stressed enough just how much basic programming is used in the sciences... where any modelling is done. A friend of mine who has lectured Graduate Courses at various Universities is always shocked with how little many of his students know about programming... and, all too much, how poor their logical problem solving skills are... perhaps these two deficiencies go hand in hand.
Parents: Ask your child to have the robot bug walk in a pattern (square, triangle, etc). Use the grid to count the boxes. Ask your child to have the robot bug walk to a particular spot on the screen.