Why computational thinking?

I wish I could convey my opinion on this topic in a way that is both concise and persuasive. I just don’t think I can. Part of the problem is that the way so many educators think about computational thinking, if they think about it at all, is part of a bigger set of topics that includes coding, computer science, STEM, occupational preparation, and equity of who can eventually take advantage of the occupational opportunities of working with technology. I have different opinions about many of these topics in isolation, but too many in my opinion see the topics as tightly integrated. Second, I question what many understand computational thinking to be and exactly why they think it is valuable. How specific of a description could you provide?

I have this mental image of a fourth-grade teacher engaging her class in an hour of code activity suggesting to parents that these students are being prepared for occupations of the future and are simultaneously developing valuable computational thinking skills that are helpful in many aspects of life. It is my opinion that this educator while unable to write code herself or himself is aware that digital technology relies on code that someone has written, that someone must have the skills to write this code, and that there are many many vocational opportunities for those with the skills to write code. More important to this blog post, the notion of computational thinking is not something the educator can really describe, but this type of thinking is evidently potentially of value to the improvement of performance in other academic areas and eventually when developed in many areas of life. Somehow computational thinking, whatever it is, can be developed through learning to code and these brief activities arranging blocks representing commands that control the dancing cat on the screen are making a contribution to this learning.

I, in no way, am demeaning the capabilities of this hypothetical educator. I am attempting to describe what I think is a very common situation. I admit despite purposeful attempts to read the literature on computational thinking going back to Papert’s works and the careful research on just what students learning to program in LOGO learned and despite thousands of hours writing code myself that I find myself in a somewhat similar situation.

I can point interested parties to definitions of computational thinking and to “standards” intended to identify what must be developed to advance this capability. I will provide what I think is a nice source shortly. I think I understand what at least some of the skills and dispositions described as components of computational thinking are and I recognize the presence of examples of these components in various advanced academic domains.

So, for example, computational thinking involves developing and thinking in terms of abstract, multilayered models. These models are descriptive at one layer, but link to actions (code in the case of programming) and data at other levels.  By my understanding, you see examples of these multilayered models in:

Macroeconomics

Biochemistry – Krebs cycle

Psychology – cognitive models such as information processing theory

Education – Flower and Hayes Model of the writing process

You see methods for testing models in statistical procedures such as path analysis and structural equation modeling.

You can work through this type of exercise yourself if you are trying to understand how to see the presence of some of the components of computational thinking in other areas.

It is not that I don’t see the value in learning many of the skills and dispositions frequently described as computational thinking. It is not that I don’t see the skills and dispositions as important to coding. So, what is my hangup?

Let me start this way. I have just read a report from a group that has labeled itself as Digital Promise entitled Computational Thinking for a Computational World. This report is obviously pro computational thinking. The report goes through the traditional arguments for programming – there are lots of jobs and technology is and will increasingly play an important role in all aspects of life. Then, the authors add an argument based on computational thinking. In support of the general utility of computational thinking, the authors differentiate coding (the specific skill of programming), computer science (coding plus other issues such as ethics, social impact), and computational thinking (the thinking skills and dispositions programmers apply in programming). The present these three topics as a Venn diagram both to argue that they are interrelated, but also independent. So, the thinking skills and dispositions used by programmers have broader utility than just to be used in coding (I guess this is the intent of showing that the circles representing computational thinking and coding are not the same circle.) The leap of logic that is encouraged is that coding and computer science encourage the development of these thinking skills and dispositions that have this broader utility. As a psychologist, I am most familiar with labeling this final claim as transfer.

I will return to the question of transfer at a later point.

Perhaps I can do better than use descriptors such as thinking skills and dispositions. There are plenty of examples of other writers making the effort to be more precise in identifying these components. One of my “go to” efforts of this type is provided by the paper entitled “Demystifying computational thinking” by Shute & colleagues (2017). The authors do a nice job of describing the historical background of the effort to identify these components, points to a number of efforts to do so, and offer their own list.

