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.
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.