I teach Object Oriented Programming (OOP) and Graphical User Interface (GUI) programming using Java. At the end of a term during which I taught OOP I conducted an evaluation of the course. One of the common sentiments from students was that they needed more lab hours and practical sessions in order to practice programming. While this might sound like an obvious sentiment to most people who teach programming or to those who work as programmers, it might not be an obvious choice for students who study part-time and have only 3 hours a day to attend classes after a full day at work. Most of my students are part-time students. It might also not be an obvious choice for institutions that have to share limited resources (computer laboratories) among the many courses that they offer, leaving occupancy of labs to at least 70% lecture time and very little time to students’ personal learning and to dedicated practical sessions.
The combination of limited resources, limited time for students to attend classes, the need to complete the syllabus within a strict amount of time, and sometimes the lack of availability of lecturers during extra hours, produces students who complete programming classes and somehow manage to pass exams, but who cannot write a ‘Hello World’ program without conducting a quick Google Search. The fact that students manage to pass theory exams is not a good indication of their abilities in programming for two reasons: (i) considering the aforementioned factors, the students are likely not to have gone through enough (if at all) practical sessions to hone their programming skills; and (ii) in most Kenyan institutions a theoretical end-of-semester exam takes a bigger percentage of the overall assessment marks (60% or 70% in most places), which in my opinion is too much a portion to assign to a practical course such as programming. Further, it is no secret that a good number of Kenyan students cram their way through university. Indeed, the quality of Kenyan education has been decried by many. This is a constant conversation that I have been part of on Twitter (@evangelinechao), and it is one that has been written about by others in local newspapers and blogs [1,2].
While it might seem that it is difficult to increase the practical sessions for students and possibly introduce more practical tests and exams for subjects like programming, there are some potential opportunities to contribute to a solution. My suggestions are:
- For researchers in educational technology to design and experiment with technologies that could potentially support students to learn programming or other practical subjects through learning-by-doing and not by merely reading text. It is this motivation that led to my PhD research, which focused on enabling students to construct Java programs on their mobile phones [3,4]. This is still my current research interest and I am working on additional experiments in this area.
- To experiment with flexible models that work around limited resources and students’ availability. I am currently teaching GUI programming. In order to plan around the available limited resources, I made arrangements to secure extra lab hours (in addition to the 3 hours set for the class) a month in advance. In order to ensure that students would be available during the extra hours I spoke to students who would potentially take GUI programming, before they registered for the course, to find out the hours they might be available outside the lecture time. With this, I was able to come up with a course schedule that included the lecture material during the set class hours and the practical material that we shall cover during the extra lab hours. During our first lesson 100% of the full time students and 95% of part time students confirmed that they will be able to attend the extra lab hours. Further, this model allows me the time to conduct practical continuous assessment tests. While this model will require me to work overtime it is one that I am willing to follow through in order to measure students’ programming skills, their ability to work on practical tests and ultimately their general performance in the subject.
- Institutions can either reduce the percentage of marks that are allocated to theoretical examinations in practical subjects or they can introduce practical examinations for practical courses. With such adjustments institutions might be forced to allocate additional resources, time, instructors and teaching assistants to the practical aspects of courses such as programming.
Institutions might not be able to change their working models overnight nor can they instantaneously provide additional resources, but teachers and researchers have the responsibility and ability to experiment with models that might work for them and their students. Further, documenting and sharing various experiences and models by academics would be a good source for best practices. Additionally, researchers have the opportunity to use the resources that their students have (such as mobile phones and tablets) to provide the much-needed practical solutions that will enable our students to graduate with practical skills. Needless to say, we should not resign to producing students who have not acquired adequate skills while riding on the excuse of limited resources, among other factors. Limited resources and limited time for students might be our current reality but such factors are certainly a great source of ideas for experiments and invention, or just that they provide big rooms for improvement.
 Munene, I. (2016). Kenya’s universities are in the grip of a quality crisis. The Conversation. Retrieved from http://theconversation.com/kenyas-universities-are-in-the-grip-of-a-quality-crisis-54664
 Mbogo, Chao, Edwin Blake, and Hussein Suleman. “Initial Evaluation of a Mobile Scaffolding Application That Seeks to Support Novice Learners of Programming.” International Association for Development of the Information Society (2014).
 Mbogo, Chao, Edwin Blake, and Hussein Suleman. “Design and Use of Static Scaffolding Techniques to Support Java Programming on a Mobile Phone.” Proceedings of the 2016 ACM Conference on Innovation and Technology in Computer Science Education. ACM, 2016.