About thirty or so kids attended a summer camp organized by the Swathanthra Software User's Group, Malappuram. The camp was at the `Tharakan School' at Angadippuram, a 100 year old aided school. Students were taught basic electronics, computer interfacing using Phoenix and elementary Python programming by a group of "GNU" volunteers for three days starting from April 29. On the last day (May 1st) of the camp, each student gave his/her feedback and suggestions for improvement. Next, I was asked to give my feedback. I told the kids that I teach engineering college students - but I would love to stop that and start teaching school kids! There was loud applause and the students were all very happy. Yes, I did speak the truth - as a teacher, mentoring these kids for a period of 3 days gave me far more satisfaction than teaching engineering students for maybe over 9 years. These kids were genuinely excited about learning new things and they could pick up concepts very fast. My experience with them makes me believe that the best way to make the Free Software movement succesful in our country is to take it to the schools - that's were it will really make a difference.
`Angadippuram' (the place where the school is situated) is just about 2 hours journey by train from Trichur - you have to get down at Shornur and catch the Palghat-Nilambur passenger. We were under the impression that we would be getting down at a small, village-like place. The impression did not last long - Angadippuram is a very `modern' town which seems to be the hub of lots of commercial activities. We reached the school just in time to start the day's programme.
Tharakan school seems to be the oldest in Angadippuram - it's an aided school and as such, operates under lots of constraints. But the computer lab was fairly well equipped. We were happy to see all the machines booting into Debian GNU/Linux! About thirty students (there were a few students from other schools also) sat expectantly - some of them no doubt thinking whether it would be worthwhile sitting through a `camp' during the summer vacation when they could as well enjoy playing outside!
Hiran started off with an introduction to GNU/Linux. By the time he finished, he had become a hit with the students - he was their `GNUettan' (Hiran has some other GNUish names too). Hiran asked them to explain the difference between Windows and GNU/Linux and pat came the reply - GNU/Linux is free software! But then, Windows too is "free software", isn't it, I intervened. The kids were quick to point out that with Windows, you don't have certain `freedoms', like the freedom to copy! Another kid jumped up and asked Hiran to explain the meaning of a `kernel'. Hiran did his best to clarify things. We realized that we were *not* talking to clueless `software engineers' from Bangalore but to a bunch of really smart kids!
We were planning to demonstrate some interesting GNU/Linux tools like GIMP, OpenOffice etc - but it turned out that most of the kids have had some exposure to these things during the past year. So we had a problem at hand - what do we `demonstrate'? It was then that Sreejith told me why not show them the commandline. We asked the students to open a terminal and showed them some simple commands like date, echo etc. One interesting thing which I noticed was that experimentation was something which came naturally to kids (a few more years of `education' will succesfully wipe out this skill) - nobody had to tell them to try out `time' once they had seen `date' or try typing commands in upper case - they were trying it out on their own!
Sreejith had another interesting idea - he asked me to show the kids the `setleds' command (you can use this command to put the keyboard LED's on/off) - I did so, and they loved it! Now, Sreejith (as well as the rest of us) were getting even more excited than the kids - he had another crazy idea - why not teach these kids shell scripting? Write a `while' loop and show them some `blinking LED's'? We went for it and very soon the kids were experimenting with different blinking patterns all on their own!! They were not bothered by the fact that they did not clearly understand the concept of a `shell' or the idea of how a condition gets evaluated - they had seen an example, understood one or two things about it and were ready to find out things on their own. It is this skill that a good education system should develop and enhance to its fullest potential.
The GNU/Linux introduction session soon came to end (well, as you have seen, there was little to `introduce')! It was now time to get the students involved with some basic electronics experiments. Sreejith had downloaded some cool videos of the Asimo Humanoid Robot - we started playing them on one of the PC's. Sreejith then started explaining the intricacies involved in engineering a robot like Asimo. The idea was to get the students prepared to appreciate the concepts which they will be learning during the rest of the summer camp. Sreejith told the students how the robot learns about its environment by using `sensors' - how the sensory data is fed into a `computer' and how the computer runs some `software' which controls the motion of the robot. There was one stunning video which showed Asimo holding the hand of a girl and walking with her like an obedient little child! When the girl slowed down, Asimo also slowed down - in fact, Asimo kept pace with her perfectly!
I had taken along with me Ajith's RoboSapien. It was great fun watching Robo walk, turn and dance!
The basic electronics session was fully hands-on. We did not try to `teach' anything. We made the students do experiments and draw conclusions on their own. I had taken along a bag full of components, a few breadboards and three digital multimeters. Thanks to the efforts of Sreejith's sister, a local electronics shop sponsored a `kit' for each student (a few led's, resistors, a battery holder, a switch, diodes, transistors). The students were split up into six batches. We handed over batteries and multimeters and asked the students to measure the `voltage' of the batteries. We showed them how to use a breadboard and wire up a simple circuit with a battery, an LED and a series resistor. The students changed the value of the resistor and observed the variation in brightness of the LED and inferred ohm's law directly from experiment. They found out resistance by reading colour codes and verified the values by checking with the multimeter. Most of the time, we tried to make them infer/guess as much as they can. Thus, we showed them an LDR, told them that it is a `light dependent resistor' and asked them to find out how it worked. Within a few seconds, we saw one fellow reading the resistance of the device after covering it up with his hand and once again, after removing his hand! Similarly, when we demonstrated a potentiometer and asked them to guess where it might be used, they were quick to come up with suggestions like `fan regulator'! By the time the first days session finished, the students were introduced to a few imporant basic components and their working.
The second day's morning session introduced the students to a few more components including the 7805 voltage regulator and the LM35 temperature sensor. Series/Parallel networks were also experimented with. The afternoon session was an introduction to Python. Things went off smoothly till the `for' loop was introduced. The kids had some trouble understanding how it worked. I had asked them to sum up an array using a for loop. But eventually almost all of them got it right. The afternoon session ended with an introduction to the binary number system (which was essential for them to write Phoenix code).
The third day's session began with an introduction to Phoenix. Because of time limitation, I thought I would concentrate only on the digital inputs/outputs. The kids had very little difficulty mapping the abstract idea of binary numbers to something physical - like voltages coming out of the digital output pins. I just called write_outputs with different numbers as arguments and asked one of the students to measure the voltage on the digital output pins. Two or three such demonstrations and the idea was clear! I connected an LED to one of the digital output pins to light it up - but there was no effect. This was used as an opportunity for troubleshooting. The kids came out with all the different possibilities - maybe, the LED is not working, the resistance is too high, the LED is connected in reverse ....
The star attraction of the camp was, however, Sreejith's Phoenix powered battlejeep. Sreejith hacked the remote control unit of a toy jeep to accept 4 bit commands from the phoenix digital output pins. Just connect the remote to the phoenix box and execute `write_outputs(1)' and the jeep starts moving forward very fast. Similarly, write some other numbers and the jeep starts moving in reverse and turning left, right etc. We gave a small project to the students (and also a small prize to the team with the best project). We asked them to develop a sequence of commands to make the jeep move in some interesting manner. One team developed a sequence for an "H", another for an "8" and so on. The teams were asked to `formally' present their ideas. During his team's presentation, one fellow showed how to control the average speed of the jeep by sending variable length on-off sequences; he has `discovered' PWM!
The camp ended with a small presentation on using Phoenix for physics experiments (it's original purpose). This was basically meant for the two Physics teachers present in the audience. These two school teachers had sat through all the sessions doing experiments along with the kids. The kind of enthusiasm they have shown makes me believe that everything is not lost yet. We need many many more such teachers.
Many times during the camp, I had asked the students what they wanted to be in the future. A few boys responded by telling me that they wanted to become Software engineers, electronics engineers etc. There was no response from the girls. But when it was time to give us feedback, one girl came up and told us that she had no definite career plans - but if she gets a chance to study further, she will become an engineer! Yet another girl told us that she will become a teacher! If it was this summer camp with GNU/Linux, Phoenix and Python which motivated such a response, then we should indeed be happy!
Update: Check out Hiran's report