Situated Computational Thinking


The research group that I’m a part of, Re-Making STEM, of is looking at ways that computational thinking (CT) practices intersect with creative, collaborative human activities.  This has led to some really interesting explorations in computing, cognition, and culture. Our practical goals include: discovering ways that teachers and their students can engage with and learn CT, and discovering design principles for learning and applying CT in interesting ways.  In this post, we’ll look at some of those explorations and hopefully leave you with some things to think about.

Computational thinking

I think this definition of CT is as good a starting point as any:

Computational Thinking is the thought processes involved in formulating problems and their solutions so that the solutions are represented in a form that can be effectively carried out by an information-processing agent (Cuny, Snyder, Wing, 2010).

Wing (2010) says she’s not just using problem / solution to refer to mathematically well-defined problems but also to complex real-world problems.  She also says that the solutions can be carried out by humans, computers, or combinations of humans and computers. This definition places the emphasis on representation, but begs the question, what are forms that can be effectively “carried out” by information-processing agents?  What does “carried out” mean anyway?

Let’s pin these down for the sake of discussion.  We might say that the forms we’re talking about are abstract representations (abstractions, the noun).  Indeed, abstraction (the verb) is widely recognized as an essential component of CT (Grover and Pea, 2013).  Let’s say abstractions are formal representation (e.g. formal logic, mathematical equations, computer code), and “carry out,” means execute.  So we’re talking about executing algorithms. And let’s be real – we are only going to write formal algorithms if we intend to automate them with a computer.  

So if CT in practice is, “writing algorithms that can be executed by computers,” then we are really talking about programming.  This contradicts Wing’s clarifications about “problems” and “agents,” described above. Furthermore, the field is saying loud and clear that CT is not just programming.  Since 2013, the concept of CT has expanded (e.g. Weintrop et. al., 2015), and for most people it is certainly not limited to executing algorithms on computers.

Opening it up

Let’s look at this piece by piece, starting with the “carrying out.”  Even if we’re talking about formal representations and computers, CT involves formulating data as well.  Data is not “carried out,” or executed, like an algorithm – it is structured, processed, analyzed, synthesized, and interpreted (by humans and computers).  

Now let’s look at formality and agents as computers / humans.  We already saw what happens when we are strict about formality and computers.  If we loosen the restriction on formality, but still think of agents as computers (or virtual agents), then we allow pretty much any human-computer interaction.  If we keep formality strict, but allow for people as agents, then we allow for things like math to count. The latter might work for some, but I would ask: do we care about distinguishing between CT and mathematical thinking?  Is CT == mathematical thinking + computers? Do we want to allow for less formal expressions of CT?

Let’s put these two axes (more or less formal, extent of computer use) on a table.

We in the CS community might have a tendency to think about CT as living in the upper-left corner of the table (formal, tied to computer use).  In reality, creative collaborative human activity blends all of these types of communication, and CT (whatever it is) intersects with all of these other areas.  Authentic computational practice also involves multiple people and computers working together – there are more than two agents in the system. So, as a general case, we have systems with: agents (humans, computers, and virtual agents), situated in environments (physical, social / cultural, virtual), interacting using systems of representation (sounds, images, diagrams, natural and formal languages, etc.).  

One CT, many CTs

What are the implications of this?  I think there are two clear options for how we define CT:

  • (A) Restrict what we mean by CT.  This is perfectly reasonable and probably necessary for most practical purposes.  However, this has the inevitable consequence of fragmenting our understanding of CT.  There will be different CTs in different disciplines / fields. We will do this, but we should try to understand the restrictions that we are imposing, and the consequences of imposing them.
  • (B) Break our concept of CT wide open.  I think the scientific community (at least, those who are studying the construct of CT and how it plays out in real cultural contexts) should do this, so that we can explore how CT is understood and practiced in a variety of contexts and for a wide range of purposes.  

This is not a binary choice that we need to make, individually or collectively, once and for all.  The processes of imposing structures and breaking them apart will enrich our understandings of CT. In closing, I ask you to consider how you construct CT with your students and colleagues, and what effects this might have on who engages with and learns CT at your school.

These ideas in this post are part of a collaborative research effort with the Re-Making STEM PIs, Brian Gravel, Eli Tucker-Raymond, Maria Olivares, Amon Millner, Tim Atherton, and James Adler, and the dedicated research team, Ada Ren, Dionne Champion, Ezra Gouvea, Kyle Browne, and Aditi Wagh. 
This material is based upon work supported by the National Science Foundation under Grant Numbers DRL-1742369, DRL-1742091. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation.

References and further reading:

David Benedetto, At-Large Representative