December 28, 2017

The fourth R : Computer Programming in Schools

The three ‘R’s -- Reading, wRiting and aRithmetic -- are the three fundamental skills that are compulsory in the curriculum of all primary schools. Should another R --  computer progRamming --  be also included as the fourth fundamental skill?  Computer programming -- as in Java or C++ -- is already being taught as an optional subject in many schools in classes  IX and X as  and Computer Science is generally available as the “fourth” subject in classes XI and XII. Then why do we need to make it compulsory and burden our already stressed out kids with one more subject?

Before we address this question, we must first stop viewing computers as just another career option, a vocational skill, on par with, say, medicine, accounting, music or sports.  Instead, we need to see it as an enabling tool that impacts all aspects of life. Programming teaches students to think logically, solve problems in a systematic manner and stimulates creativity. Eventually it will become a prerequisite to be able to share our world with artificial intelligence and even new forms of life! In this article, we explain why this is so.

A quick Google search on “why should schools teach computer programming” will throw up many pages that support the premise of this article and we will base our arguments on some of them. But before that, the very first step in our quest, namely searching in Google, reveals how entangled we are with computers. From the phone, through banks, e-commerce, GPS controlled app-cabs all the way to cars, aircraft and hospitals, nothing moves without a computer and each and every computer is controlled with a program. So at the very least, being able to write  computer programs ensures a degree of relevance in the employment market. But however powerful that may be as a reason to learn coding, the real reasons are significantly different and far more powerful.

In the past, managers would have secretaries who would, on their behalf, manage their “paperwork” consisting of physical “files” and postal mail. But today it is almost entirely a do-it-yourself scenario and people, including the most senior managers, have learnt how to perform these tasks themselves. A manager who needs a secretary today, to dictate memos to or to type, send and receive letters, would be a misfit in the corporate hierarchy. Replace the word “secretary” with an “IT professional” and the same would continue to be true for many corporate tasks. The ability to build a company website, to set up a system to accept customer feedback or carry out market research, to register members for an event and many other similar tasks, which in the past would have needed a staff from the IT department, are being done, or have to be done, by “non-computer” professionals. Just as knowledge of MS-Office and GMail have made secretaries almost obsolete, so has a whole range of free and easy-to-use tools, like Blogger and Google Docs, have made it almost essential for “non-computer” people to be able do what was earlier being done earlier by the “computer-people”. Similarly, students in schools need to learn computer programming not just to master Java and C++  but to facilitate their understanding of traditional subjects like history, geography, physics and chemistry. A certain fluency with computers is essential to explore new topics, through Google Maps and Youtube and software based science laboratories. A computer, like the English language, is no more an end by itself but a means, or medium, to reach out to and touch a vast realm of knowledge. Clearly, computers hold the keys to the new kingdom that is ruled by knowledge and information.

But does one need to learn computer programming to be able to use computers? Does one need to learn computer programming to be able to, say, use Blogger to create a website?  Or use Google Docs to create a workflow that routes an expense reimbursement request through an authoriser to the cashier who makes an authorised payment? Many of these tasks can be accomplished without writing a line of code as is the case when we use MS-Word to create a report.  But there is no doubt that having a fluency with coding gives a tremendous advantage, and more importantly the confidence, to be able to configure and implement these apparently codeless systems.

Programming, teaches one how to break up a big task into a set of smaller tasks, define the sequence in which these smaller tasks need to be done, or, under which circumstances some of these tasks need to be replaced by other similar tasks ( IF - THEN - ELSE ) and how many times each of these tasks need to be performed ( in a LOOP ) to achieve the final goal. The ability to think in such a structured manner is the key to the successful execution of any complex activity. This includes domestic chores, like cooking, where a recipe is actually a non-digital program, through corporate tasks, like manufacturing goods in a factory, to society wide programs like implementing Swachh Bharat or GST. Hence teaching a student how to write a computer program will in fact equip her with a crucial set of skills that is essential for the successful execution of a whole range human activities. This is where computer programming becomes as essential a skill as language and mathematics. Just as language and maths skills are useful even if the student does not become an author or an accountant, computer programming is a skill that remains important and useful even if the student has no intention of becoming a professional programmer.

