A couple of weeks ago I invented a Twitter hashtag, which launched into a "Twitter convo" (conversation) about computational thinking, educational inequities, and the realities of schools and teachers as they are today. The themes are fascinating and thought-provoking, so I’m going to take a pass at turning a chain of tweets into a narrative to share here.
Steve Bissonnette tweeted a link to a blog post (see post here) about a new report (see report here) showing that children in Code Clubs in the UK gained in their computing skills, but gained in no other skills we might think of as "computational thinking." I re-tweeted Steve, and commented:
Not surprising, but very interesting. Being in Code Clubs improves students' programming ability. There is no impact on any other thinking or problem solving. #doesComputationalThinkingExist
Shuchi Grover called me out on the provocative hashtag #doesComputationalThinkingExist. I responded that I have been prodded to a more critical perspective on computational thinking (CT) based on some tweets and comments from Ben Shapiro (for example, here). CT is often described as not requiring programming. Does that mean that poor kids will get state-standardized CT, while rich kids will get real CS with real programming that will give them the great economic benefit that programming skills provide? Can we even define Computational Thinking, and if we can, can we show evidence that it is a practice that transfers from computing to non-computing contexts?
Aman Yadav pushed back, saying that he saw CT "as an entry point for teachers to see connections between CT and what they do (and get evaluated on) everyday in the classroom. We use CT as a building block to get ‘real CS’ into classrooms." Aman poked at me, "By the way, isn’t #CS in K-12 just #coding?" I replied, "In exactly the same way that #mathematics in K-12 is just #equations. Of course, neither statement is true. Equations are super-powerful ways of talking about mathematical ideas. Code is a super-powerful and flexible way of talking about computational ideas."
Ben Wohl really jump-started the convo with his tweet-summary of the issues:
Think @guzdial point is that where #cs and #coding are clear deliverable subjects that have clear benefits #ct is fuzzy hard to define and often poorly delivered - and the benefits of #ct are much harder to pin down. #whatiscomlutationalthinkinganyway
Setting aside the definitions, Rafi Santos asked what our educational goal was with CT and CS. He offered three options: economic mobility (e.g., programming skills), a reshaped tech sector that has a better/different/diverse workforce, or a better educated citizenry. These are different outcomes that require different methods.
Aman offered a definition of CT for his project in Michigan schools, which did not include algorithms because the math teachers were concerned about the concept. Ben Shapiro launched a thread of tweets that I highly recommend reading. He got to the heart of what is CT ("What makes CT deserve a new name when we’ve had other names to refer to the same practices/skills?") to specifically how one could teach CT without coding or algorithms ("Can you please say more about it means to debug without algorithms?")
I answered with my own Tweet thread with my concerns about CT. The thread starts here, and an "unroll" (a combining of threads into one essay) is available here. I’m quoting a few of the tweets here:
Originally, Jeannette sold Computational Thinking as "If you learn CT, you learn things that you can apply in your everyday life." I don't think many of us believe that anymore.
Now, we say that "You can learn by using computation in ways different and more powerful than without computation." That's what @LorenaABarba was saying here quite powerfully, and I think most of us agree with that.
But why do we say "CT" instead of computation, or coding, or programming, or even computer science? Is the real reason that people are afraid of the word "programming," and are still unsure that we can teach programming to everyone?
Returning to the exchange with @shuchig and #DoesComputationalThinkingEvenExist. Can we teach thinking with computation without a notation for those computational ideas (code)? Papert didn't think so. Logo was invented to make computational ideas accessible.
There were so many great tweets that got posted in the conversation over the next days. I loved Rob Underwood’s comment that teaching CT without programming was like "teaching music to help kids get good at math." Shouldn’t we give kids access to what makes computing so powerful, which is the ability to execute programs with these super-fast machines? Since the convo, I thought the most about a couple of tweets from Nathan Holbert. In one, he points out that "programming" is such a loaded term now, since it does children a disservice if it only seems to promote a career as a software developer, which is not at all what we mean. In another, he talked about the idea of teaching with code, as an externalization of our thinking, but not necessarily requiring students to write code. What would that look like? Maybe like Brett Victor’s fascinating work on learnable programming.
The big take-away points for me were made by Aman Yadav. He pointed out that starting out with saying "programming" will simply lose the teachers. As he said here,
I am not sure we can add one more thing to elementary teachers plate when their jobs depend on math and literacy standardized test scores. Teachers in our project see the value of CT to help with math/science learning. To me if we find CT lens helps improve students those outcome, it’s a win.
Hadi Partovi, CEO of Code.org backed up Aman, saying that research in the early 2000’s showed that the words "coding" and "programming" scared away kids. We will make more progress if we fit CT into existing curriculum frameworks, argued Hadi.
One of the lessons that I keep re-learning about computing education is that we’ve only just started. The American Society of Engineering Education (ASEE) turns 125 this year. ACM’s SIG for CS Education (SIGCSE) turns 50 this year. We are so new to this.
Aman and Hadi are telling us about the realities of teachers and schools today. "Coding" and "programming" have meanings that aren’t what Seymour Papert had in mind in 1968 when Logo was started. We can’t turn those meanings on a dime. While I’m still not sure what CT is, I do recognize that educational designers are creating it to be an on-ramp to the kind of computing in schools that Seymour wanted and that many of us want. CT may be the palatable stage that gets us to "CS for All." I worry that standards ossify, and the definition of what goes into schools today becomes something less than what 21st century citizens need and deserve. But we may be too early in the 21st century yet to get our schools to real computing yet.
Hi Mark... #DoesComputationalThinkingEvenExist ? Of course it does. When a student learns that a (fair) maze can be solved by systematically placing explorable locations in a stack (queue) and popping (dequeing) the location to explore next, it IS a novel form of thinking, the understanding that an algorithm can lead to the solution. Likewise for using Prim's or Kruskal's algorithm to create an MST, rather than brute-force. These ideas don't need to be tied to coding/programming, or to STEM - they can exist on their own, to demonstrate 'algorithmic problem-solving' (which to me is equivalent to 'computational thinking').
Saty
Hi Saty,
Let's consider the questions you're raising individually.
Does solving computational problems (like maze solving) require a novel form of thinking? Maybe, but others have called similar problem-solving practices algorithmic thinking or mathematical thinking. I think it is novel, but we don't know how to define that yet.
Can we teach algorithm's like Prim's or Kruskal's or maze-solving without coding/programming so that students can use them in non-computational and even non-STEM contexts? No one has shown that yet. It's an open empirical question.
- Mark
Displaying all 2 comments