Bringing CS50 to Ethiopia

CS50
7 min readJan 20, 2018

In the summer of 2017, former CS50 teaching fellow and recent Harvard alum Vivek Jayaram and a colleague, Stephen McAleer, a Ph.D. candidate at the University of California, Irvine, had the opportunity to run an intensive, eight-week teacher training program at the Adama Science and Technology University in Adama, Ethiopia, with the goal of bringing CS50 into classrooms around the country. Below, Vivek’s report of their experience.

At CS50, we believe that the course should be accessible to everyone, regardless of past experience, location, or technological infrastructure. This summer, we embarked on a project that really tested the boundaries of where CS50 could be used. In the past, we had offered the course in countries like Nicaragua and the Maldives, and our most recent project aimed to implement CS50 as the the standard introductory course for universities across Ethiopia.

This project was first proposed by Dr. Munib Wober, a visiting lecturer at Harvard’s John A. Paulson School of Engineering and Applied Sciences (“SEAS”) of Ethiopian origin. He realized that an online course like CS50 would be particularly useful in Ethiopia since the various course components, like online lectures, homework walkthroughs, and automatic correctness checks could be used to ensure a high level of learning.

However, the main problem in Ethiopia, which was a novel problem for us, was the lack of reliable internet in universities across the country. All of the course’s material had to be rewritten to work completely offline, and we wouldn’t be able to provide the same kind of support remotely from Cambridge. Thanks to generous funding from the Ethiopian government, we were able to travel to Ethiopia to run an eight-week CS50 training course. The goal was to train 30 instructors as qualified CS50 “teaching fellows,” with the hope that they could offer the course to undergraduates and spread it to other universities after we left.

Ethiopia has been making huge strides in development, particularly education. They had the fastest growing GDP in 2017, and are now focused on creating world-class research universities with quality instruction in STEM fields. The university where we taught was called Adama Science and Technology University (ASTU) and is located about 90 minutes south of the capital city, Addis Ababa. It was founded in 1993 and, given its relative new-ness, lacked some necessary infrastructure, such as wet lab materials, qualified professors, or fast internet.

In order to bootstrap their education system, the university has been spending large amounts of money to partner with foreign institutions. Before we arrived, several Germans had been teaching there; and during our stay a Korean team was working on improving IT infrastructure through their KOICA project. Much of the existing course curriculum was borrowed from foreign universities, such as a C++ programming class from Dong-Eui University in Korea, or a several Engineering courses borrowed from MIT.

Given these factors, CS50 seemed like a natural way to leverage existing curriculum for the improvement of undergraduate computer science education.

The main gate of the ASTU campus.

There were many uncertainties before we left. How good was the internet? How qualified were the instructors? Would the instructors find CS50 too easy or too hard? Would English language knowledge be a problem? Only after we arrived did we really understand how to best tailor the course based on the various uncertainties.

The instructors taking the course were mostly between 25 and 35 years old, with a bachelor’s or master’s degree earned in Ethiopia. Most were from ASTU, but some were from Addis Ababa Science and Technology University and commuted the 90 minutes each way for class. We were worried about access to computers, but we taught in computer lab of 30 Windows 7 desktop machines installed by the KOICA project. Many instructors had their own laptops, but we gave enough time to finish all the problem sets in class. Thanks to CS50’s team, including Colton Ogden and Erin Carvalho, we were equipped with USB sticks with all the material, including the IDE, in a completely offline format.

Instructors working on CS50 Puzzle Day in the ASTU computer lab.

Internet access at the university was tricky; it was slow and the power would frequently cut out for large portions of the day. However, given how much programmers rely on internet, instructors there had figured out various solutions to this issue. For example, one instructor found a good internet connection in the city and downloaded all of Wikipedia onto a hard drive (100+ GB). Another instructor downloaded every C++ StackOverflow help article so he could look up common coding issues without internet (3+ TB)!

Instructors were also interested in machine learning (“ML”) research, but without consistent internet or high performance computers, research in ML is almost impossible. Instead, we were working with them to turn the 30 computer lab desktop machines into a single giant distributed system that could run TensorFlow.

The instructors were mostly familiar with core CS50 topics including sorting, arrays, and hash tables, but since their knowledge was largely conceptual the problem sets provided good practice for implementation. We also emphasized teaching methodology, such as how to teach sections or give help in office hours the same way the course staff does at Harvard. It soon became clear though, that they wanted to learn more advanced material as well. Naturally, the most popular topic demanded was machine learning, but the teachers were also interested in systems programming or advanced algorithms.

One of the hardest things about starting a university from scratch is that there are few professors qualified to teach advanced courses, and these courses are less transferable from foreign universities, which then results in those advanced courses not being offered at the university. To help with this, we found some material from CS181 (a machine learning course at Harvard), CS61 (a systems programming course, also at Harvard), and a machine learning course at ETH Zurich and interleaved a smattering of advanced topics such as linear classifiers, support vector machines (SVMs), neural networks, multi-processing, multi-threading, and virtual memory. We didn’t expect the instructors to become experts in these fields, but we wanted to give some exposure to more advanced material.

A educator giving a practice section on boolean operators in C during the training program.

Although the program went well, it wasn’t without issues. One major problem we had related to attendance and active participation in the course. Although there were 30 instructors present on the first day, in the end only around 10 completed the course. There were a number of reasons why the number dropped steadily over the summer. For one, many of the teaching staff had other responsibilities such as grading, lesson planning, and administrative work. This meant that they were not able to dedicate the time to completing CS50. Others felt like the material was mostly review, so they did not want to take the time to go through the course. However, their programming ability was not strong enough to finish the problem sets quickly and receive credit for the course.

Finally, some instructors were only attending the course out of personal interest, so they would attend when we covered advanced material outside of CS50. Another issue related to the academic integrity of students taking the course. Currently, the grading in ASTU is only done based on a written final exam. This ensures that no cheating is possible, but as any student in science or engineering will tell you, homework assignments in general are invaluable to learning. The plan was to implement CS50 at universities throughout Ethiopia, but the administrators were worried that students would simply copy problem set solutions from the internet or from each other. While a larger cultural shift is necessary to prevent this, we still plan to provide instructors with the tools needed to combat academic dishonesty in the hopes that they will introduce more continuous assessment into their courses.

A weekend trip to the ancient Lalibela rock churches.
Vivek (L) and Stephen at the Lake Awasa region.

All in all, the eight weeks spent in Adama was an amazing time that gave us the ability to explore a new country, gain valuable teaching and leadership experience, and help improve university education in Ethiopia. Throughout the whole trip we were treated extremely well by the university. They paid for our flights and expenses, and provided quality accommodations. Although the horn of Africa receives a lot of negative attention in the news, we felt extremely safe during our stay. We were also able to travel and visit sites such as the Lalibela rock churches (see above), the walled city of Harar, and the Masai Mara game reserve in Kenya.

This partnership with ASTU is something that we hope to keep up in the future by sending more Harvard students to Ethiopia. Based on available funding, we will be looking to increase the number of courses as well, in order to offer CS50 training along with specialized instruction in more advanced STEM courses. If you are interested in teaching next year then please reach out to the course heads to learn more about this amazing experience!

You can also read more on Vivek’s personal blog where he has written more about the experience outside the classroom.

--

--

CS50

Harvard University’s introduction to the intellectual enterprises of computer science and the art of programming.