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.