Computing for the social good and cultivating cultures for ethical computing

Why develop educational practices involving computing for the social good? Does the field of ethics provide a viable framework for assessing an evaluating such practices? And are projects that involve students in computing for the social good efficacious in the formation of ethical computing professionals? At Carnegie Mellon, we have developed practices to involve a significant number of students in software development projects and consulting engagements for the social good. A consulting course has had over 500 community service-learning engagements in 18 years, and in a software development capstone course our yearly cohort of 60 students work in small teams to develop software for 15+ social service organizations. Our practices have evolved out of our shared vision of what makes a good computing professional, but we would now like to better define, assess, and communicate what the vision is.The NSF has a program solicitation (15-528) entitled Cultivating Cultures for Ethical STEM (CCE STEM) that "funds research projects that identify factors that are efficacious in the formation of ethical STEM researchers in all the fields of science and engineering that NSF supports." It asks: "What constitutes ethical STEM research and practice? Which cultural and institutional contexts promote ethical STEM research and practice and why?" Among the factors they mention are "curricula ... that stress social responsibility and humanitarian goals"; i.e. computing for the social good. And "what practices contribute to the establishment and maintenance of ethical cultures and how can these practices be transferred, extended to, and integrated into other research and learning settings?"To provide some context from my experience, there are two prevalent types of computing-for-the-social-good projects:1. System-based: Projects that address a social-good (e.g. disaster management, public accountability, or medical record management) and are generally released to the public as open source projects (e.g. Sahana, Ushahidi, or OpenMRS).2. Client-based: Projects that custom-build a solution for a nonprofit, school, international NGO, or other social-good organization. For example, helping a nonprofit increase fundraising with a website, or a school improve interaction with its students using a course management system. Often, but not always, these solutions use the open source projects in (1), but in all cases the solution involves much more work than fetching the software.Our consulting and capstone project course use the client-based model. When done well, client-based social-good projects have the potential to enrich student learning in ambiguous real world environments. Students report increased confidence, further development of technical skills, a sense of satisfaction and appreciation for the needs of their partner organizations.Delivery of a tangible benefit to partner organizations is also generally an expected outcome. Providing lasting value to community partners should, in practice, be a key objective of any serious client engagement. However too often, the needs, concerns and ultimate outcomes for community partners are often overlooked or forgotten. Solutions that are incomplete, poorly implemented, poorly documented, inappropriate to the problem at hand or simply unsustainable may provide little or no value to community partners. In fact, these solutions may actually be detrimental to partner organizations.There is significant risk, therefore, that benefits to ICT service learning projects are asymmetric; students generally report significant benefits from the experience, but community based partners may, in fact, find the experience expensive, risky, and potentially harmful to their missions, organizations and employees. Many community partners simply do not have the resources to finish incomplete projects, sustain or maintain complex software or systems, or perform needed application or server administration.We use a capacity-building model of working with a community partner. This is not the let-us-buildyou-a-system model, where students develop and drop in (often unsustainable) technology solutions. Rather, it emphasizes working-with, and weaving solutions into the development partner's organization, building their capacity to not only use, but to maintain and evolve their solutions as their needs grow and change.Returning to the bigger question of cultivating a culture of ethical practice, these classes are meant to model an ethic of care in meeting the needs of a nonprofit client whose mission is the social good.They expose students to issues of:- Being truthful in working with the client: not misrepresenting their capabilities nor the robustness of their solution.- Being respectful and not misusing the client's time and other resources.- Not taking advantage of their team mates via slacking and free-loading.- Safeguarding the privacy and confidentiality of citizen information in any system they build, and including controls that maintain appropriate privacy and confidentiality.- Not misappropriating software, being aware of licenses, and attributing borrowed work that is otherwise not licensed.- Understanding the role of nonprofit organizations in society. How they are similar and different from for-profit corporations. How they contribute to the social good where markets would not otherwise serve.The NSF solicitation provides an opportunity to support looking at both why we do computing for the social good, and whether these educational practices develop computing professionals who are more aware of the ethical dimensions of their work. The solicitation encourages a comparison across institutions; is SIGCAS a good nexus for building that collaboration?As part of the SIGCAS Symposium, the author shared practices in the consulting and software development capstone courses, and the nascent evaluation ideas they are piloting. A goal is to get others' feedback and explore possibilities for collaboration.