February 13, 2006

Java @ School : Why Not,What Not, How Not !

An apparent sign of progress and modernity in today's schools is the presence Computer Science in the curricullum. This is true both at the Class X as well as the Class XII level, but perhaps we should stop and ask ourself if this is really necessary at all.

I am no Luddite. I work in a multinational software company and have been an very early player ( albeit, a bit player ! no doubt) in the Great Indian Software story. But nevertheless and perhaps because of it I have some very strong views on the way computers are presented in schools today, by well meaning but extremely myopic academicians.

There is obviously no doubt or debate that computers are and will be an integral part of the way of life in future ... however that does not mean that each and every individual will be a computer programmer in his or her career.

Electricity is a way of life for all of us but does that mean that each and everyone of us has to know the intricacies of the generation and transmission of electricity ? Not at all ... all that we need to know is to how to use it, how to use if safely, how to pay for it and perhaps how to ensure that there is no wastage.

So should it be with computers. There is no need for all of us to learn computer programming but then what should we be taught ? Let me list this out

  1. Communication : How to use email, is of course the first thing to start with

  2. Search : How to look for information. Search Engines are the obvious solution but there are many other websites that have specific information on the 'normal' school subjects, like Phyics, Mathematics, History, Geography, Language. Google Earth should be taught as an alternative to map pointing. We all know that there is an infinite amount of information on the net. Why do we not introduce our children to search for all this in a systematic manner. As someone said, a long time ago, you give fish to starving man, you meet his requirements for the day, but if you teach him to fish you solve the problem for the rest of his life

  3. Creativity : Reading or acquiring information is not enough, the challenge lies in organising and presenting it in a manner that is understandable for all. Communication is the key to a global world and our children must be taught to use a word processor and a presentation tool ( both of which are available free of cost on the Internet ) to create high class project reports -- in lieu of the 'lab-book' style reports that are the staple in to today's schools

  4. Blogs and Websites : Individual project reports are lost after the session gets over. Why not inculcate the habit of preserving the work in the form of blogs and websites. Children must be taught that while it is fine to take information off the net, they must also learn to contribute to the body knowledge that they keep dipping into, so that others can benefit from their work. Or why not go the whole hog and try to contribute some articles in WikiPedia ?

  5. Subject Specific Software : There is software on the net, and available at low cost or free, that allows one to demonstrate or learn complex subjects like Laws of Motion, Flow of Electricity, Chemical Titration and other standard school level subject. These must be used to the full extent possible to take the drudgery out of learning.

  6. Unusual Projects : How about building a space craft ? Did you know that NASA provides detailed drawings on how to make carboard models of actual spacecraft ... These could be a welcome change from standard cut & paste 'projects' that children get their parents to do for them for the school.

  7. I suppose the list could go on and on ... but even I could not possibly list down all that can be done with Computers ... it is up to the individual student and his or her teacher to browse through the Internet and find out the millionplus useful things that children can do

  8. Finally there are sites dedicated to teachers .. to help THEM understand the net and how to use it to teach their students

So there are thousands of things that a child can do with computers but somehow our academicians believe that all that they should do is write computer programs and that too in Java.

OK. If that be so, then so be it ... but at least let us be pragmatic about the whole thing. As any computer programmer would know, all programming languages are by and large similar ... you have input and output statements, decision points, loops and what not .. only the syntax keeps changing. So it does not really matter whether you learn Basic or Pascal or C or C++ or Java .. what matters is you understand the concept well.

Unfortunately our academicians jump straight to Java ... but wait is it really Java that they are teaching ? Then where are the deep concepts about objects ? inheritance ? polymorphism ? Overloading ? Forget it ... most of the teachers would be hard put to explain these well, or give crisp, clear examples ( If they did ... they would working in software companies and earning ten times the salary ). On the other hand, it is indeed difficult to get such complex concepts into juvenile minds. So all the the children get to do is write programs that find prime numbers and perfect numbers, calculate factorials ( without recursion of course !) and do sundry other boring tasks that could be done as elegantly in Basic.

There is no attempt to write GUI based programs or programs that create images or music. Instead when the teacher wants to scare the student or is trying to show his own superiority ... he sets a problem based on strange and difficult algorithms .. for example to find all series of consecutive integers that add up to a given integer. Obviously only a child who has attended extra tutorial classes with the teacher would be aware of how to do this. [ Incidentally, this problem was given to my son .. and it took me an hour to solve. I had also shared this problem with high end programmers at my worksplace ... and everyone was stumped. And the teacher was expecting a fifteen year old to work out this algorithm during an examination ... how malevolent !]

So net-net : If we indeed have to teach programming to children, let us focus on simple languages and ask them to work out interesting programs. Not make them memorise algorithms and pretend to work with Object Oriented Concepts and Languages like Java when all they are doing is writing IF-THEN-ELSE and DO-WHILE code.

But it will be far better any day, if we decide to scrap programming from the course as such and introduce computers as a way of improving the understanding of any of the standard subjects.