Link to module

Evaluated December 2021

This module is an exploration of a greedy approach to solving a traffic routing problem. In addition to developing and implementing the algorithm, it has students explore the social impact of the greedy choices the algorithm makes. This module is designed for a CS course on Algorithms, should take minimal preparation and fits naturally into such a course. It presumes that students have studied introductory material on greedy approaches to developing algorithms and that students have a sense of life in big cities and the importance of quiet residential streets. In the module, motivation for responsibility depends upon students recognizing the value of not disrupting a quiet neighborhood.

It directly covers material in Algorithms and Complexity/Fundamental Data Structures and Algorithms, Algorithms and Complexity/Algorithmic Strategies, Algorithms and Complexity/Advanced Data Structures Algorithms and Analysis.

This module supports faculty and students who are trying to better envision the impact of their algorithms before implementing them. Should an instructor choose to have students implement the algorithm after the reflective writing, it would demonstrate in a concrete way that ethical reflection can and should be part of the software development process. Faculty adopting this module will have to identify their own learning outcomes and develop their own assessment geared towards those outcomes.

A computer science faculty member adopting this module might be well-served by having a discussion with a colleague from Urban Planning, Sociology or Civil Engineering who is an expert in urban planning. Such a conversation may help the computer scientist better understand the sorts of responses that they might see from students.

One can envision spending some class time discussing the various concerns and counter-concerns identified by students. This could be done in as little as 10 minutes. Such a discussion would give a faculty member who is unfamiliar with leading such discussions a good opportunity to practice leading student engagement with a topic that is sufficiently realistic, yet not highly divisive. Students who have experience in social analysis and social justice (or social injustice) will likely bring deeper thought and analysis to the problem, but most students taking an Algorithms course should have sufficient life experience to identify the major issues with the application.

Faculty wishing to provide more scaffolding for students might consider having students identify harms that would result from the greedy algorithm and then use those to generate the modified algorithm. The module can also be paired with some real-world examples of harmful greedy algorithms, presented either in class or supplemental readings. The module demonstrates the power that software developers have to influence the quality of people’s lives. It allows consideration of the impact of software on individuals and groups (especially neighborhoods) and it potentially raises questions of fairness.


The evaluation of this module was led by Marty J. Wolf and Patrick Anderson as part of the Mozilla Foundation Responsible Computer Science Challenge. Emanuelle Burton, Judy Goldsmith, Colleen Greer, Darakhshan Mir, Jaye Nias and Evan Peck also made contributions. These works are licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.