Go to the Data: Two stories of (really) Computational Thinking

August 12, 2010 at 9:57 am 23 comments

Barb is on a panel on Computational Thinking at the Scratch Conference this afternoon.  We’re as confused as anyone else what “Computational Thinking” means, but I’ve had a couple of recent experiences that have highlighted for me one aspect of computational thinking, something which I feel is really computational thinking — not computer science, not algorithmic thinking, not mathematical thinking.

Story 1: It’s in my foot and my iPod. I like to run.  Running doesn’t always like me.  I had knee surgery for a torn meniscus three years ago.  The last two Peachtree 10K runs, I’ve been registered, but have torn a muscle (calf one year, hamstring the next) within weeks of the race and missed it, forced to take 6-8 weeks off.  I have now been running since January without injury.

So I was really bummed when I went out to run a five mile a couple weeks, and after two miles, I had the all-too-familiar feeling of my hamstring straining.  It didn’t pull or tear, but I turned around, and ended up walking more than a mile of the two miles back.  I took a couple days off, ran short runs and worked out on the elliptical, and within a week, was running 3 miles again without pain.  What happened? And how could I avoid it in the future?

I have been running with Nike+ iPod since Christmas. A fob goes on my iPod, and a sensor goes in my shoe.  When I next synched my iPod to the Nike+ website, I decided to look at my last few weeks worth of runs.  Here’s what I saw, with my scribbled red arrow on the run where I was hurting:

When I look at this graph, I see lots of runs averaging around 3 miles (particularly when I was traveling alot), then one run above 4 miles, then a handful of shorter runs, then within two days, my two longest runs of the summer (4.71 and 4.75 miles). Two days later (with elliptical and weight work in between — no rest days), I tried to go even further at five miles.  Well, duh!  I think I pushed myself too quickly.  It’s one thing to increase my distance.  It’s another to do it day-after-day, without shorter runs or rests. I have to ramp up slowly, not increase my longest distance every day.  That helps to explain my Peachtree training injuries too, as I tried too quickly to ramp up to 10K mile runs.

I showed this graph to Barb and told her my reasoning.  She said, “That’s computational thinking!” I think she’s right.

Story 2: It’s not blowing in the wind. Atlanta, like most of the country, has been wicked hot this summer.  The newspapers are using phrases like, “Hottest summer in 30 years!”  Is it really?  I was wondering, and I was wondering how I could find out.

I went to WolframAlpha and typed in “temp in Atlanta.” From the “History” pull-down menu, I selected “Last 5 years” and saw this graph.

I find this graph unconvincing that this is the hottest summer in even the last five years.  This looks like pretty much the exact same curve and the exact same maximums across the five years.  Then I clicked the “More” link, and got these graphs:

The humidity is high, but it looks higher back in 2007. But look at that last one, the wind speed.  To my novice eye, that looks like the lowest wind speeds in the last five years.  Maybe that’s why it feels so hot?  It’s not the temperature, it’s the lack of wind?  And maybe that is related to the high humidity?

Computational Thinking includes Going to the Data.  The common theme in both of these stories is “Go to the data.”  In both cases, I realized that data had been collected that could help me to answer my question.  This is computational thinking.  In our modern world, there are lots of data being collected (or can easily be collected), stored in the cloud, and available for processing.  Dealing with these data is different than mathematical thinking (though the interpretation of the visualizations is clearly mathematics), algorithmic thinking, and notably for me, computer science.  None of the above looks like computer science to me.  However, it feels like it’s important for 21st Century citizens to be able to do this kind of reasoning.

Some of the questions that I had to answer for myself here, and that we’d want students to be able to answer for themselves, include:

  • Are the data already collected that help me to answer my question? Or can I easily collect the data?  WolframAlpha has an amazing collection of data already available to crunch.  My run data comes for free after I put the sensor in the shoe, and run with my iPod — which I like to do anyway.  (FYI, my current top running accompaniment are tunes by John Prine, Pink, Coldplay, and the soundtrack to “Mama Mia!”)
  • Is the data what I want? Do I trust the data?
  • What can I access in the data?
  • How can I query and visualize the data?

Of course, next comes the interpretation of the data, the inference and development of hypotheses.  I’m not saying that that’s computational thinking.  Understanding a model requires knowledge of science and mathematics.  But it really is uniquely computational thinking to find (or create) these collections of data and use them to create the visualizations that allow us to apply our knowledge of science and mathematics to answer our questions.

Entry filed under: Uncategorized. Tags: .

Blogging the first day of ICER 2010 Media Computation books available as eBooks

