Teaching Computer Sciences in Africa

posted in: Blog, CV STEM 2015 | 0

Michael Leventhal, Chief Nerdy Development Officer

July 29, 2015

I developed 4 hours of instructional materials in Computer Science for iNERDE’s Colonie de Vacances STEM. Four hours may not seem like much but it took me about four months to develop the material. Teaching computer science and/or programming to elementary school age children is relatively new even in the United States. I had to think carefully about how to make it work in Africa.

There are occasionally culturally specific references that don’t work with African kids; they are funny when you run across them but are more rare than one might suppose, given how much American culture has spread throughout the world. One of our our projects required the kids to bring cereal boxes from home – West Africans don’t eat cereal for breakfast and the kids had no idea what a cereal box is – despite the concerted efforts of General Mills to cerealize the world.

In computer science one African specificity is that many of the kids have limited exposure to computers, aside from the now ubiquitous smartphones. When I ask what computers can be used for one common answer is to make calls. Those that have had some access to computers generally don’t have much experience with the internet. By far, the number one internet application that kids will name is Facebook. Internet access is almost universally painfully slow so most kids never get beyond the really important stuff like updating their Facebook page. I myself gave up after waiting 10 minutes for a single page to load. Only one student out of 150 knew what Google was; internet speeds are such that surfing the web is still not feasible for most Malian internet users.

Of course, computer science is not just about the internet, though it is useful to start with some internet fluency to motivate the study. The kids sense that computers are extremely important but they have little sense of why. To me, as a computer scientist with a lot of hardware experience, the fun part is the underlying computational math, the electronics, and design of systems as well as the programming and the applications. As an instructor in computer science, I wanted to give the kids a taste of the math, science, and engineering – while keeping it fun, targeted at their age level and background but rigorous in terms of teaching basic concepts of computation they would be able to apply in other STEM fields in addition to computer science and to be able to build on.

I looked at most of the material developed in the United States for elementary school education in computer science. I took a training course offered by code.org. That material is, in my opinion, really excellent. Despite the name code.org and the emphasis on programming, code.org does a very good job teaching computer science fundamentals. I would have considered using some it in Africa but it currently requires high-speed internet access. Code.org is working on non-internet based version so I may be able to consider using it next year. Code.org is also working on localization, that is, allowing it to be presented in multiple languages. Quite a bit will come out in French now, but the translation is imperfect and there is still embedded English text here and there. Still, the effort is being made and iNERDE is considering working with code.org to improve the interface for French-speaking African kids. Code.org also has “unplugged” activities for teaching computer science without using a computer. That was useful for Africa and I got some good ideas from that material.

My employer, Xilinx, works with local elementary schools, sending our engineers there on their lunch break to teach the kids about computers. I volunteered before leaving for Africa to get some experience teaching to iNERDE’s target age group. Xilinx engineers have put together material from a few sources, using MouseSquad and code.org. As a chip company, we also teach the kids about computer systems hardware and have created our own mini-course in Python. The kids seem to enjoy the hands-on introduction to computer systems hardware. I decided to also adapt this for Africa.

All iNERDE Colonie de Vacances STEM activities are hands-on and project based. Students learn the principles, build something, test it, debug it, improve it. Reverse engineering is also a frequent topic; study something, form a hypothesis of how it works, test the hypothesis, use what you learned to improve the design or build something similar. My first lesson in computer science was structured around the idea of reverse engineering, taking a computer, trying to understand all its parts, forming hypotheses about what each does, and most importantly, taking a computer apart to see how everything is connected, and physically touch and closely examine every component.

I feel there is another specificity to teaching in Africa, it is a bit of a broad generalization so I express it only as an opinion based on my limited experience and observations. I think that group activities are particularly effective here. The African cultures that I have seen strongly reinforce social bonds and solidarity, as I described in my blog about the traditional African way of eating. I find this to a very interesting and promising characteristic for STEM education in Africa. In my university studies the engineering departments were beginning to experiment with emphasizing group projects and cooperation. In the tech world, almost everything that is produced is the work product of large teams, while individual contributions are important the dynamic of the group is most often the most critical element to success. Yet, engineering students were leaving school with very little idea of how to work effectively on teams and it could take several years to fill the gap in knowledge of real world work practices before a new engineer becomes a valuable contributor. My university was attempting to address this problem and I think they were on the right track. Following the iNERDE paradigm, I had already oriented most of instructional material toward group work but as I gained experience teaching African kids I steadily increased the amount of group work until almost everything was done in groups. For example, I had a number of exercises which I had intended to have the students complete individually. However, I had some students who were very quick and would finish the exercise before other students. I gave those students responsibility to teach the other students at their table how to do the exercise. The end result was typically that all the students at the table finished by understanding the exercise much better than if each had only done their own work.

I began the computer systems lesson by asking the students what they think computers are, what computers are used for, and how computers work. In this kind of discussion there is no wrong answer but sometimes there are very interesting answers that lead to more interesting questions. In general, the students are game to make an attempt and the brainstorming was typically quite animated. I eventually steer them to the idea that a computer is a machine for processing information or data and that information may include many things like letters and numbers, words, documents, and equations, but also sounds, images, touch, and even odors and chemical reactions.

