Today I confront my Moby Dick: a blog entry about working in Namibia. It has been a challenge to relate without emotion. Since last posting, we did some stimulating travel, and continue to experience wonders and frustrations likely consistent with the experiences of other families living abroad. Any of that would have made fine blog posts with colorful photos, descriptions of distant locals, and whatever observations I’m capable of. Yet, I thought, there would be something dishonest about a series of dispatches from my self-proclaimed center of worldly adventure. What I really needed to do was write about the difficult parts of being here, and work is one of them.
This has proved hard enough that I’ve put it off until almost the end. What follows is an account of what I’ve done professionally in Namibia. It is a long post. I’m sorry. I hope that if you aren’t interested in the details of what I’ve done, you’ll look at the pictures and conclusions. I hope they are relevant to how you understand the world.
Before coming I had decided that I’d like to teach high enrollment courses. The reason had to do with funding – according to my Fulbright proposal I was testing the hypothesis that education quality could be improved by offering more frequent, online forms of assessment. To be able to test my idea I wanted large numbers of students as well as material that was amenable to online assessment – material like that found in introductory CS courses. My plan was that I’d change a few courses and see if outcomes improved. This was to be a quantitative, scientific approach to teaching that none could deny involved observation, measurement, evaluation, and truth. Or so I thought.
I began teaching soon after I arrived, taking a very light handed approach to offering data structures and algorithms. I partnered with the instructor from the previous year. We kept the examinations unchanged in terms of style and content, but made changes to how material was delivered. Unlike before, students would now have frequent (weekly) assessments done on computer. I took over the lectures, and made suggestions to practicum instructors about what material should be covered, and how. We based the course on one offered online and in a textbook.
In practice, an overview of the subject matter and weekly assessments was done during a one hour per week lecture that I gave to about 200 students. Then the five practicum instructors would supervise and supplement student efforts during a two hour weekly meetings with groups of about 30 students. Online assessments were superficial to grade, and students would get a lot of quick feedback on their progress.
The first challenges I encountered came in planning, and not teaching. It had to do with the rigidity of course offerings. Course subject matter had previously been set by a curriculum review committee. Mostly, the standards were consistent with what I’d taught in the US, and reasonable. You might even say they are ambitious, but inflexible. In time, I learned that the established curriculum was not appropriate because students were not adequately prepared. There was little room in the curriculum to maneuver, or to take into account student’s backgrounds. This would reveal itself to be a bigger problem during the second semester. This difference between a curriculum on paper and what students were ready to learn underscored some of what might be called cultural issues related to working here – it is a surprisingly conservative mindset you step into, possibly derived from the old Dutch way of doing things which was extremely methodical and prescriptive.
Getting started, I had some good experiences. Namibian students were more emotive than counterparts in Montana. I got big laughs out of stale jokes and my accent was entertaining – I’d hear them repeat my statements to each other in a faux American accent. Students said good morning and talked to me on the way into and out of the classroom. Call and response questions mostly worked in that a lot of responses came in. At the same time, I was finding the classroom difficult to manage. After I said something they thought funny, it could be several minutes before I got back on topic. There was laughter, discussion, more laughter and a lot of loud talking. I wrote it off as being due to the novelty of an American professor, and something that would correct itself after they got to know me.
Eventually, we got through preliminaries. I’d cover material and then let students know things I didn’t think controversial, things like when the assignment is due. This is when my classroom would become unmanageable in a different way – shouting from the back, a rumbling drone of heated discussion, rolling eyes and shaking heads, high pitched exasperations. Eventually a student would raise a hand. I’d call on them, but I never heard them the first or second time – the classroom was too noisy, the accent new to my ear. Eventually, I’d get it – something to the effect that I was asking too much they couldn’t do the homework. I was quickly beset with a new sense of panic and despair. Really, was I being too demanding? But, I’d been trying so hard to show them how clear the objectives were, how worthwhile the tasks, how rewarding success. Weren’t they interested in what I was offering?
I’d taught the same course in the US, four or five times. Based on those experiences, I had a good sense of the assignments – challenging, but well within reach of all but the very worst students. My students in the US never complained about the objectives or assignments – maybe the delivery (me) was bad, but not the content. Computer science students generally agreed that data structures, algorithms, and programming were part of what they do. Throughout the first semester I kept thinking, where was this resistance coming from? What was I doing wrong?
Of the two types of assessments, one involved programming. The other was more like stepping through algorithms. I would say that with time and effort, most of them developed an ability to step through algorithms. Programming, on the other hand, was a complete disaster. The simplest way of saying it would be the upwards of 90% of the students simply could not program. At all. Not even elementary iteration and assignment. I think this was what was behind some of the loud eruptions in class. They weren’t just out of their comfort zone, they were outside of what they could even dream of doing.
I was sympathetic. I don’t know what they experienced before my class, and what they hadn’t been taught wasn’t their fault. I adapted. I altered the course. Instead of 6, now 2 programming assessments would be turned in. More time would be dedicated to teaching the programming skills needed to complete programming assignments. I would focus on definitions, descriptions, and stepping through algorithms. No longer would students need to ‘do’, instead they would just ‘say’. Mostly, they would say what I said. Students would get up in front of class and hold sheets of letter paper with numbers printed on them. Their classmates would sort them according to a method we were studying. I found things to enjoy, like the laughter of students during these little bits of algorithm ‘theater’, but I remained troubled at how low I’d let standards fall. Ultimately we completed less than 25% of the material, well under a quarter of what Montana students did. And, UM students had programmed, in some ways the ultimate demonstration of mastery of the subject matter.
Programming assignments were eventually turned in. Online, machine graded results were remarkably good, without exception 95% or better. Montana averages were in the mid 70s. I spent a morning opening and looking at them, seeing what sorts of solutions were coming in. In a morning I probably looked at 30 or 40, in no particular order. In my perusal, I didn’t find a single original implementation. They were all copies of solutions found on the web. It was disheartening. I think there were a few students out there that did offer an original solution, I met them later, during the next semester.
I have a hard time understanding my effort as anything other than trying to placate an unruly mob with low standards. However, I did do what I intended and measured progress over last year’s offering of the course. I even wrote a paper about it. The table below is the key result from the paper. It looks like everyone did better this year (Mean BO), and students with poor English skills as measured by high school leaving examinations improved the most. Maybe this is what one expects. The course offers more assessments and the ability to review the material being assessed with subtitles and other features helpful to people that don’t speak English as a first language. It’s a story that should make me feel good – I’ve empowered those who, through circumstances beyond their control, did not master English. Good, I guess, but for some reason it didn’t make me feel good. I just kept coming back to how little material we covered, and how superficially most understood it.
I resolved that during the next semester I would address what I thought was the underlying problem, the lack of the basic programming skills. I could probably improve classroom management by being a little tougher, faster to move on, and less eager to try and share a laugh. I’d provide more guidance to practicum instructors, so that the experience was more consistent for students.
In the midst of what is feeling too much like a rant, I want to point out how well I’ve been treated by the administration. Firstly, it would have been easy for them to have demanded I do a lot more teaching. They didn’t do that. Secondly, I went to the former and current heads of my department and related some of my experiences. I didn’t get into classroom management or cheating. Instead, I stated that based on my experiences the previous semester, I believed that our students were seriously deficient in basic programming skills. In both cases, it was a good dialogue and they were genuinely helpful in terms of providing context and suggestions about how things might be improved. In the end, we agreed that I would teach the second semester CS course, Object Oriented Programming. It stressed programming, but students should have a notion of how it is done from a previous programming course they’d had.
I decided that many, small assessments would be the best approach, and that we would be focused only on ‘programming’ before attempting anything involving ‘object oriented’. I was already in trouble with the standard curriculum, but decided to ignore it. I needed an automated means of assessment, because this time there would be 273 students. The material might be remedial for some, but I would not assume the students know anything about programming. Nor would I get them involved with any complex software installation, like an integrated development environment. After some soul searching and a lot of rummaging around the internet, I settled on something called codingbat. I am still excited enough about the pedagogy to try and relate it here, what’s more, it’s relevant to my story.
Assignments are small ‘morsels’ of work – extremely well defined in terms of letting the students know what is expected of the code they write. There are hundreds of problems, progressing from the elementary (my 13 year old son did them) to the complex (I took as long as 20 minutes to solve a few). For an example of an introductory problem:
Given 2 integers, a and b, return their sum. However, "teen" values in the range 13..19 inclusive, are extra lucky. If either value is a teen, just return 19.
Students complete the assignments in their browser. They submit the code they write by clicking a button, and are given instant feedback from a table of simple tests determining if the correct output results from various inputs. For example, in the above problem, if one neglects the “inclusive” part of the definition of teen, the unit tests look like the following. You’ll notice all input values of 13 or 19 result in a red error. Hopefully this tips off the coder that something is amiss at the ends of the teen range.
The end of the previous figure reveals another key feature – the “progress graph”. One is pictured below. It shows each attempt at a problem and some time information. A short dark red line indicates the code wouldn’t run, maybe the student forgot a semi-colon or has some other syntax issue. A tall line with soft red and green shows that the code runs, but only a green colored fraction of unit tests passed. Overall, an instructor sees the way students progress through problems: They formulate a strategy and try it. The first time, it doesn’t even run (short red). Maybe they have a misplaced parenthesis. It takes a few minutes and attempts to fix this. Then it runs, and they see an error in their strategy – only 30% of the unit tests are correct. It takes them a few runs to see it. They change some things, but introduce a new syntax error. That gets fixed, and finally they get it right, a solid green line. The whole process takes 10-20 minutes on average. Sometimes less, often more. I’ve done many of these and, for me, there is a satisfying sense of reward at the end.
The instructor can see all the progress graphs for all students for all problems. Additionally, the instructor can see the time stamps and quantitative data that produces each progress graph.
As with the previous semester, I had a fair amount of resistance in the classroom. The feeling I got was that there was something underhanded or unfair about using a tool like codingbat. The course should be more like the course offered last year. There was also a lot of confusion arising from there not being a clear list of topics to study – a sequence of terms and definitions. The emphasis on being able to do something tangible like write a function did not sit well with students, nor did frequent assessment with objective standards for success. Student came to complain in pretty general terms, but when asked, they reported that they would just stare at codingbat without knowing what to do, that they had not been properly trained for something like this. I remained confident that this was the right thing at the right time. I’d covered what was needed in class, and the website itself had plenty of review materials. Practicum instructors were going through everything a second time and offering assistance on particular problems. Criticism didn’t rattle me this semester.
I had not made much of it the previous semester, but the teacher I partnered with had a list of students and would insist students sign in on arrival at lecture and out on exit. I thought it was sort of petty, but quickly learned that without it students showed up and left at anytime during my lecture. Entries and exits were loud affairs with boisterous shouting, giggling, slamming doors, and shuffling papers or, worst of all, wrappers for bags of potato chips being slowly crumpled. Women that walked across the front of the room when entering or leaving were catcalled and treated to wolf whistles. I asked the security guards that sit outside the classroom to prevent people from entering more than ten minutes late. Something was lost in translation, there was no change. I cajoled students and said unflattering things to them as they strolled in. No impact. I suppose the sign in sheet is what is required. One learns.
I made the rounds to the practicum sessions, trying to assist the faculty working with the codingbat material and talking to students about solution strategies. These were mostly depressing labs with some broken mice and keyboards, computers from circa 2006, poor lighting, and unreliable internet connections. In spite of the difficulties, the 5-10 students attending did manage some connection to the internet. I could tell because they were looking at Facebook. I think in my time visiting the practicums I worked with two different groups of students on codingbat. Instructors were often absent.
80% of the students failed the midterm examination.
At this point, it was clear to the students that my class was unfair. They complained to the administration. In addition to having unreasonable expectations about their ability to program, I’d failed to teach them object oriented programming. I had talks with various administrators. Once again, they were total reasonable, but I was embarrassed to be attracting so much negative attention for what many had to believe was just poor teaching. But, while this mess was boiling over, I was studying at the coding bat progress graphs and finding a lot of results like the following.
Remarkable. This student gets all the problems 100% right, the first time he tries. He’s either truly gifted, or he’s simply cutting and pasting the answers from a someplace like here. I decided to write some programs to evaluate student work habits.
Homework consisted of 2-6 coding bat problems every week or two, depending on how hard the material was. After reviewing some forty odd student progress graphs, I decided a student that was actually trying, or ‘participating in a meaningful way’, took at least an hour to do a homework problem set and made at least 3 attempts per problem (on average) before getting the right answer. My program would go through this data (273 students times 34 assigned problems) and find out who participated, how long they took, and how they did on assessments. The following shows the output of my little program.
HW1 94 out of 273 or 34% participated in a meaningful way. total problems 6 avg. score: 96.8 avg. time: 147.3 minutes HW2 73 out of 273 or 27% participated in a meaningful way. total problems 6 avg. score: 94.3 avg. time: 159.9 minutes HW3 62 out of 273 or 23% participated in a meaningful way. total problems 5 avg. score: 77.7 avg. time: 147.6 minutes HW4 29 out of 273 or 11% participated in a meaningful way. total problems 3 avg. score: 85.0 avg. time: 103.7 minutes HW5 48 out of 273 or 18% participated in a meaningful way. total problems 4 avg. score: 83.8 avg. time: 129.5 minutes HW6 30 out of 273 or 11% participated in a meaningful way. total problems 2 avg. score: 95.0 avg. time: 105.5 minutes HW7 12 out of 273 or 4% participated in a meaningful way. total problems 4 avg. score: 75.0 avg. time: 92.4 minutes HW8 18 out of 273 or 7% participated in a meaningful way. total problems 4 avg. score: 65.2 avg. time: 104.6 minutes
My conclusion? On average, only about 20% of the class was participating but participation rates are falling off rapidly. Note that the material is getting more challenging for each homework. The average participation rate was roughly the same percentage that was passing the midterm and further analysis showed it was (mostly) the same people. Of those that participated, they needed on average about two hours a week to finish the problems. Two hours is how long they have in practicum each week, supposedly working under supervision. Those that participate are getting good grades on homework, considering that in Namibia a pass is a 50%. To me, it looked like:
Do what I ask, and do it during the time allotted, and you’ll pass.
It seemed fair to me. Why wasn’t anyone interested?
What to do?
Presented with several options, I chose the most cowardly. Another feature of the education system here is the ‘second opportunity’. Any major assessment must be given twice, I guess to allow students to show their true potential. I gave the same test again, making superficial changes. The first time around, I had circulated two versions of the midterm – raising havoc with the students that copied off their neighbors. None of that in the second opportunity. The second time they did much better, over 50% passed.
The final exam was not so different. A few new multiple choice problems, revised short answers, but otherwise a simple format amenable to cheating and rote memorization. In the end, 60% passed the course. This is a number I feel terrible about. It should have been less than 20% passing. On the other hand, proper functioning of the institution requires higher pass rates. 80% fail would make for a class of over 500 next year. Not something anyone wants to tackle.
I got involved with some other things in Namibia that spanned the semesters. I count these as among my best experiences while here. One observation about satisfaction – when I was able to interact with individuals, I usually enjoyed them. It was just when I was working with an abstract, aggregate collection of students that I grew frustrated. In retrospect the high enrollment courses might have been a mistake, I met very few students teaching them. That said, the ones I did meet; like an Angolan with parents that want him away from a corrupt petrol state, or an orphan from the far North of Namibia, or a woman with parents that put her in German language schools for the opportunities – never mind the difficulty of quickly learning German. These people were amazing, and I will remember them fondly.
I supervised two masters student and one honors student. All of them did work with wireless sensor networks. I had thought, maybe correctly, that the challenges in developing a micro-controller (Arduino) based platform for environmental sensing would be well suited to the skill level of our students. I was partially right. I think it was harder for the students than I guessed, but they stuck with it and as I leave they seem to have made some progress and gained an appreciation for the work. That they got any work at all done is a little amazing given the system they are in demands they write a proposal, followed by a presentation, followed by a concept paper, followed by many revisions – it seemed like it took too long before they got to the point where they were able to just work. Add to that the fact that they are all full time employees somewhere, and it’s even more remarkable. So, good on this front. Again, lovely people to work with and rewarding experiences.
I worked with an especially undergraduate good student to create something called an augmented reality sandbox. We took it on the road and used it as a vehicle for outreach. I liked this. It was enjoyable to watch young people figure out what they were seeing and then interact with it. It was also satisfying to share a sense of wonder about technology and the world.
Workshops and Conferences
I taught a course on Arduino programming and interfacing to various gadgets. It attracted a small and motivated group of students, and made for a pleasant day of work.
I attended a conference on “Culture and Computing”. Heck, I even contributed to a paper. Interesting group. See my ‘Villagers‘ post for a little insight into he sort of things that they do. I found it stimulating, just seeing how things are in another discipline. This is a group that dreams big, engages tough cultural issues, and occasionally gets something done. Kudos to them, and lucky for me to see an application of computing that I’d never even thought of.
I presented a paper on the first semester’s teaching at a conference in Singapore. Singapore is excellent. Education conferences, meh.
Based on my measurements upwards of 80% of the students are not taking their studies seriously. These student do not participate, are cheating on assessments, and learn little of what is being taught. They continue to pass the courses through second opportunity examinations, and will graduate with credentials in computer science but no ability to do the things computer scientists do.
I’m not sure which is more depressing, the 80% of non-participating students , or the 20% that are. It is the 80% that dominate the direction the course takes, effectively bullying the instructors into offering meaningless courses they can pass. The 20% that does work learns little because the instructors need to dilute material to satisfy the unruly majority. Yet, it is clear from the data that the 20% of students participating students are working hard and taking nearly all the instructor’s assignments seriously.
I draw back and think to myself: you are a fool for believing you could come in here and change things. You have naive ideas about helping the world and they have caused you to have your feelings hurt, and now you’re lashing out.
Namibians have their own understanding of what’s important. From conversations I’ve had, their heart resides far away from Windhoek in a village that is green and fertile. A place where people grow what they need to eat, and supplement that with animals they raise. Homes are constructed with their own hands, and people take time to talk to each other. Elders are afforded great respect, and families stay together. The climate is gentle, the lifestyle carefree.
This idealized village life rivals anything I can offer from my culture. What can I say? Work hard and learn to computer science. You could live in a small apartment in a crowded city where you have little job security, work long hours, and have almost no connection to the Earth or the people around you? Maybe my way of life is a sickness.
In the SADC trading region Namibia is part of there are more than 230 million people, and probably many more, like 330 million, but census data are hard to get in these places. The region is as large as the United States, and connected by road, rail, ports, and a communications network. Throughout, there are well stocked shops with a tremendous range of things to eat sold at a very reasonable price. Here is the rub:
You can not feed 230 million people without an industrialized economy.
For an industrialized economy, real skills are needed: architects, engineers, journalists, planners, doctors, nurses, scientists, tradesmen, financiers, technologists, computer scientists, and more. Either southern Africa develops those skills, or it becomes a collection of client states, dependent upon the well meaning acts of other nations for the most basic tenants of survival. In several cases, like Malawi, Zimbabwe, or Mozambique, the client state is already fully developed.
If we aren’t producing skilled workers, where will they come from?
South Africa presently has many skilled workers. For this reason South Africa is the only net exporter of food in the region, and it is because of South Africa that the region functions as it does now. However, the future of South Africa is increasingly uncertain and undergoing a flight of capital and skilled professionals. Even the continued provision of training is in doubt. “Fees must fall” protesters have halted instruction and are destroying facilities on campuses.
Africa does offer a lifestyle that is attractive to many (see this blog). Perhaps Africa can attract skilled immigrants? Unlikely. Governments in this region are hostile towards immigration. Work permits are notoriously hard to get and the region consistently ranks close to last in terms of places to do business. The increasing crime and corruption as well as forced business partnerships with the indigenous black population and uncertainty about property rights further erode the possibility of immigration offsetting the shortage of skills.
The best and brightest here usually go overseas to earn a degree. Those degrees holders form a small but skilled group. If they return perhaps they can meet the needs of the industrialized economy. Current trends seem to be that fewer people are needed to control larger portions of the economy. Maybe this will work, albeit with a highly inequitable distribution of wealth. A small core of elite, western educated Africans, managing the larger society only to the extent that most people don’t starve. I guess there isn’t too much harm in that, although it doesn’t sound very stable.
There are the Chinese. They’re serious about this place, and have all sorts of skills. I wish them all the best. Just, please, stop it with the rhinos.
A concluding statement. My review is pessimistic – civic breakdown and mass starvation. I’ve been in Africa on and off for the last 24 years, and have a pretty good command of the history of the continent. Whether it be colonization, imperialism, apartheid, de-colonization, kleptocracies, the HIV/AIDs crisis, Islamofascism, resource dependent economies, malaria, astonishingly high rape and murder rates, or the deep corruption of Jacob Zuma’s South Africa, things have always, somehow, carried on without the worst happening. I suspect that will continue, with or without computer programmers from the Namibian University of Science and Technology.