Teaching Computer Programming in Schools - a Novel Idea

Author: Abhay Bindumadhav Joshi (abjoshi@yahoo.com)

Date: 1 April 2010

Children and Computers: Present Situation

Children have a natural fascination for computers. You can see them lapping up every opportunity to play with PCs and gadgets like video-game consoles and cell phones. The interaction of most children with computers consists of browsing the Internet, connecting with friends using chat and email, playing games, or using ready-made (and sometimes dull!) software like word processors. The best attempts in schools to introduce computers to their students also, as we will see later, do not go beyond the literacy level.

The New Idea: Using Programming as a Medium for Learning:

Programming means tapping into the computer's immense power by talking with it directly. Through programming, children use the computer's terrific power to draw graphics, design animation, solve mathematical or word puzzles, and even build robots. Such a close friendship with the computer unleashes the children’s intellectual ability and creativity. It also allows them to apply concepts of Math and Physics to solve interesting problems.

 

The choice of the programming language is critical. It is essential to use programming environments like Logo/Alice/Scratch/Squeak (and many others) that have been specially designed with "learning" in mind. These environments are simple and entertaining, and yet very powerful. They are called "low floor and high ceiling" languages. They allow the learner to build his/her vocabulary without getting mired in the complexities of syntax and grammar.

 

So, we teach programming; and in these programming courses, learning to program isn't the ultimate goal; the goal is to apply principles of math and logic, to learn critical thinking, and to unleash individual creativity. The focus is on fun, exploration, and challenging projects.

 

This type of computer education (known as "Constructivist" education promoted by eminent educators such as, Piaget and Seymour Papert) is widely recognized all over the world as a preferred way of introducing computers to children. The following websites give more details about this approach:

  1. http://scratch.mit.edu Home page for the Scratch community
  2. http://el.media.mit.edu/logo-foundation/ - web site dedicated to Logo programming
  3. http://www.alice.org - foundation dedicated to the ALICE programming environment

 

See Appendix A for additional papers written about the benefits of writing computer programs. The papers refer to Scratch, but the theme applies essentially to Logo and Alice as well.

Benefits of learning programming:

1.      Children discover the true power of computers. Their fear (or anxiety) about computers is replaced with a friendship.

2.      Children apply principles of Arithmetic, Geometry, and Physics in creative and enjoyable programming projects.

3.      Children learn new ways of thinking:

a.       Logical reasoning (no assumptions) and algorithmic thinking (step-by-step)

b.      Analytical thinking (understanding your own ideas so that you can teach the computer)

4.      Children learn a new technique of dealing with complexity (called divide-and-conquer).

5.      Children learn a new technique of problem-finding and solving called "debugging".

6.      Children learn in a friendly (computer never complains) and highly tolerant (there is no "right" or "wrong" in programming) environment.

Experience at Schools in Pune:

We conducted our courses for Aksharnandan School, DES School, and Ahilyadevi Girls' High School during 2008-09 and 2009-10. These schools are famous for their progressive learning culture. When we approached them and proposed our idea, they were very receptive and they invited SPARK Institute to form batches of students of 7th, 8th, and 9th and teach them computer programming.

Experience of Delivering Classes:

SPARK's teaching staff developed "Introduction to Programming" courses using two separate languages: Logo and ALICE. The teaching staff adopted an unconventional teaching methodology: They spent less time teaching (on the blackboard) and more time helping children learn through their own hands-on exploration, programming assignments, and the process of debugging (the act of figuring out where you went wrong). The teachers showed the children how to "bite as much as you can chew" by breaking a complex problem into smaller ones. (A house, for example, can be treated as a combination of windows, doors, walls, etc, instead of as one big object.) As a result, the students became good at spotting patterns in seemingly complex problems. Students got a more intuitive feel of geometry and physics. (A circle, for example, is a path with constant curvature, and not just an algebraic equation. Or in animation, a flying helicopter needs to calculate both the height and distance of the helipad in order to design a flight path to it.) Students learnt that programming is 90% thinking and 10% typing, since the computer is an obedient and powerful but dumb assistant that needs every little step spelled out clearly and correctly.

 

