Ushahidi
Authors: Macdonell Cam 
Published: July 2015

Computing plays a significant role in our communities from the local to the global. Computing greatly benefits social causes such as community organization, education, humanitarian relief and information access. However, many students proceed through an undergraduate degree learning of the impact that computing has in business and science, but are not made aware of the positive social impact that computing has and will continue to have.
Students are taught about the impact of computing for social good as part of the author's senior Software Engineering course at MacEwan University in Edmonton, AB, Canada. In particular, the humanitarian open-source software project called Ushahidi [1] (http://www.ushahidi.com) as the platform for group projects since 2011.
Ushahidi is a crisis-mapping software project that was initially developed during the 2008 Kenyan elections to allow citizens to communicate issues (e.g., violence, intimidation, and voting irregularities) that the state media was not reporting. Ushahidi has continued as an actively developed open-source project and currently has thousands of deployments worldwide including over 3000 in the U.S. alone. It has been used to help communities during numerous crises such as the Haitian earthquake, Snowmaggedon and in Syria and other "Arab Spring" countries to report violence.
Last year the IPython notebook (http://www.ipython.org) as a second option for my students. Categorizing IPython as a social good project is debatable, it has broadened the experience beyond a single open-source application.
Using these projects to teach about computing's social impact over the last three years is of interest for three reasons:

•
Open-source
- Use of popular open-source humanitarian software is a compelling option for student projects so that the students' work can have a broader impact and to expose students to real-world development communities. Open-source communities also vary in their tools and collaboration style, experiences in working with the IPython and Ushahidi communities are shared.

•
Breadth of projects
-- Several example student projects and the feedback students have given as to what they enjoyed most and least about their projects are discussed.

•
Effective Practices
-- Use of a common virtual machine to scaffold the projects so students can get software installed and running quickly, within an hour or two, and avoid configuration problems.

In each year of the last three years the author tried different approaches in having the students work on projects. He also used different pedagogical approaches, incorporating both individual and group projects, allowed students to select their own projects versus assigning them and tried different project scopes, from very specific tasks (i.e., fixing bugs) to broader, open problems such as adding new features. Finally, he mentored the students himself as well as worked with external mentors.
In 2013, the author presented a poster titled "Teaching Software Engineering with a Humanitarian Open-Source Software Project" at SIGCSE. Following that poster he collaborated with the Foss2Serve project (http://foss2serve.org) and mentored faculty members at other universities in incorporating humanitarian FOSS projects in their curriculum.