It Can Relate to Real Lives

Attitudes and Expectations in Justice-Centered Data Structures for Non-Majors

Do Abstractions Have Politics?

Toward a More Critical Algorithm Analysis

The expansion of computer science (CS) education in K–12 and higher-education in the United States has prompted deeper engagement with equity that moves beyond inclusion toward a more critical CS education. Rather than frame computing as a value-neutral tool, a justice-centered approach to equitable CS education draws on critical pedagogy to ensure the rightful presence of political struggles by emphasizing the development of not only knowledge and skills but also CS disciplinary identities. While recent efforts have integrated ethics into several areas of the undergraduate CS curriculum, critical approaches for teaching data structures and algorithms in particular are undertheorized. Basic Data Structures remains focused on runtime-centered algorithm analysis.

We argue for affordance analysis, a more critical algorithm analysis that centers an affordance account of value embedding. Drawing on critical methods from science and technology studies, philosophy of technology, and human-computer interaction, affordance analysis examines how the design of abstractions such as data structures and algorithms embody affordances, which in turn embody values with political consequences. We illustrate 5 case studies of how affordance analysis refutes social determination of technology, foregrounds the limitations of data abstractions, and implicates the design of algorithms in disproportionately distributing benefits and harms to particular social identities within the matrix of domination.

Affordance analysis is an algorithm analysis that makes space for the rightful presence of critical counternarratives by centering design justice in software engineering. In my own data structures and algorithms courses, we apply a comparative approach and interleave sociotechnical applications for each abstraction.

  1. Autocomplete data structures and algorithms for search suggestions and DNA indexing.
  2. Priority queue data structures for content moderation and shortest paths.
  3. Shortest paths algorithms for seam carving and navigation directions.

While affordance analysis contributes a design justice lens for analyzing software, I’m certainly not the first to integrate ethical reflection and social responsibility into computing curricula. The recently-released Teaching Responsible Computing Playbook captures much of the work produced by the Responsible CS Challenge award winners. Several teams have released packaged materials and modules to enable adoption at other institutions.

Jessica Dai’s reflection on The Paradox of Socially Responsible Computing identifies the centrality of power as raised in other work such as Sasha Costanza-Chock’s Design Justice. Casey Fiesler’s post on What “counts” as computer science? echoes the anti-political values in computing raised by James Malazita and Korryn Resetar in Infrastructures of Abstraction in that practitioners “acknowledge ethical and political dimensions” but “encapsulate and divest them from ‘what counts’ as within bounds of the computational aspects of sociotechnical systems and disciplines.” When it comes time to integrating discussions of power in our classrooms, Thomas M. Philip suggests 3 important classroom practices: centering people’s dignity and humanity, ensuring participation structures for dialogue, and expanding disciplinary lenses.