Teaching software engineering with an open-source humanitarian software project (abstract only)

A common criticism of undergraduate computer science is a disconnect from software development in the real world. To remedy this shortcoming, we introduced an actively developed open-source software project into a third-year software engineering course. We selected a humanitarian software project, Ushahidi, a crisis-mapping web application that is deployed worldwide to track events as diverse as election violence in developing countries, natural disasters and recently, Hurricane Sandy. The primary learning outcome of working with open-source software is that communication skills are as important as programming skills when developing software on a large scale. Working with an active open-source project exposed students to interesting issues related to real-world software development and facilitated direct interaction with expert, professional developers. Positive experiences included successfully understanding, modifying and debugging software written by someone else -- a rare activity in most curricula. The students also had to work with Ushahidi's distributed development model, common to many open-source projects, which reinforced the importance of communication skills and associated tools. Students also experienced some negative realities such as non-existent or outdated documentation and inconsistent software interfaces. Aside from the technical learning outcomes, an intangible benefit of our approach was the motivation students experienced from having someone other than their instructor interested in their progress. As well, the use of a humanitarian software project exposed students to the changing face of computing from its business and scientific roots into new application areas.