Initially, my next activity was hands-on examination of a computer but Pusso had observed that the idea of information flow was still relatively abstract. He suggested doing a kind of human simulation of the data flow in the computer. It proved to be an inspired idea. I wrote the names of the parts of the computer on sheets of paper; “I am the keyboard”, “I am the screen”, “I am the CPU”, “I am the hard disk”, “I am the fan” and so on and had students come up, take the signs, and play the role of each part. I then had three students play the role of input data, “2”, “+”, “3”. The keyboard typed out the data, the keyboard cable guided the data into the computer to the memory, the memory gave the data to the CPU which produced the results (another student) and gave the result to the memory. The memory made a copy of the data and gave it the hard disk. The memory then gave the result to graphic card, after which the display cable guided the result to the screen which showed the result to the class. During all of this activity the fan was busy fanning the students-computer to keep the system cool. The exercise introduced the names of most of the parts of the computer, gave a simplified idea of the function of each part, and conveyed the idea of data flowing through the system. It also got the students physically moving, using a bit of the idea that physical movement and sensation reinforces learning. Finally, it was fun and students happily realized that there would be nothing boring about learning computer science.

After the data movement exercise we were ready to take apart and understand a real computer. I had procured a dead computer for this exercise. The students were divided into two groups and one group came up at a time and crowded around the computer. I had a different student perform each of the dismantling operations. First, we looked at the exterior, observing in particular the exterior ports for sound coming in and out, the keyboard, the display, and the ethernet cable, to verify, indeed, that different types of information does indeed come into and out of a computer via the ports. We also looked at the power plug and heat vents as discussion of energy consumption was also an important part of the lesson. A student removed the cover. I asked the students to guess what the different parts of the computer were. The students removed parts, one by one, passed them around and I discussed the function of each part.

Having two groups, I had each group do a little work and then go back to their desk while the other group was at the computer. The group at their desks worked on a paper exercise where they needed to link the name of each part of the computer to its image and the description of the function of each part of the computer to its image. This gave immediate reinforcement to what they had learned actually working on the computer. I would put back the part or parts just removed by the preceding group for the group at the table and repeat the exercise.

Energy is an important topic in the iNERDE curriculum. I strongly emphasized that a computer is a system that needs electricity throughout to function and spent a lot of time discussing the conversion of electric energy to heat and the need to remove heat from a computational system. We looked at the power supply, observing that many wires came out of it, distributing power throughout the system. As a chip guy I have spent much more time thinking about heat sinks than most people that work with computers but despite being maybe a little obscure I felt it was a good topic for the lesson. First of all, it is the most interesting looking thing you see when you take apart a computer, so it is hard to ignore, and you need to remove it to have a look at the CPU. We carefully examined the heat sink and I drew it on the board showing how the heat from the CPU is transmitted into the heat sink and rises in the fins by conduction and that the fan, by sucking air through the fins, removes the heat. This discussion was good for me in that I will never forget the relatively uncommon French word for fins, ailettes. I also introduced the possibly non-intuitive notion that abstract processes like calculation (or thought) require energy because the CPU consumes a lot of electricity, producing heat, requiring strange things like heat sinks to cool the chip. The kids seemed to readily associate heat generation by the CPU with their brain heating up when they were trying to solve a difficult math problem.

We took out the motherboard, saw how the external ports we had seen in the back of the computer actually were attached directly to motherboard to get data to the memory and CPU, just as we had done in our human computer simulation. I flipped the motherboard over and we could see the wires going to memory and from memory to the CPU.

Also being a chip guy, I wanted to give the kids some notion of what a chip is to demystify it, at least a little bit. I prepared a sheet with images of a chip and its pins attached to a motherboard, a magnified image of a silicon die, a schematic of a transistor, and a picture of silicon wafer. To give them a little bit of an idea of scale I told them that there were more transistors in some computer chips than there are people in Africa. I did not include this information in the review material and I really only meant to give some notions, but all in all, I’m not sure this little discussion was useful. I actually have had the idea for many years that it could be valuable to teach children some basics of circuits; I actually had this idea first in my university class as I found it so fascinating that circuit design can be highly visual, circuit schematics are simple, beautiful and express ideas with astonishing economy. Perhaps I’ll experiment with this idea some day in the iNERDE curriculum. Certainly, it would make more sense to introduce silicon if one were to actually dive into it and take the time to actually explain what a transistor is.

Another topic I touched lightly on was networking. I wanted to explain that computers could be connected together and that information between computers was actually exchanged by physically connecting them with cables and that millions of computers are physically connected together to form the internet. I don’t think I had enough time to elucidate this concept sufficiently and the impact, in any case, would be less significant on my students with their limited internet experience. Given that most of their access to computation is on smartphones, it also necessitated that I add some explanation of wireless networking. One of the other iNERDE projects is construction of a simple radio so I felt I could tie in wireless networking to that. However, as with the material on chips, I think it was a little ambitious to also pack in this material.

The last exercise was back to hands-on and was a good conclusion to the lesson. We examined the internals of a laptop and a smartphone. We saw how the laptop was smaller and much more compact than the desktop computer, and also could run on a battery, but still had most of the same components of the larger computer. We also saw that that the smartphone had a very small motherboard, with a CPU, a very large, relative to everything else, battery, a camera with a tiny lens, and a fairly large 3G chip. The previous discussion of wireless networking helped a bit; when one student asked how the a smartphone made calls I pointed to an antennae cable and the 3G chip and explained how it worked like the radio, receiving a signal and converting that into sound in the 3G chip.

I began the next lesson in computer science with a review of the first lesson and was extremely pleased with the very high rate of retention that the students demonstrated. They actually knew more about computer systems hardware at 10 years of age, and living in countries with limited access to computers and the internet, than I knew when I entered Berkeley as a freshman in electrical engineering and computer science.