This class seeks to build more critical models of Computer Science pedagogy by infusing the CS classroom with Science & Technology Studies scholarship, especially through systemic analyses of the role power plays in the development, deployment, and impact of information systems. The current pilot, which has been under development since 2017, operates under Computer Science 1, and pays special attention to the roles computing and the Internet play in systems of power, and the impact those systems have on marginalized communities, women, persons of color, and the poor. Through lectures, lab assignments, homeworks, readings, and class discussions, Critical CS1 aims to transform CS education without sacrificing technical rigor.
Through hybridized assignments and class discussion, Critical CS1 will engage students in three domains of inquiry:
- Professional Identity and Problem Definition: What gets defined as the boundaries of response-ability for IT developers, in terms of broader social and moral imperatives, and in terms of our ability to materially address social conditions? Who belongs in the room at various stages during the design, development, and deployment process? To whom are developers accountable?
- Macroethics and Structures of Power: How do programmers participate in structures of power? How can well-meaning developers still reproduce systems of inequality and oppression? How do automated processes reproduce larger social biases, due in part both to software authorship and also the provenance of datasets?
- Epistemology and Diversity: What does it mean to understand Computer Science as a culture? What are the systems of knowledge and ideologies that guide Computer Science as a discipline? Where do these ideologies come from? How do they impact different people differently, and how might they alienate individuals with diverse identities and life experiences? How is your education training you to think, and what is it training you to think about?
As students in the Critical CS1 advance from using basic Python commands to building complex structures, they are introduced to more socially complex issues surrounding algorithmic decision making and data. These issues include social context and data provenance–not just where the data comes from, but how it will be socially and politically deployed. The assignments are specifically designed to integrate “technical” and “social” content. Critical CS1 filters readings and discussions through the assignments themselves, requiring that students engage with political material as they code.