A computer science student first learns problem solving in data structures and algorithms. She learns to define a problem clearly, break it into solvable components, reason about the correctness of any proposed solution, measure resources used by her solution (space and time) and how to use them efficiently.
But when computer scientists apply these problemsolving skills to questions and systems that impact society, responsible problem design and solution requires that we model societal costs and resources accurately. In these curricular components, we aim to bring questions and issues from impacted societal domains into the data structures and algorithms curriculum where computer science students first learn a problemsolving mindset. We aim to create computer scientists who naturally consider issues such as sustainability, racism, and community impact (e.g., of surveillance) alongside matters of data structure design and complexity.
On this site, we will post the slides and assignments for curricular modules that are core components of the standard data structures and algorithms curriculum reimagined to include a focus on responsibility.
The goal of this lesson and assignment is to introduce students to the environmental impacts of computing.
Level: This lesson is designed to accompany Chapter 2 of Algorithm Design by Kleinberg and Tardos, and could also generally be used as a second lesson on complexity after the initial introduction of the high level and/or formal definitions in a data structures or algorithms course.
This lesson was created with the help of Jon Wilson in Haverford College's Environmental Studies Department.