How easy is it to learn computer programming? Many kids pursue a liberal arts education perhaps because they are so inclined but also possibly because they are mortally afraid of science and mathematics. Would it not be an unnecessary overload if computer programming is imposed on them? Not really. While the rules of  languages like Java and Python, so beloved of professional programmers, may deter those with a disposition towards the liberal arts, there exist many languages that use graphical metaphors to accurately represent complex programming constructs in a way that almost any child will be able to use with a ease and pleasure. Scratch, created at MIT Lifelong Kindergarten Lab in 2003 and subsequently adapted by Google and released as Blockly, is one such language. Components of this language are represented by coloured blocks that students have to collect, arrange and “stick” together, to create programs that perform desired tasks like leading a butterfly to a flower while avoiding a cat. Hidden in all these playful constructs are hard core programming concepts that can be revealed, if the child so desires, as actual Python or JavaScript code that will run on a real computer. Blockly is available at many portals like where it is used to create delightful modules that teach computer programming through self-driven exercises. These modules can be used not just by students of different ages but also by adults who have never written programs.

But the greatest value of teaching computer programming is the sense of empowerment that it fosters in students by allowing them to actually create something tangible. While many programs perform the same task or look similar, each program is in fact an original creation of the person who has coded it and there is no joy as overpowering as that that is felt when a program executes and does what the programmer wanted it to do. One of the unfortunate drawbacks of India’s school education is its emphasis on rote learning, on memorising, and its utter inability to incentivise students to create something original. Programming allows every student to virtually create something original and with a little effort, this can be hooked to or extended into the physical world.  For example, products like Mindstorm from Lego allow students to build and control robots that move while others allow the creation of apps that run on phones and tablets. As an aside, products like Twine allow those who wish to be authors, journalists or movie makers to create structured storyboards that help them put together storylines and presentations that do not follow a linear structure.

Creativity, whether strong or weak, is inherent in every student and teaching computer programming from a young age is perhaps the best, or easiest, way to nurture this precious asset. By being able to create something unique, each and every student gets the confidence that she too can build the kind of toys and gadgets that she sees in the market and in people’s hands. Sixteen year old Kavya Koparapu, originally from India and currently studying in a high school in the US, has built a lens-and-app contraption that helps diagnose critical eye diseases. Stories like this can emerge from India only when our own kids get the confidence to be able to build products from an early age.

Can schools in India afford to teach computer programming? Let alone teachers, do we have the infrastructure? When schools do not have books and blackboards should they even think of acquiring computers where students will learn programming? Good questions. For private schools this is a non-issue because most of them have infrastructure far in excess of what is required to teach programming but for government schools, this could be a dilemma. This is a different problem and the answer lies elsewhere. The real problem in government schools is not the lack of money but it’s rampant misuse. If this can be curtailed and if some of the sops that are handed out during elections can be diverted towards schools and not stolen, then there will be no shortage of computers anywhere. Management of money, not money itself, is what our schools lack.

The evolution of natural languages has shown that the ability to communicate is an essential driver of the evolutionary ascent of man. Without being able to communicate, the solo ape could never have come together to form flocks and packs which eventually became clans, tribes, nations and finally the civil society that we see today.  But in the last thirty years there has been the far more rapid evolution of a parallel intelligence in digital computers. This began with machines beating humans in chess and it now threatens to replace humans in many business and industrial activities. The social impact of the rapid rise of this artificial intelligence [see author’s article in Swarajya, March 2017] is still not very clear but there is no doubt that it represents a new kind of species, a non-biological, perhaps non-physical species, with which traditional biological species will have to share space in the future. Also, the rise of genetic engineering and biohacking [see author’s article in Swarajya, April 2017] is leading to the creation of man-machine hybrid cyborgs.  Machines with artificial intelligence are rapidly acquiring natural human language capabilities so as to be able to work better with humans. In some cases, as in the case of the famous Facebook example, “they” are learning to create their own languages. In this context, it is equally important for human beings to be as just adept with computer languages so as not to lose the advantage when interacting with this digital species.

In the past, people would learn foreign languages to benefit from commercial and cultural ties with foreign nationals with whom they share the world. In the future, people will need to learn the language of this new digital species with which they will share an ecosystem that consists of both man and machine. That is the real reason why we need to teach computer programming in schools, not just because it is a skill that helps one get a job in the IT industry.

This article was originally published in Swarajya, the magazine that reads India right.