  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 based on
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 computational
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.
