Computationally conscious

Through my work on the Learning Trajectories for Everyday Computing (LTEC) project and the Computational Thinking for Education (CT4EDU) project(1), I spend significant amounts of time these days thinking about this question:

How can I bring computational thinking (CT) into teaching and learning of elementary school mathematics?

The natural starting point for this exploration is to think about existing connections — or whether there are any. So, first I asked:

Are kids thinking computationally while they do elementary mathematics? If so, when?

The answer to this question depends a lot on how you define computational thinking, and also on how kids are engaged in mathematics. But based on the definitions of CT I’ve seen emerging in the CS education field and my understanding of reform mathematics teaching, I’ve come to be pretty solid in my belief that the answer to the above question is – or at least can be – yes.

Consider, for example, these two excerpts from relevant documents:

Generalization is associated with identifying patterns, similarities and connections, and exploiting those features. It is a way of quickly solving new problems based on previous solutions to problems, and building on prior experience. (Bocconi, Chioccariello, Dettori, Ferrari, & Englehardt, 2016, p. 18)

Mathematically proficient students look closely to discern a pattern or structure… Mathematically proficient students notice if calculations are repeated, and look both for general methods and for shortcuts. (Common Core State Standards Initiative [CCSSI], 2010, p. 8)

The first excerpt is from a recent European Commission report on the state of CT in compulsory education. The report defines generalization as a component of CT. The second excerpt is from the Common Core State Standards for Mathematics (CCSS-M), specifically, the Standards for Mathematical Practice. It’s hard not to notice the parallels. In both CT and math practices, kids identify patterns and exploit them in solving later problems.

Because of similarities like this, I’ve been pretty consistent in my belief that kids do CT when they do math. They develop their own algorithms for counting, adding, subtracting, multiplying, and dividing. They decompose problems into easier parts — for example, adding the 10s and the 1s separately. They abstract important features of problems when they write number models for word problems. They debug their own thinking and problem solving processes when they use estimation to check whether their answers make sense. They think carefully about the impact of sequencing when they use parentheses. They apply conditional reasoning when they sort shapes.

I could continue, but I think I’ve made my point. Once I started looking for it, I saw CT everywhere in elementary school mathematics. And I know there are lots of amazing teachers and wonderful resources out there that help to make this kind of thinking happen every day in elementary school classrooms.

At first, this made it seem like my job — namely, to think about how to bring CT to elementary mathematics — was basically done for me. I don’t have to do anything! It’s already there! I can just kick back and watch it happen!

But then when I stepped back and thought about why CT has become an area of focus in education, I quickly recalled that a major part of the argument for bringing CT into compulsory education is to get kids ready to be literate citizens in an increasingly computer-influenced world. And I had to stop and ask myself:

Is the kind of mathematics teaching and learning that includes CT ideas — discovery-oriented, constructivist, reform-based, practice-focused, whatever label you like — getting kids ready for the increasingly computational world?

And relatedly:

If it is, why are we talking about bringing CT to education if it is already there?

I’m skeptical that the answer to the first question is yes. My admittedly anecdotal argument for that skepticism is that I had the benefit of a mathematics education experience that taught me a lot of about abstraction, pattern generalization, and decomposition, and also the benefit of a decade of thinking about how to make those things a bigger focus in classrooms in my professional life. But it wasn’t until a few years ago that I made any connection between those experiences and computers. So why would I expect kids and teachers to do that spontaneously?

So now we come full circle to how I started this post. For several years, I’ve thought of my work as focused on figuring out how to bring CT to elementary mathematics. Recently, though, I’ve been considering whether I’ve been asking the wrong question. CT is already there. I think perhaps the more helpful questions include:

At what point does conscious awareness of the CT embedded within mathematics become important to supporting students’ transfer of these skills to computing?

What are the key differences between the CT embedded in math and CT applied directly to computing?

How do we give kids experiences that facilitate use of their mathematics practices to computing?

I’m not sure these are exactly right. But I do think these are more difficult, and more important, than the questions that have guiding my thinking to this point.


Bocconi, S., Chioccariello, A., Dettori, G., Ferrari, A., Engelhardt, K. (2016). Developing computational thinking in compulsory education – Implications for policy and practice; EUR 28295 EN.

Common Core State Standards Initiative. (2010). Common Core State Standards for Mathematics. Retrieved from

  1. This is my disclaimer that any views expressed in this blog post don’t necessarily reflect the views of these project teams!

One thought on “Computationally conscious

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s