Wednesday, October 26, 2011

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.

5 comments:

Collin Michael Nunis

said...

rogramming does help develop thinking skills and like everything else, it should be nurtured at a young age. With multiple programming tools and resources available for children, I hope that it will happen. We can't wait until high school to have these kids know nothing about programming. Its not just the software development skills, but its also about developing analysis skills.

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.

Rambling Teacher

said...

I fully agree, Collin. I am happy that my daughter's school teaches programming from grade 4 level. I don't really know what environment they use since she's not there yet! Many primary schools use Scratch or Game Maker. The beauty of Scratch is that kids can tell stories and much research shows that many girls prefer that over writing games. Game Maker games can look more polished.

Anonymous

said...

The analysis skills and problem solving skills are very important... and programming gives students a setting in which they are more likely to develop important problem solving skills... with such programmes like SCRATCH (which are designed to help students learn programming) allowing students to be in charge of the creative process and to create something they want to create, the motivation for students to persist and explore possible solutions is MUCH greater than in other more traditional settings.

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.

Rambling Teacher

said...

Thanks for your valuable comments, Anonymous. A colleague of mine has a friend teaches postgraduate Biology and who finds that he needs to spend time on teaching programming. He laments the fact that students get to that level before they're introduced to it.

Anonymous

said...

With ProgrammingKit.com you get practice programming a computer! Kids and adults can have fun moving the bug around and drawing different designs.

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.