Link to module

Evaluated December 2021

This module is a programming or lab assignment that introduces students to the concept of gerrymandering. This could be used in Computer Science I or an introductory web programming course, and with more requirements could also be used in other more advanced courses such as software engineering and data science.

It directly covers material in Software Development Fundamentals/Fundamental Programming Concepts, Software Development Fundamentals/Fundamental Data Structures.

The module gives a brief introduction to a single definition of gerrymandering. To address gerrymandering more broadly, including its political aspects, will require additional support or an instructor experienced at incorporating responsibility issues in the computing context. This would be a great opportunity to contact a colleague from political science to learn about resources that the instructor can use to develop a better understanding of the issues surrounding gerrymandering, fairness, race, social class, understanding power and power structures. There might be an opportunity for the class with this assignment to collaborate with a political science class that is studying gerrymandering. The appropriate files for the programming assignment are supplied.

The technical scaffolding for the students is solid. To better help students understand the role that computing and mathematics play in larger social issues, the instructor will have to pull in a few resources for students to use, this is especially true for students who may not be familiar with the U.S. political system.

Since the technical scaffolding is solid, it is easy to incorporate in an existing Computer Science I course or introductory web programming course (especially in Python or JavaScript). With some preparation, an instructor can develop the aspects of this module needed for deeper reflection on the societal and political impacts of gerrymandering. As it stands this module can be used without a significant change in course structure or taking any additional class time. In classes where students regularly engage in conversations about the social and ethical impacts of their assignments, the slightly enhanced version of this module mentioned above would not take any additional class time.

The technical component’s assessment is well defined. Depending on the goals surrounding developing deeper understanding of gerrymandering, it may be necessary to develop an additional assessment tool to gauge student understanding of the role that computing plays in these important political issues.

An instructor can, with support, develop additional learning goals that include topics such as fairness, race, social class, understanding power and power structures and the various levels that those topics come into play.


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