The authors do one other thing I believe is helpful. Again using a Venn diagram, they identify the overlap and uniqueness of computational thinking and the thinking required in another discipline (math). It was this Venn diagram that offered a way to think about my core concern with the emphasis being placed on computational thinking. If thinking skills and dispositions transfer (a complex topic itself), what is unique about the skills involved in coding. Why is coding better than any other domain in which abstraction, model building, testing models against data (experience), modification of approaches when this match is not particularly good (debugging), etc.? For example, how is computational thinking different from whatever one would describe as the collection of skills and dispositions involved in writing? Writing has the advantage of being an important life skill and a generative activity fairly easily adapted to the processing of information and the externalization of the cognition associated with procedures involved in most content areas (writing across the curriculum). Admittedly, writing activities may not presently be implemented to these ends, but why retool to a new area of emphasis, coding to develop computational thinking, when improvements in enhanced writing opportunities, say multimedia writing to persuade, to analyze, and to explain, could offer a more efficient way to develop similar thinking skills and dispositions. Wouldn’t the professional development necessary for teachers to make more effective use of writing as writing to learn be easier to implement than the professional development necessary to prepare most teachers to use coding to learn. Maybe writing across the curriculum needs a similar catch phrase that implies similar benefits to computational thinking. Writing across the curriculum may just need a new marketing campaign.

I suppose one could argue that the overlap in skills noted by Shute and colleagues offer a different insight. Wouldn’t it follow that skills developed through coding also apply in math? Perhaps, but since math is already taught through multiple classes why add an independent and additional way to develop these core skills. Second, see the comments on transfer that follow. A preview – skills are not skills. The version of problem-solving developed through programming is not the same as the version of problem-solving developed through learning and applying math.

A few words about transfer. First, the expectation that general, higher level skills can be developed sounds great, but is very challenging to get done. Problem-solving or critical thinking in one content area do not automatically work in another area (Perkins & Salomon, 1989). It is not that skills developed in one area cannot offer an advantage when encountering what could be similar situations in another area, but that certain conditions must be met to make this transition likely. Perkins and Salomon (Salomon & Perkins, 1989; Salomon & Perkins, 1989) describe a couple of ways to accomplish this goal they label high and low road transfer. Low road transfer takes a lot of time and varied experiences likely impractical in K12 settings and high road transfer requires mediated experiences (instruction) most educators would find they were unprepared to provide. Just to be clear, the ideas advanced by Salomon and Perkins were based on their careful analysis of efforts to demonstrate transfer for students exposed to LOGO programming.

So, what is my present thinking.

First, programming is a valuable vocational skills and the opportunities to explore should be made available. There are challenges. Most programming courses are AP courses and this does not seem like it makes sense as a “coding for all” opportunity. Fitting programming courses into the curriculum in many schools is a challenge and many states do not allow a programming course to count toward math or science requirements. Then, there is the challenge of finding educators with the background to teach these courses. Given what is required for far transfer, skilled instruction is necessary. If we are serious about this area, addressing some of these challenges should be a first step.

The question of which skills and predispositions are developed by which tasks is even more complicated. At present, I don’t see a unique benefit for computational thinking as distinct from other generalizable thinking skills and dispositions that have a history of being developed in other more convenient ways. I could be convinced I am wrong, but I don’t see the research to make this case at present.

Resources:

Digital Promise (2017). Computational thinking for a computational world

Click to access dp-comp-thinking-v1r5.pdf

Perkins, D. N., & Salomon, G. (1988). Teaching for transfer. Educational leadership, 46(1), 22-32.

PERKINS, D., & SALOMON, G. (1989). Are Cognitive Skills Context-Bound? Educational Researcher, 18(1), 16–25.

Salomon, G., & Perkins, D. N. (1989). Rocky roads to transfer: Rethinking mechanism of a neglected phenomenon. Educational psychologist, 24(2), 113-142.

Shute, V. J., Sun, C., & Asbell-Clarke, J. (2017). Demystifying computational thinking. Educational Research Review, 22, 142-158.

See also Why should I care about computational thinking?

Loading

Leave a Reply