Link to module

Evaluated December 2021

This module is an exploration of greedy approaches to developing algorithms. It has students implement a greedy algorithm for course scheduling on a university campus while exploring the ethical implications of the greedy choices the algorithm makes. This module is designed for a Computer Science course on Algorithms, should take minimal preparation and fits naturally into such a course. This module is primarily technical and has students develop (heuristic) algorithms for a known difficult (NP-hard) problem, to implement them and analyze them. It is very appropriate for an algorithms class. Important parts of this module are the paper and presentations, and the likely ensuing discussions. It may take some class time to coordinate the presentations.

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

This module has both Computer Science instructors and students analyze the human impact of how an algorithm is implemented. An instructor adopting this module will help students better understand that algorithms can be optimized for some stakeholders and not others. The instructor should be prepared to talk knowledgeably about issues of equity, fairness and transparency to enhance the depth of learning by the students. The module has three checkpoints to make sure students don’t leave the work until the last minute.

Students with background in issues surrounding fairness, accountability or transparency will be better prepared for the human impact analysis process. However, the stakeholders are clearly specified in the assignment and the utility functions are given explicitly, making analysis of an instance straightforward. Given that it is an experimental assignment, they will be able to draw conclusions as long as they are able to design and implement a suitable algorithm.

The question of class schedules is certainly relevant to students in almost every program, and it is likely that most students working on this assignment will have felt frustration with class schedules at some point prior to taking a course on Algorithms. The module is likely to be relevant.

There is a very clear assignment, with a point breakdown for individual components. However, the instructor will have to develop guidelines for grading the human impact analysis. The questions in Section 5 provide a basis for a grading rubric. An instructor might consider incorporating issues of class, gender, race, etc., so that the solutions chosen by students might better illuminate current power structures. The instructor should be clear about how sometimes there is no algorithmic fix to mitigate negative consequences so that students do not miss that fact. There are lessons here about social impacts of technology, but it is possible to miss them without some instructor guidance into social and ethical theory.


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