Teaching Social Justice Through Computational Thinking

Social justice has been weighing heavy on my heart recently and having the wonderful opportunity to be involved in a Digital Education Leadership graduate program, I have been pondering the ways in which we as educators can teach students about social justice through technology. The key to this is within ISTE Student Standard 5.

Computational Thinker:

Students develop and employ strategies for understanding and solving problems in ways that leverage the power of technological methods to develop and test solutions.

5a – Students formulate problem definitions suited for technology-assisted methods such as data analysis, abstract models and algorithmic thinking in exploring and finding solutions.

5b – Students collect data or identify relevant data sets, use digital tools to analyze them, and represent data in various ways to facilitate problem-solving and decision-making

5c – Students break problems into component parts, extract key information, and develop descriptive models to understand complex systems or facilitate problem-solving

5d – Students understand how automation works and use algorithmic thinking to develop a sequence of steps to create and test automated solutions

Reading through this standard, I felt quite out-of-the-loop. What even is computational thinking? Is this all related to computer sciences? And what about algorithmic thinking… how does that relate to computational thinking? So many more questions to be asked — so I came up with a guiding research question to help ground me during my search for computational thinking truth.

How can students pursue social justice through computational and algorithmic thinking?

First, I needed to have a better understanding of what computational thinking is. I found a fantastic article written by Jeannette M. Wing, Computational Thinking.

Jeannette Wing does an amazing job explaining the concept of computational thinking. When I first heard the term “computational thinking” my mind immediately jumped to thinking of programming on computers. And while there is definitely a link between the two, I have come to realize that computational thinking is a strategy that is necessary for the skill of computer programing. This helped me to understand that while computational thinking can be a means to an end in regards to computer programing or other computer sciences, it is also a strategy that we should be teaching our students. 

Wing suggests the following fundamental pieces concerning the key concepts of computational thinking:

  1. Conceptualizing, not programming → in order to understand a problem, you need to be able to think about it in a deeper way.
  2. Fundamental, not rote skill → to think in a fundamental way is to truly understand and conceptualize something, vs rote skill is to memorize something by mechanical routine.
  3. A way that humans, not computers think → humans are clever and full of imagination, our thinking and problem solving is limitless, whereas computers have limitations
  4. Complements and combines mathematical and engineering thinking → building systems that interact with the real world
  5. Ideas, not artifacts → computational thinking manifests in the way we think about and solve problems throughout our days and while we communicate with others
  6. For everyone, everywhere 

She goes on to state two main messages for all students, educators, and parents. One, that intellectually challenging and engaging scientific problems remain to be understood and solved. And the second, that one can major in computer science and do anything.

Wing helped me realize that computational thinking isn’t necessarily a skill that needs to be learned, but a strategy that can be utilized. It is a method of problem-solving! This was an extremely powerful idea for me to grasp. Now that I have begun to learn the essence of a new strategy, how can I utilize it with my students?

I found a posting on Edutopia written by Eli Sheldon, Computational Thinking Across the Curriculum, that explains the way that he and his school are implementing computational thinking into classrooms.

“To the students at my school, it’s an approach to tackling challenging questions and ambiguous puzzles. We explicitly integrate computational thinking into all of our classes, allowing students to draw parallels between what they’re learning and how they’re approaching problems across all disciplines.”

Eli Sheldon, “Computational Thinking Across the Curriculum”

When I read this quote, I was hooked. Sheldon writes about the ways in which students in his middle-level are able to use four of the main computational thinking skills across all subjects in school. He begins by explaining how students use algorithmic thinking to recreate art with coordinate plots, or Punnett squares to create future child possibilities. Students use decomposition to break large problems into smaller tasks in order to help them find solutions related to sports and humanities. Abstraction helps students to break apart the critical pieces of a concept away to focus on. This is demonstrated in a humanities class focusing on technologies of ancient civilizations and science students representing the human body as an amusement park. Last, Sheldon shows how students can represent pattern recognition by analyzing data to “save the world”. 

Sheldon helps me to wrap my mind around the key pieces of computational thinking and how, while linked to computer sciences, they can be demonstrated throughout any subject. Students are able to solve problems and understand concepts by using the different skills that computational thinking represents. These four skills are essential for students to grasp while wrestling with the idea of social justice and their role in working towards solving problems that they see in the world around them. 

Sheldon also adds an amazing assortment of CT curriculum lesson plans FOR FREE, created by the Green Dot Public Schools.

You can find them here: http://ct.excelwa.org/

Google also offers an amazing online course to help educators (or anyone) learn more about exploring computational thinking: https://edu.google.com/resources/programs/exploring-computational-thinking/

Sheldon helped inspire me to keep going with my search for a way to teach social justice through computational and algorithmic thinking. Here are my basic steps for students to walk through in order to accomplish this feat:

  1. Identify a topic that is affecting people in a negative way
    – The way that I posed this to my students was to think of something that is not fair. The essential question I stated was “How can we bring about positive change?”. One student chose the topic of school lunch being too short.
  2. State your concern as a problem that can be solved
    – I asked my students, “Why did you choose this topic?”, and almost all of them unknowingly participated in the decomposition of the topic into smaller pieces. “We don’t have enough time to eat because the lunch lines are too long and then I have to eat really quick to get to recess but my stomach hurts because I ate so quick.” This helped my students to recognize that there were actually two separate problems in the topic that they originally chose: the lunch lines are taking to long to get through which results in the students having to eat too quickly, and that recess comes right after their lunch period and they are running around and playing with a full stomach.
  3. Research your problem/ gather information
    – In this step, my students were able to accomplish pattern recognition by observing the lunchroom and collecting data. They found that the lunch line was taking too long because the younger students could not remember their lunch numbers and our child nutrition service staff members were having to pause the line to look up lunch numbers. During this time, students also found resources about digestion time, and whether or not it was good for you to play with a full stomach.
  4. Write possible solutions
    – Through pattern recognition and decomposition, my students were able to draft multiple solutions. The first, have cards available for younger students that had their lunch numbers on them to reduce time in line(thankfully our wonderful staff also had this great idea and began to implement it). And second, to switch lunch and recess in order to give their bodies a longer amount of time to digest before being active again.
  5. Test solutions and reflect
    – Our students have been able to see a reduction in the time spent in line based on the student lunch number cards, however, they have not yet had the opportunity to try a switched lunch and recess schedule. But they are quite excited to see in the future how it would work!

Through this process (while ongoing), my students have begun to feel the power of social justice learning. They have learned new strategies to work through problems, and break them into smaller and more manageable concerns. And they have had fun doing it. Social justice teaching and learning is possible, and computational thinking is a great way to achieve it! I cannot wait to share more experiences with my students.


Computational Thinking Curriculum. (n.d.). Retrieved February 20, 2020, from http://ct.excelwa.org/

Sheldon, E. (2017, March 30). Computational Thinking Across the Curriculum. Retrieved February 22, 2020, from https://www.edutopia.org/blog/computational-thinking-across-the-curriculum-eli-sheldon

Wing, J. M. (2006). Computational Thinking. Communications of the ACM, 49(3), 33–35. Retrieved from https://www.cs.cmu.edu/~15110-s13/Wing06-ct.pdf

Leave a Reply

Your email address will not be published. Required fields are marked *