It’s not easy for computer science students at most universities in Africa to practice and develop their programming skills. They have the ability to program, but access to desktop or laptop computers might be a problem. I experienced this first-hand while teaching programming at a Kenyan university.
Most African universities have public computer laboratories, but these tend to be used to teach various classes, hence limiting students’ access. Many institutions may also have very few computers for a large number of students. This means that students might need to access computers outside the classroom in order to practice programming. Yet, most people in developing countries do not own computers at home.
Limited access to PCs aggravates the learning difficulties faced by programming students. This is especially true because programming is best learnt through practice. However, most students own mobile phones. Cell phones are the most widely used devices among students in developing countries—and, indeed, among Africans more generally.
I therefore set out to develop a solution that would enable students to learn programming using mobile phones. The biggest challenge was turning mobile phones into functional programming environments. After all, they aren’t designed with programming in mind. They have small screens and small keypads that impede their use as programming platforms.
So I designed what I called scaffolding—or supporting—techniques that allow for the effective construction of programs on mobile phones using the Java language. These techniques can also address new learners’ needs. The results, taken from my work with 182 students at four universities in South Africa and Kenya, are encouraging.
The scaffolding techniques I designed can be used on Android platforms. They are specifically aimed at students learning Object Oriented Programming using Java.
The technology works by offering three types of scaffolding techniques:
- Automatic scaffolding, which are supporting techniques automatically presented on the interface. These include instructions on which buttons to press, error prompts and suggestions to view an example while working on a program. These scaffolding techniques fade away as the student gets more familiar with the application.
- Static scaffolding, which involves supporting techniques that never fade away. I included two such techniques. One presents the layout of a Java program on the main interface, so the student always has a visual representation before interacting with the program. This technique is said particularly to support a new student’s learning. The second static scaffolding technique involves creating the program one part at a time, breaking it into smaller parts. This is an effective way to support the creation of a program on small screen devices like mobile phones.
- User-initiated scaffolding, which are supporting techniques that a student can activate. Examples include hints, examples and tutorials.
I tested these techniques on the students while they constructed Java programs on mobile phones. Their feedback was largely positive and suggested that scaffolding techniques specifically designed for mobile phones and based on students’ needs could support the learning of programming using a mobile phone.
Desktop programming environments are complex interfaces. Large screens make it possible for students to be exposed to large amounts of information in one sitting. Large screens also mean that students can be given support, in one place, without having to leave the interface. Providing all this functionality and support in one interface doesn’t work well on small screens.
But my research suggests that small screens have some advantages. Students told me that the more simple interface on a small screen helped them to focus on the task at hand. When they had to create a program one step at a time, they didn’t have to grasp a huge amount of information all at once. This may assist their learning in the long run.
Certainly, the study wasn’t perfect. The scaffolding I developed was only for Android platforms, which excludes users from other platforms such as Windows and iOS. And while mobile phones are far more common among students than private desktop or laptop computers, there are some students who do not have and cannot afford even these devices.
My research is not over yet. My next steps will take these problems into account. For example, the techniques I designed will be tested on other programming languages – such as C++ – and on other mobile platforms. I am also keen to investigate the design of such scaffolding for tablets which are becoming more common among African university students.
The study I’ve described here relates to my PhD, which I was awarded at the University of Cape Town in Dec. 2015. Since then a number of my peers have suggested other areas to explore and improve. From 2017 my programming students at Kenya Methodist University will use the prototype I tested in a longitudinal study. None of them have ever used a mobile phone to program, so this will be a new experience.
For the foreseeable future, African universities and other institutions offering programming subjects will continue to struggle with resources. As long as this situation persists and students’ access to mobile phones and tablets grows, the techniques I’m developing could offer a smart solution that allows the continent to keep producing young programmers.