Close-up of hands on a laptop computer

Breaking Barriers in Computer Science via Culturally Relevant Educational Tools (Part 2)

by Joseph Chipps  Ed.D.

In the last post, I gave background on my school, situation, and the problems I was trying to address to bring in more people of color (POC) and females into the white and Asian male dominated Computer Science (CS) courses in my school. I also gave background on Culturally Relevant Education (CRE)1 the term I will use that encompasses culturally relevant pedagogy and culturally relevant teaching.

In order to develop Exploring Computer Science (ECS)2 and AP Computer Science Principles (AP CSP)3 using a culturally relevant educational framework, curriculum developers of those courses relied on theories and tools positioned within culturally relevant education: ethnocomputing and culturally situated design tools.

Ethnocomputing attempts to bridge the gap between culture and computing in that it assumes that computing is not a neutral activity; rather, computing is informed by capitalist, patriarchal, and western logic, beliefs, and tools4. Ethnocomputing originated from the idea that computing should be taught using relevant cultural artifacts and references of the local learners; that is, the cultural contexts of the learner5. In the ECS curriculum, through collaborative practices and methods of inquiry, students develop their own understanding of computing using journal writing, dialogue, construction of culturally meaningful artifacts, and presentations. In the AP CSP curriculum, students develop a protocol for sending a color image through a network by creating their own personal favicon, the little icon at the top of a browser tab. This activity allows students to develop icons from their sociocultural backgrounds; students create their own symbols for computing, and through those symbols construct meaning as well as perception of self. Furthermore, the biases of the instructor are acknowledged as students work together to construct their own ideas and interpretations of computing.

AP Computer Science A externally tests students’ understanding of Java, an object-oriented programming language. Object-oriented refers to a style of programming in which we use data structures called objects to hold data that belongs to the object (i.e. a Student’s name, age, and gpa). I give a detailed example at the end of the post, that shows how I attempt to use items from students’ lived experiences to construct the rationale and embedded logic of encapsulating data within a single entity while using a design artifact from industry to help students code-switch.

As I teach about Class and Object in Java, I know they are symbolic tools, shaped by generations of programmers over time. Even the diagram in the example below is a constructed symbol, formed by decisions and negotiations over time within the programming community. So I have to ask: am I acclimating my students to cultural norms embedded within a larger system that purposely excludes them or am I supporting their futures by teaching them tools and languages required for code-switching?

ECS and AP CSP have the privilege of using tools and languages not shared by the programming community because they were designed to exist outside of professional communities for the specific purpose of increasing participation, but activity within a course that has historically used industry standard languages will always be mediated by the shared tools and languages of the professional community. Yes, I can create student-centered activities that allow students to construct their own ideas of concepts and logics, and invite students to raise sociopolitical consciousness in their and other communities. But am I doing a disservice to those students by forcing them to construct the logic, symbols, and beliefs of a culture that purposely excludes them? Or am I helping them enter this community?

Culturally Situated Design Tools (CSDT) support ethnocomputing in that they are collaboratively developed tools that exist outside of the shared tools of computing, and are inspired by purposefully excluded communities (PEC) culture. For example, a collaborative project in ECS requires students to present the cultural background of Native American bead looms, connections between bead looms and mathematics, and their own authentic bead loom designs that they construct using a CSDT. Embedded in this lesson is the realization that computing and mathematical concepts are not singularly defined and owned by white, patriarchal, western history; rather, embedded within Native American cultures. Alternatively, in ECS, after learning the history of cornrows, students use a CSDT to design and reflect on the mathematics of cornrow curves. Students investigate recursion through a CSDT that simulates cornrow curves. When I was taught recursion in a Java class, I heard names like Fibonacci and solved problems that required some understanding of basic number theory. Students constructing recursive artifacts using a non-western tool like a cornrow design simulator is anti-racist computing education. We are putting the stories that were removed from education back into the curriculum.

But what does a CSDT look like when the purpose of a course is to introduce students to the shared tools and languages of the professional community? How can we leverage the experiences and voices of those who have not been included in the development of tools we use to design and execute computing? How do we promote anti-racist education when the tools and languages we use are embedded in exclusionary culture6? These were the barriers I faced when trying to implement ethnocomputing via culturally situated design tools in my AP Computer Science A curriculum. I still do not have answers. Perhaps a next step in computing is to design anti-racist computing tools and languages for industry. How can we use heritage cultural artifacts and vernacular culture to support the development of anti-racist computing tools and languages that can be used in industry as well as education? In my next post, I will explore what can be done in courses like AP Computer Science A such as increasing sociopolitical awareness, using the experiences of students, building connections within the community, and personalizing student-constructed artifacts.

Java Example Details:

For example, a class called Student would be an archetypical framework for how to define a student in a computer, and would include three parts: what data a student has (name, age, gpa, etc); how to create a student (which data can we set initially vs which data can be set later) and; actions we can do with the student data (update data, access data, add new scores to the gpa). While a class is a template for an object, an object is an instance that we can create. For example, once I have defined the template for what a Student is in a file called, then in a runner file, I can create a Student named Alice and input all of Alice’s data. I can then store all of Alice’s data within the object called Alice. Over time, I can access and manipulate Alice’s data, and even have Alice’s data interact with other Students’ data if, for example, I want to know the average GPA of the school or any selection of Students. The concept of objects is essential to AP Computer Science A. Consequently, I developed a lesson inspired by ethnocomputing for the first week of the course that would invite students to interpret experiences from their life into an object (discussed above). Figure 1 shows an example of what students must create.

– chefName : String

– ingredientNum : int

– temperature : double

+ getChefName(): String

+ getIngredientNum(): int

+ getTemperature(): double

+ setChefName(String): void

+ setIngredientNum(int): void

+ setTemperature(double): void

+ toString(): String

 Figure 1. Example of object design from my Java curriculum

Read Part 1 of the series.

Read Part 3 of the series.

  1. Aronson, B., & Laughter, J. (2016). The theory and practice of culturally relevant education: A synthesis of research across content areas. Review of Educational Research, 86(1), 163-206. doi: 10.3102/0034654315582066
  2. Goode, J., Chapman, G., & Margolis, J. (2012). Beyond curriculum: The Exploring Computer Science Program. ACM Inroads, 3(2), 47–53.
  3. Astrachan, O., Cuny, J., Stephenson, C., & Wilson, C. (2011, March). The CS10K project: mobilizing the community to transform high school computing. In Proceedings of the 42nd ACM technical symposium on Computer science education (pp. 85-86).
  4. Tedre, M., Sutinen, E., Kahkonen, E., & Kommers, P. (2006). Ethnocomputing: ICT in cultural and social context. Communications of the ACM. 49(1), 126-130. doi: 10.1145/1107458.1107466
  5. Babbitt, B., Lyles, D., & Eglash, R. (2012). From ethnomathematics to ethnocomputing. In Swapna Mukhopadhyay & Wolff-Michael Roth (Eds.). Alternative forms of knowing mathematics (pp. 205–219). doi: 10.1007/978-94-6091-921-3_10
  6. Margolis, J., Estrella, R., Goode, J., Holmes, J.J. and Nao, K. Stuck in the Shallow End: Education, Race, and Computing. MIT Press, Cambridge, MA, 2010.

How to cite this work

CIRCL Educator posts are licensed under a Creative Commons Attribution 4.0 International License. If you use content from this site, please cite the post and consider adding: "Used under a Creative Commons Attribution 4.0 International License ("

Suggested citation format: [Authors] ([Year]). [Title]. CIRCLEducators Blog. Retrieved from [URL]