Exploring Computational Thinking

My work at Google last year just shipped. Four of us wrapped our heads around “computational thinking,” an approach to problem solving common to computer programmers (more here), and tried to adapt it to the California high school math and science standards. This felt, at times, like tying Al Roker and Usain Bolt together at the ankle and forcing them to compete in a three-legged race. Other times, they played well together.

Near as I can tell, of the sixty-or-so modules listed, only one of them — “Roots of an Equation” — is mine. I always admired Google’s lack of sentiment in deciding when to invest itself and when to divest itself. Still it’s strange to see a year of work reduced to a single entry in a long list. I’ll be interested to see where the project goes from here.

I'm Dan and this is my blog. I'm a former high school math teacher and current head of teaching at Desmos. More here.


  1. Congrats! And Python is the perfect language for this type of work, IMHO.

    If there are any physics teachers out there looking to integrate computational thinking into your classes, I highly suggest looking at VPython: http://vpython.org

    Here’s a simple bouncing ball program in VPython:

    Here’s a research paper entitled “Computational physics in the introductory calculus-based course” which gives some rationale and examples:

    A whole suite of VPython activities are here:

    Plus, a Google search for “VPython” and “physics” will yield many more good activities in mechanics and E&M.

    I use it with my AP Physics C students and they love it! And once they’ve written the program, it becomes a springboard for inquiry as they ask “what if” questions and change the program to find the answers.

  2. I learned Calculus I and Calculus II this way in 1992 at Chadron State college in Nebraska under Dr. Montey Fickel with a program called Derive and a Program called ISETL (I think). It actually was pretty interesting. I don’t know that I could have passed an AP Exam after I was done, but I did completely understand what a derivative and integral was when we finished the course. So big idea wise it was great. The one thing I remember about it was setting up infinite loops in the programs to lock them up and also finding the limits of those early PC’S. When you would set up trapezoids to sum up the area under the curve it was really easy to lock up the computers when you made say 500 traps in a given interval. Lot of hours in a computer lab.

  3. I love this concept but really don’t like the presentation. More “How to use this” would be great.

    Also, they really should be putting a huge “Download Python 2.5 here” link at the top of the page. I installed the newest Python while I started to browse the Intro doc, only to find out halfway through that the very first example of a program *wouldn’t run at all* because apparently any Python >= 3.0 drastically changes how the print statement works, or something.

    Btw I’d love to hear how you’d use the ‘Roots of an Equation’ program in a class.

  4. josh g., Btw I’d love to hear how you’d use the ‘Roots of an Equation’ program in a class.

    Yeah, it’s weird to me they didn’t include the lesson plan I wrote to accompany the program. That was the more time-intensive task.

  5. As an ex-Computer Science guy, seeing math lessons based on Python warms my heart, but some of these seem like they’d go better with a spreadsheet (and one I’ve done with a spreadsheet before) — there’s no need to teach coding, the algebraic connection is more strikingly apparent (each box is its own variable), it’s related more to prior computer experience, and there’s instantaneous graphing.

    After enough spreadsheet experience, one of my students made the remark that “algebra is like cheating for math”.

    Have these been tried in practice? What’s the learning / time ratio like?

  6. I’m new to computational thinking, and I’m initially skeptical. It may be a good idea to supplement a curriculum, but I wouldn’t want to base an entire curriculum on it. I’m not sure that it will work with every learning style. Someone with a kinetic learning style may do as well by looking at the problem as a set of step-by-step procedures.

    This also seems to hide the big picture of the mathematics curriculum. I don’t know if the students can see how the topics fit together.

    It also reinforces the concept that math problems can be done by memorizing algorithms. Memorizing algorithms is good for arithmetic, but not for algebra. Memorizing is a black hole for solving applications.

    This is also not new. I have a book (somewhere) that uses programs in APL to teach math.

    Again, these are just my initial thoughts on the topic.

  7. I was intrigued by this so I downloaded the program and started working my way through the lessons. There appears to be an error in Introduction to Python TE, exercise 8.
    x=3, yet the page says that x2 returns a false. I got a true, which appears to be correct to me. I couldn’t find a place to contact Google to ask about this. Am I wrong, or is Google wrong?

  8. Obviously when I hit submit, what I wrote appears to have changed, so I will try again. The TE says that x is less than 12 and x is greater than 2 returns a false.