Following is a simple example in which a beautiful garden was drawn by a pair of 7th grade students, by simply creating a "petal" shape (see the code snippet in the box below) and then replicating it to draw the leaves and flowers.

 

 

 

SPARK's teachers encouraged students to select and design their own projects, and the result was a great variety of very imaginative ideas. A pair of students did a graphic of Dubai's skyline, many of them did a variety of gardens and landscapes, a pair did a basket of fruit and flowers, a pair did a beautiful aquarium.

 

Even though there was variation in students' grasping power, the variety of programming problems kept everyone busy. The teachers encouraged them to share discoveries and insights (made through mistakes sometimes) with each other so that the group as a whole made great progress in a short time. Homework was optional - its purpose was to help students reinforce their understanding.

Students' Response:

The students were delighted at the opportunity to do programming - to be able to talk with the computer directly, solve interesting problems, learn how to catch defects in programs (and in their own thinking process), draw cool graphics or animation on their screens, and work in a stress-free environment. The students not only attended all sessions, but also resisted cancellation of any session for any reason.

 

The initial fear that only "bright" students might benefit from these courses was completely disproved. Every child thoroughly enjoyed programming. There were in fact students who showed remarkable improvement in their enthusiasm for learning, class participation, Math abilities, and even working style. Their interest improved even in other subjects!

 

Following are comments of some of the students:

-         I loved the class ... It was an unforgettable experience ... I want to learn more ...

-         Now I know computer is not just for games ... I can actually talk with it ...

-         Besides programming I learnt Math and techniques of solving problems ...

-         Logo is fun ... The Turtle is cool ...

-         I learnt how to think systematically ...

Feedback from Schools and Parents:

School officials were very pleased with the experiment. They were impressed with the high degree of professionalism shown by the teaching staff. Their impression from what they heard from their students was very positive. They pointed out as an unusual fact that there wasn't a single complaint from any student about the classes.

 

Many parents indicated that their wards talked about these courses quite enthusiastically; that their daughter's or son's interest in Geometry and Arithmetic had taken a turn for the better. They said that their children now spent less time playing games and more time doing programming.

Conclusion:

It is clear that teaching children computer programming is a great idea. Students discover that the computer is a powerful assistant that can help them in any of their favorite subjects. Through the interesting ideas embedded in the programming environments and the specially designed programming problems, students' interest and ability in "difficult" subjects like Math and Physics improve substantially.

 

Students learn a great deal through programming. They become active learners (they learn through their own activity and creativity). They learn that answers are not just "right" or "wrong"; real life solutions usually require gradual improvement through "debugging". They learn to deal with complex problems by starting with smaller sub-problems. They learn to think about and analyze their own thinking, because that is the only way to program computers. Their overall learning process transforms from acquiring facts to creative thinking.

 

Before you teach programming at your school, the important points to remember are:

  • The philosophy behind teaching programming (that programming is for the sake of learning a new way of thinking, and to develop interest in subjects like Math),
  • Choosing an appropriate programming environment (which is interesting, easy to learn, and rich with learning metaphors), and
  • Using the proper teaching methodology (in which exploratory hands-on learning takes precedence over blackboard-based rote teaching).

Additional References:

1.      Mindstorms: Children, Computers, and Powerful Ideas by Seymour Papert (2nd Ed) - this book discusses the idea of "learning through programming" in great detail

2.      http://www.cs.berkeley.edu/~bh: Home page of Prof. Brian Harvey - the author of UCB Logo and of popular programming books on Logo.

3.      http://en.wikipedia.org/wiki/Educational_programming_language: A page on Wikipedia about educational programming languages.

4.      http://www.spark-institute.com - organization dedicated to helping children learn through programming.

About SPARK Institute:

In operation since August 2007, our aim is to show children how they can harness the real power of the computer by learning to program. We want to demystify the secrets of the computer for children and show them how they can use it as a powerful assistant to learn anything they want.

 

Our main activity at SPARK Institute is to teach Secondary School students (6th to 10th) computer programming using languages like Scratch, Logo, and Alice.