Computing Profession Education

Toward Justice in Computer Science through Community, Criticality, and Citizenship

Proposing a justice-centered CS education.
  1. Introduction
  2. Community
  3. Criticality
  4. Citizenship
  5. Conclusion
  6. References
  7. Authors
  8. Footnotes
bar of blue light, bar of green light, and the word 'progress'

Neither technologies nor societies are neutral, and failing to acknowledge this, results at best, in a narrow view of both. At worst, it leads to technology that reinforces oppressive societal norms. The systemic biases and social hierarchies that influence our society also guide the design of computing technologies, resulting in harm and marginalization of vulnerable people within the tech industry and in broader society. We agree with Alex Hanna, Timnit Gebru, and others who argue individual harms reflect institutional problems, and thus require institutional and systemic solutions. We believe computer science (CS) as a discipline often promotes itself as objective and neutral. This tendency allows the field to ignore systems of oppression that exist within and because of CS. As scholars in educational psychology, computer science education, and social studies education, we suggest a way forward through institutional change, specifically in the way we teach CS. CS education must not only help students develop technical skills, but also frame computing within the context of society, with the potential to foster oppression or further justice." In this column, we take a critical perspective toward CS education and argue for a justice-centered CS education that focuses on communities, criticality, and citizenship.

CS education has attempted to resolve injustices by broadening access to computing through expansion of course curricula, professional development, and technology. Governments and industry have spent billions of dollars to increase access to computing education across the U.S., from computational thinking to data science and now artificial intelligence. While there has been an increased representation of students from marginalized groups, issues that disproportionately harm vulnerable students (for example, too few highly qualified teachers, chronically underfunded schools, and an overemphasis on high-stakes testing) have not been addressed. Increasing access without addressing structural inequities has led to lower academic success for these groups of students. Only 52% of Black students and 61% of Hispanic students passed the AP CS Principles exam, compared to 73% of white students and 83% of Asian students. This suggests access is not enough to increase success in CS.

We strongly believe it is important to prepare young citizens in computing, and it is critical to our collective future; however, as society becomes increasingly digitized, we must go beyond increasing access. We must highlight how technologies used to facilitate and automate our daily activities can lead to further racialization and injustices. Given these issues, how should we teach computing that increases representation and success of marginalized students while also challenging the ways technologies and technology companies perpetuate and amplify racism, patriarchy, and ableism? In this column, we discuss how a focus on community, criticality, and citizenship help achieve these aims.

Back to Top


We suggest one reason computer science courses fail societally marginalized students is because the curriculum remains disconnected from students' lives and is not designed to serve them. Instead, it serves the aims of the tech industry by marketing CS as being important for getting a "good job" that can pull a person out of poverty while overlooking the systemic racism and classism that perpetuate a permanent underclass. Simply increasing access to computing without adequate support for teachers and centering students' identities and cultures in the curriculum is just a veneer of broadening participation. Teaching Black girls to code without addressing the systemic racism and misogyny of CS results in the hiring—and subsequent firing—of Black women when they challenge the discriminatory and harmful effects of technologies (for example, Timnit Gebru was fired by Google for refusing to retract a paper that highlighted the risks of large language models.)a The industry's failure to consider the complex lived experience of marginalized people bleeds into a failure of curriculum.

As a result of capitalistic goals to prepare students to work for tech companies, the CS curriculum is often top-down and disconnected from students' lived experiences. This notion of CS to develop technical competencies is antithetical to Papert's ideas about constructionism where computing is used as an expressive medium and provides opportunities for learning by making. We believe a community-oriented approach can help teachers and students use computing as a tool for personal agency, creative expression, and problem solving. In this version of computing education, teachers use curriculum and pedagogical approaches that center their students' identities, cultures, and experiences as foundational to their instruction. This would require removing the information asymmetry that currently exists in the CS curriculum. Information asymmetry draws from Eric von Hippel's idea that technologies include design biases that do not meet the needs of all users.3 Similarly, when the curriculum is top-down, it is more difficult to be responsive to local communities and students as the curriculum designers typically focus on addressing frameworks and standards. However, many teachers find ways to center their students in the classroom experience. These teachers are what von Hippel would call spear-heading lead user innovation, which combats information asymmetry by tinkering and democratizing technologies to make them more just and functional. Similarly, teachers innovate and democratize the CS curriculum in ways that put students at the center.

Simply increasing access to computing without adequate support for teachers and centering students' identities and cultures in the curriculum is just a veneer of broadening participation.

Culturally Responsive Computing (CRC) is a framework that can guide such a community-based approach that centers students and their communities in computing education. CRC uses an intersectional approach that provides opportunities for students to explore their identities along multiple axes rather than just focusing on a single axis such as gender or race.7 This challenges the notions of culture-free education and makes students' identities foundational to their learning experiences.6 Lachney and Yadav provide an example of a computing teacher collaborating with an African-American cosmetologist to have students learn about African mathematical knowledge using Cornrow Curves and programming through Culturally Situated Design Tools.

Back to Top


In order to mitigate the harmful effects of technology, we must go beyond just increasing diversity in computing and also bring critical perspectives in CS education. This criticality is important for not just the design of technologies, but to challenge and even dismantle technologies themselves—challenging how technologies are designed and deployed as well as questioning whether they should exist in the first place. For example, given that facial recognition technologies are biased toward people of color and women, the "solution" should not be how to improve the accuracy of facial recognition. Rather we should ask, what is the purpose of facial recognition beyond capitalistic surveillance? Does that technology lead to a more just and equitable society? Who does that technology benefit? Should we be willing to use it and give up our freedoms just to make our lives convenient at border control or photo tagging?