23 Comments Add your own

  • […] This post was mentioned on Twitter by Alfred Thompson and Mark Guzdial, Olga Chaidou. Olga Chaidou said: RT @alfredtwo: RT @guzdial: Two examples of computational thinking — going to the data. http://tinyurl.com/26o62oq […]

  • 2. gasstationwithoutpumps  |  August 12, 2010 at 11:00 am

    As a bioinformatician, I agree with you that getting lots of data is the heart of computational science, but I don’t think that it is the “computational thinking” part. The analysis of the data is the computational thinking. Your eyeballing the graph and saying “I don’t see a trend” is not computational thinking. If you had then decided to define a particular segment of each year as “the summer” and take averages for that segment, or done a Fourier analysis and looked and looked at the lower frequency components—that’s computational thinking. The key is to use computation to massage the data into a more interpretable form or to extract usable knowledge from the mass of data.

  • 3. Charles Severance  |  August 12, 2010 at 11:26 am

    I think that the key point of your analysis (which I agree with) is that data is a great place to start with when it comes to developing computational thinking as a skill. Each of the examples you used was not only data, but it was data that was about people and/or something you could touch, feel, and see. Which means students have a natural interest in what it means. The analysis can be high level and mostly visual inspection of either simple graphics representing the information as you did above. Computational thinking begins to grow as soon as they start looking at the information methodically – and then the need to do some more in depth understanding – like “What was the average by year?” What was the average by time of day? What was the highest average week across all the weeks?

    At some point, when the analysis and questions become really tiresome because of their manual and repetitive nature, we introduce the concept of “what if we could describe or pass off this task to some bit of technology that could help us?” like a spread sheet, or if it was hard to express in a spreadsheet, then perhaps a bit of Python code… and so on.

    I think that starting from the data *is* the way to bring computational thinking to the broader population well beyond Computer Science. Also because skill at understanding data is a key skill regardless of profession.

    This brings the key notion of “technology can help the student do something that they want to do anyways” to the front and center.

    I also believe that this is just a very good entry way into Computational thinking. At some point the student naturally becomes curious about a deeper understanding of this “technology helper” and moves from understanding how to use it purely for their selfish purposes and more toward – How does this thing work and can it do more things than just scan my Nike iPod data?

    To me the key is being patient with students and not pushing them into Algorithmic thinking until they are really ready for it and in a sense, “hungry” for it.

  • 4. Gilbert Bernstein  |  August 12, 2010 at 12:39 pm

    I don’t think I quite buy this argument. To me it looks like you’re simply talking about science, or empiricism more broadly. If this is “computational thinking,” then I think it undermines the case for high school CS classes and instead points more towards expanding and refining the use of computers in the science and math classrooms.

    • 5. Mark Guzdial  |  August 12, 2010 at 1:01 pm

      I should have been more specific, Gilbert — I’m thinking about skills that a high school student should develop, and an undergraduate should be assumed to have. If you look at any state or national (say, AAAS) science education standards, you’ll find none of my questions listed. Students are not taught to look for data, to question its source, to discern what they can access, and to choose an appropriate query or visualization. These questions only come up because there’s computation.

      I agree with Charles that data is a great entryway into computational thinking and algorithmic thinking. I guess I’m making a fairly fine/minor (from an undergraduate faculty perspective) point. Most high school students are not taught to do what I did with data, which means that those who do know, figured it out on their own — which suggests that those without broadband access at home, without access to computation for lots of hours, and without having family or friends to point out to them the possibilities of data probably do not have these skills. I’m suggesting that it should be a more general skill than that.

    • 6. Charles Severance  |  August 12, 2010 at 3:21 pm

      Gilbert, I think that this “start with data” does not “undermine” the High School AP CS at all and frankly, if this data-oriented computational thinking was properly placed in the curriculum, it would enhance the value and student experience of the AP CS course as well as increase interest in the course.

      This “data analysis as entree into computational thinking” does not replace, nor does it compete with the notion of an AP CS course. However, there is an important difference.

      The “data oriented computational thinking” is something *is* something that comfortably fits in a very broad curriculum (I.e. AAAS) and this theme could easily surface in middle school and if properly developed during middle and high school – those students would be “raring to go” into an AP CS course in Junior or Senior year.

      And if we take a longer view of the next 20 years, if we can successfully get students understand computational thinking in early grades, then perhaps in time, some algorithmic thinking will follow to the lower grades and broader audiences.

      That would be cool.

  • 7. David Klappholz  |  August 12, 2010 at 1:28 pm

    I agree with Gilbert and don’t quite buy your response to him. In good HS physics, chemistry, and biology courses students are taught that natural scientists collect and analyze data in an attempt to validate hypotheses. Students sometimes even collect and analyze data themselves in labs. The fact that we don’t teach students to do this when they have personal quantitative questions is, if anything, a deficiency in our teaching of the scientific method, i.e., that it applies outside of academic science — aka “learning transfer.” (And, as you well know, all the natural sciences have used (manual or other) computation for hundreds of years and virtually no natural scientist could do his/her work today without the use/availability of computers.)

    To appropriate this to our field as “computational thinking” is a bit of a stretch, no?…unless we admit that this approach has been used in the natural sciences for a very long time and that “computational thinking” might be an appropriate additional modern day name for the process?

    BTW, are the folks who are designing the new AP CS (computational thinking?) course thinking along these lines? Perhaps they should be.


    PS Do the proponents of computational thinking feel that it’s different from algorithmic thinking?

    • 8. gasstationwithoutpumps  |  August 12, 2010 at 1:50 pm

      I distinguish between computational and algorithmic thinking. Algorithmic thinking concentrates on the method, the steps of the method, how things are done, …
      Computational thinking relies on the existence of algorithms, but does not care much about how they work.

      To pick a low-level example, it is the difference between implementing merge sort and deciding to sort the data based on age. Computer science is based heavily on algorithmic thinking, while computational science (where “science” can be replaced by “physics”, “chemistry”, “biology”, …) is based more on computational thinking.

      I think that high school students would be well served to get more computational thinking, but the Computer Science AP is not the right place for it.

    • 9. Mark Guzdial  |  August 12, 2010 at 3:48 pm

      Dave, the issue of “collecting” data is exactly the part that’s different with computation. I was not aware of collecting my running data, and I never saw WolframAlpha collected any weather data. It’s out there. Do I trust it? How do I find it? What can I access it? What can I do with it, since it’s not my data that I collected? THAT’s the part that I’m saying is computational and represents a part of computational thinking.


      • 10. David Klappholz  |  August 12, 2010 at 6:49 pm

        If I read you correctly, scientists who deliberately collect data to attempt to come up with or validate hypotheses aren’t doing/using computational thinking.

        On the other hand, people who need data to come up with, and then, possibly, to validate, hypotheses, don’t themselves collect data, but look for it in places like the web are doing computational thinking.

        So computational thinking is the mindset defined by realizing that one might need data to deal with questions and that such data may well be available somewhere already — probably on the web?

        • 11. Mark Guzdial  |  August 12, 2010 at 9:15 pm

          Sure, Dave. Just being a good scientist may be scientific thinking, but isn’t necessarily computational thinking. Considering the possibility of using data already collected on the Web is computational thinking — of course, it could be bad thinking.

          To me, computational thinking (if it means anything at all) represents useful reasoning that is enabled by or is uniquely present in computation. Just doing good science shouldn’t be computational thinking.

  • […] @ 13:09 Tags: bioinformatics, computational thinking, high school, programming Mark Guzdial posted about computational thinking on his Computing Education blog, and a discussion ensued about the differences between algorithmic […]

  • 13. Fred G. Martin  |  August 14, 2010 at 11:50 am

    I think this is great example of scientific thinking, and of working with data (both personally collected and a public curated source), but I don’t think it has much to do with computational thinking.

    Here is another example, which I think is closer to what we’re after.

    I was listening to a podcast of a famous entomologist (Mark Moffett). He was describing two major colonies of ants that live in California and down into Baja CA, largely organized along a north-south corridor. The two colonies of ants are genetically identical, but they’re on separate sides of a war. The line of battle runs north-south, and he was trying to find its exact boundary in some city.

    In this locale, the boundary wasn’t immediately obvious. So, the technique was to pick up an ant, move it some distance east or west, and drop it down. When it meets other ants, if it get immediately killed, then you’ve crossed the boundary. If not, then you’re still on the same side as where you got the ant.

    When I heard this, I immediately thought, “Oh yeah, that’s a binary search problem.” Then I thought, “I know this because I am a computer scientist, and this is computational thinking.”

    I’d bet Mark Moffett uses this solution, but I wonder how he would have arrived at it. Maybe it’s just an obvious answer to a practicing scientist who’s presented with such a problem? Or anyone who’s encountered a structurally similar problem? I would also bet that Mark hasn’t taken an algorithms class in a CS department, and might not know that the solution has a name?

    I do think this algorithm is a good example of computational thinking outside of a programming context.

    • 14. Mark Guzdial  |  August 14, 2010 at 12:31 pm

      Hi Fred! I completely agree that your example is computational thinking, but I don’t see what criteria you’re applying such that my example is not computational thinking. Yours is clearly algorithmic. Is computational thinking only algorithmic? Or is computational data also important for reasoning about? You are making the argument (implicitly) that the kind of thinking you’re describing is computational thinking because it was covered in an algorithms class and was given a name. Is the definition of “computational thinking” only those things that are covered in computer science classes? But even if we agreed that a CS curriculum contains all examples of computational thinking, then the issues that I was raising definitely appear in database courses, computer ethics courses, and information visualization courses. Or does computational thinking only occur in the required courses, and reasoning that appears in elective courses represent some other kind of thinking?

      What are the criteria by which we decide what is computational thinking and what is not?

      • 15. gasstationwithoutpumps  |  August 14, 2010 at 1:35 pm

        I agree that what Fred described was algorithmic thinking, not computational thinking. If he had 20,000 data points with location pairs and lived/died data, then computational thinking would be needed to convert that into a map of territories (perhaps using some sort of clustering or approximate-map-coloring program).
        Just collecting the data, or finding someone else’s collection of data, is not computational thinking.

        I think the explanation on my blog my help clarify what is computational thinking.

    • 16. David Klappholz  |  August 14, 2010 at 12:38 pm

      I’m not sure I want/need there to be a difference between computational and algorithmic thinking, but if there is a difference, then this is certainly an example of algorithmic thinking — or algorithmic/scientific thinking — by a clever entomologist who (re)invented an algorithm well known to US but almost certainly didn’t perceive the breadth of its applicability…as he had no need to (See “learning transfer” or “inventiveness transfer.”)

  • 17. Fred G. Martin  |  August 14, 2010 at 1:41 pm

    Mark — I think you hit on the head with your question “What are the criteria by which we decide what is computational thinking and what is not?”

    It seemed to me that your story was an excellent example of thinking about data, but that the computational aspect was only at an “IT level” — in that you used (mobile + web) personal tech to record your own performance data, plus (historical web) data to analyze heat trends. (BTW, excellent observation about high wind speeds this summer — I would have never thought about that).

    I certainly don’t want to make too narrow bounds; that would not be productive.

    I suppose there are various levels or categories, and really what we’re after are lots of real-life examples of CT — especially, in non-programming domains — and then we can go about seeing how they relate.

  • 18. Rob St. Amant  |  August 15, 2010 at 10:36 am

    Hi, Mark,

    I generally agree with other commenters who say that looking at data in this way isn’t unambiguously computational thinking. Partly because it’s something that statisticians have been talking about doing for a couple of decades and expanding their conception of data exploration and analysis to include computation. That is, I think your examples would be better described as statistical thinking rather than computational thinking. For example, one thing a statistician might suggest in Story 1 is differencing the sequence: from each value subtract the preceding value. Essentially you get to see the discrete derivative of your data, which gives you a better idea about trends than eyeballing the raw data. Similarly, in Story 2, a statistican might suggest subtracting the seasonal trends (this is also commonly done with government data about jobs) to help your visual judgment about where the unusual points are.

    These may be quibbles, but I think that strategies for looking at data in these examples are going to be more useful than what we generally view as computational thinking. David Hand’s recent book on statistics in Oxford’s Very short introductions series does a nice job of summarizing the ideas.

  • 19. Aaron Lanterman  |  August 16, 2010 at 2:00 am

    Mark, wouldn’t this be a good time to cite/resurrect Computational Freakonomics? 😉



    Also relevant (you’ve probably already seen these):

    Hans Rosling: http://www.ted.com/talks/hans_rosling_shows_the_best_stats_you_ve_ever_seen.html


  • […] Computational thinking lesson plans Filed under: Uncategorized — gasstationwithoutpumps @ 22:44 Tags: computational thinking, Dan Meyer, education, Google, Python Earlier this summer, I read two posts by Mark Guzdial on computational thinking: NRC Non-Statement on What is Computational Thinking and Go to the Data: Two stories of (really) Computational Thinking. […]

  • […] a lot of powerful cognitive skills.  We can move away from trying to draw lines between what is and what isn’t computational thinking, and instead focus on implications.  What parts of this are appropriate to see at the middle […]

  • 22. Building Institutional Expertise « Tie And Jeans  |  September 30, 2011 at 11:32 am

    […] the basic level of computational thinking, knowing that if you’re working with data that a person could smush together, you could probably code something up to do it faster and on a […]

  • […] night before she spoke, and she asked me how I defined CT.  I declined to answer her (because last time I came up with one, the response was mostly how wrong I was), and asked her for her definition.  She gave a nice one […]


Leave a Reply

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

WordPress.com Logo

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

Facebook photo

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

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Trackback this post  |  Subscribe to the comments via RSS Feed

Enter your email address to follow this blog and receive notifications of new posts by email.

Join 10,186 other subscribers


Recent Posts

Blog Stats

  • 2,060,645 hits
August 2010

CS Teaching Tips

%d bloggers like this: