Someone asked me about my experience teaching Java in Africa and I thought it might be of general use so here is a discussion of my teaching programming in Lusaka, Zambia.
The Textbook
Firstly the text, I based the curriculum off of the Sun Certified Java Programmer study guide below:
A Programmer’s Guide to Java Certification
I chose to base it on a certification guide because I wanted the students to have a goal of passing an actual industry exam rather then simply taking my class. It also provided questions which were easily administered for quizzes, mid terms and finals. I photocopied each chapter for each of the 12 students.
Class Structure
The class was structured around a once-a-week 2 hour seminar class with programming assignments that were completed as homework. I used a white board to illustrate various concepts, and in fact I tended to teach the class more like a High School math class then like a typical tech training class. By this I mean to say that I drew lots of illustrations and listed out terminology on the white board instead of using PowerPoint. It was more tiring but allowed me to move with the class rather then have a set agenda that may not have fit the group.
Interactivity
Questions and engaging the students is of course extremely important and I tried as much as possible to get them to answer posed questions such as “Who can tell me the difference between implementing an interface and extending a super class?”
It was initially hard to get the Zambian students to trust me enough to raise their hands, so I would go around the room in a round robin fashion. Eventually a few of the students became the ‘stars’ and would raise their hands to answer every question.
Analysis of Results
It would be good to review how successful the class was. Not every student achieved in the class and the impact of the class was really felt by only the strongest students who had already had exposure to IT concepts. I would say that of the 12 students who started, 10 stayed until the end, 4 passed the final exam, and one was able to get a job as a java programmer within a couple of months.
Reflections
Soon after the class ended in the spring of 2004, I took a job to head up development on the Patient Tracking System or PTS (one of the systems that eventually merged into SmartCare) and my schedule and work environment radically changed making it difficult to continue teaching. That is something in retrospect I really regret as teaching the class was very rewarding for me and I think several of the students would have benefited from a second semester.
Years later while working on SmartCare I was able to head up a Study Group for Microsoft’s C# certification alongside Paul Sasik and some of my fellow SmartCare developers, but it was much less successful. We had about ten sessions but I do not feel that the same kind of progress was made. I think this was due to a combination of factors including, the lack of structure of a longer formalized class, the poor quality of the Microsoft texts and my relative lack of experience in the Microsoft programming model.
So my two points of main advice to any would be programming instructors would be to:
Get a good structured text that has lots of questions for quizzes and exams.
Teach the class like a class in High School not like a college or professional seminar. (i.e. lots of class time and lots of forced participation).