In addition to questioning technical systems, we also must bring criticality from an ethical perspective when preparing computer scientists and engineers that focuses on moral responsibility. When smart AI systems are being designed and implemented, many questions remain unanswered because developers are unaware of, and perhaps have not considered, future unintended consequences. As Coeckelbergh2 argued, an AI algorithm has a long history and many hands from the programmer to the user that makes responsibility of consequences difficult to parse. Consider who is responsible for the March 2018 Uber self-driving car accident that resulted in the death of a pedestrian: Is it the car company? Is it Uber? Is it the programmer? Is it the driver? Is it the pedestrian? Is it the designers of hardware components?

In order to bring such criticality to computing education, we will need to move away from focusing solely on developing technical skills and move to understanding and challenging the role of CS in maintaining and perpetuating systemic injustices. As a first step, we must engage educators in critical conversations that explore their own identities in order to move away from color-blind approaches to teaching CS. In addition, we must support educators by developing curriculum and pedagogy that challenges the "unbiased" and "objective" nature of computing. As educators develop their own critical computing competencies, it will lead them to "create spaces for collective development of critical consciousness, help develop plans for action to make the world a better place, and develop a sense of agency among learners."3

Back to Top


Finally, addressing systemic injustices in the design and deployment of technologies requires CS education do a better job teaching computing as part of society, not a magic bullet solution to society's problems. In other words, CS teachers, students, and industry workers need the knowledge, skills, and dispositions to thoughtfully understand their role as citizens. To do this, CS curriculum and instruction should include the humanities and citizenship, building on a community-centered approach to CS. The field of CS education should look to the approaches of citizen science practices and social studies education, which work toward participatory citizenship in a multiracial democracy. Solving authentic and community-based problems fosters CS students who understand their role in community and the power of collective action.

Computer science education cannot fix its internal injustices and external harms to society if it aims only to broaden participation.

We have developed a framing for pedagogy that blends culturally responsive computing and citizen science, borrowing the concept of informed action from social studies. This approach extends each of these methods by prompting participation and encouraging students to be agents of change in their communities. The result is an inquiry- and action-based pedagogy for CS lessons described here.

Step 1. Collaborating with Community. Throughout the process, the knowledge and wisdom of community members remains at the center. Students partner with community elders to learn deeply about their community. Students move through the geographic space of the community to better understand space-place,5 human geography, and technology connections. Students identify ways problems may be symptomatic of systemic oppression and how technology plays a role in it (for example, digital surveillance).

Step 2. Collecting Data as Citizen Scientists. Students collect data on the identified problem. Using practices of citizen science, multiple people participate across the space and time of data collection. Students design systems for coding and storing data.

Step 3. Consulting on Potential Solutions. Within the context of community, students analyze the data. They return to the challenges and wisdom shared by community members from Step 1. Students consult with community members, seeking feedback, and adjusting analysis.

Step 4. Taking Informed Action. Students co-develop and implement technical and social solution(s) to the problem(s) with community members. The solution(s) address the immediate problem(s) and are aimed at dismantling structural oppression including technologies that cause the problem.

This framing allows students to engage in CS while understanding the ways technologies exist within society. Ultimately, the aim of these practices is to encourage action, the democratization of technology, and dismantling unjust structures.

Back to Top


Computer science education cannot fix its internal injustices and external harms to society if it aims only to broaden participation. Instead, institutional change is required. We must change how and what is taught within CS classrooms. A justice-oriented approach to CS education requires us to humanize pedagogies that center students in the curriculum, prepare them to think critically about the design and necessity of technologies, and finally develop CS students who understand their responsibilities as citizens in a multiracial democracy. Without significant systemic change, CS risks the very foundations of our society by sustaining inequality and injustice. However, with an educational approach toward justice, computer science may work toward stepping into the full promise of the possibilities of technology to help the world.

    1. Buolamwini, J. and Gebru, T. Gender shades: Intersectional accuracy disparities in commercial gender classification. In Proceedings of Machine Learning Research. (2018).

    2. Coeckelbergh, M. AI Ethics. MIT Press, 2021.

    3. Costanza-Chock, S. Design Justice. MIT Press, 2020.

    4. Fischer, F. Citizens, Experts, and the Environment: The Politics of Local Knowledge. Duke University Press, Durham, NC, 2020.

    5. Hollett, T., Phillips, N.C., and Leander, K.M. Digital geographies. Handbook of Writing, Literacies, and Education in Digital Cultures. 2017.

    6. Lachney, M. and Yadav, A. Computing and community in formal education. Commun. ACM 63, 3 (Mar. 2020), 18–21.

    7. Scott, K.A., Sheridan, K.M., and Clark, K. Culturally responsive computing: A theory revisited. Learning, Media and Technology 40, 4 (Apr. 2015), 412–436; https://bit.ly/3HYKvBB

Join the Discussion (0)

Become a Member or Sign In to Post a Comment

The Latest from CACM

Shape the Future of Computing

ACM encourages its members to take a direct hand in shaping the future of the association. There are more ways than ever to get involved.

Get Involved

Communications of the ACM (CACM) is now a fully Open Access publication.

By opening CACM to the world, we hope to increase engagement among the broader computer science community and encourage non-members to discover the rich resources ACM has to offer.

Learn More