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

Consumption/production and transfer

We are on a transatlantic cruise and the passage gives me plenty of time to read. I have had the opportunity to spend a little more time than usual with my Kindle. The book I am presently working on is Mitch Resnick’s Lifelong Kindergarten.

I would describe the book as Resnick’s attempt to make the case for maker culture which I tend to translate as “production” culture. When translated to the school environment, I would describe the theme as “too much consumption, not enough production”.

I started thinking about my own efforts in “consuming” his book. I probably go through an average of 2-3 books a month and I think I have purchased one “paper” book in the last several years. That was necessary because the book was not available in a digital format. I am committed to the digital format as an important part of what I consider my workflow. I do read some for pleasure, but I also still spend a lot of time reading to give me something to write and speak about. So, my consumption and production are tightly connected. An example might be this post. I would not be writing about Resnick’s ideas unless I had first read his book.

Even my process of consumption is far from pure. I like the digital format because I can highlight and annotate, search for my additions later, and copy my embedded content to my external products (writing). I understand that some argue reading on a device is inferior to reading a paper version, but I think this assessment must be considered carefully as to the purpose to be served. Reading as an active experience is certainly cognitive construction, but the thinking can also be simultaneously externalized as annotations and highlighting. Often, reading is not independent of external productions.

It seems reasonable to me to consider the consumption/production processes as linked. This was certainly the logic behind the language experience approach (reading/writing, speaking/listening) that has been used as a way to understand the development of reading proficiency. What I think is important to consider is which areas is this consumption/production process can be emphasized. When does consumption/production develop something beyond the content of interest (critical thinking, problem-solving, etc.) and how far does the development of these higher level skills transfer (near transfer, far transfer)?

The issue of transfer is important and the research on the extent of transfer should play a role in the educational focus on production. What I mean by this is that the educational setting does not have the time to provide production experiences in every possible consumption/production area. When should production be emphasized as an elective and when as a requirement? Consider the possibilities that are seldom examined. Most individuals enjoy the consumption of music, theater, photography, and food.

There are two questions here. First, which production areas should be emphasized if the time necessary to develop related thinking skills can be accomplished by any production experience. Most research suggests that the time necessary to assure transfer is significant. This is one of the concerns with the use of coding to develop higher order thinking. Most research shows that limited exposure is not enough. Second, there is the issue of which areas should be required of all if near transfer is all that is produced. Again, choices have to be made.

My thought is that we have been doing it right all along. I would propose that we emphasize the reading/writing connection which probably means students don’t do enough writing. The processes of reading and writing have such wide utility that has not diminished over the decades and probably needs enhancement. I would focus on the arts, coding, and making as electives. These questions are a matter of balance and it should not be assumed that earlier questions of emphasis resulted in the wrong decisions.

Loading

Piece of the pie

Interest in K12 coding has experienced a resurgence. Some of you young folks may think you discovered coding as the way to the future, but those of us with more experience know this same trend swept through education 15-20 years ago. I know this happened and wish I better understood why that initial interest failed. This would be useful to understand.

Without disputing that there are some good jobs as programmers and most of us use technology that does rely on code, I keep asking about the priorities we have built into the curriculum. So, if you have your personal vision of the priorities of education, I keep suggesting change is not based only on  what you think is important to add. I think it responsible to also suggest what it is that you would delete or downgrade.

In my opinion, one of the more significant barriers to K12 coding has been the inability in most states to determine how coding would count toward graduation requirements. I see a chain of causation here. If you can’t count coding in a significant way toward graduation, how can you justify hiring teachers with appropriate credentials to teach programming? If coding counts in a lesser way, how can smaller districts make a commitment? If there is not a course on the secondary level, how do the limited commitments on the elementary and middle school levels make sense?

The recommendations that would establish programming have typically suggested that a programming course count as a math or science graduation requirement. I have written before about such classifications. It is often called “computer science”, but I do not really see introductory coding in this way. It does seem closer to math to me. My personal preference for changing the math requirement would substitute a course in statistics and research methods as an alternative to the final course in the existing math sequence. The scientific method as taught in most sciences does not explain the use of data as it applies to human behavior. An exploration of the strengths and weakness of other approaches to research and the interpretation through statistics of these data make more sense for the general benefit of future citizens. This is the type of critical thinking we apply daily in interpreting the various claims we encounter.

My personal perspective aside, the ACTM (the math special interest group) has just come out against counting programming to meet existing math requirements. The math folks say programming is good, but beyond prioritizing existing math courses make no suggestions for what area should receive less attention.

So, to those educators and politicians who have discovered programming and want it added, I am kind of with you. However, you seem to be pushing harder for this change than I am. I just want you to get past the easy part of suggesting something should be added. The tough part is to make the decision as to what should be deleted. Of all the possible things schools could do, where does computer science fall within the priority list. Is it before of after languages? Is it before or after physical education and arts? Is it before or after a fourth year of English? Is it before or after advanced placement or dual-enrollment courses?  If you are unwilling to offer guidance on such matters, who do you suggest should make these decisions? I could go on, but you get the idea.

Please add a comment and either post your position or link to your own analyses of school priorities. Someone among those promoting change needs to step up and fill in the details. It could be you.

 

Loading

Coding vs argumentation – final segment

This is the final segment of my exploration of the argument contrasting the value of teaching coding vs. teaching argumentation in K12 classrooms.

Reasons to support argumentation

First, to review, the following were my proposed reasons to support the “teach argumentation” position.

  • Capacity to analyze reasons and evidence essential when information sources must be evaluated
  • Process of science involves reasoning from evidence
  • Argumentation is a productive social process increasing understanding when positions differ

There is a large body of research exploring argumentation skills, whether educational interventions can develop these skills, and whether specific techniques are successful in developing argumentation skills. The reasons I have offered in support of argumentation would require that evidence of this type exist, but would also require that the general skill of argumentation be applied in specific areas to specific ends. I would regard the demonstration that these skills can be developed as equivalent to the reasons that there are jobs for computer programmers. If you value the outcome, then the development of the skill is important.

Support is easy to find.

Kuhn, D., Goh, W., Iordanou, K., & Shaenfield, D. (2008). Arguing on the Computer: A Microgenetic Study of Developing Argument Skills in a Computer-Supported Environment. Child Development, 79(5), 1310-1328.

Kuhn, D., Hemberger, L., & Khait, V. (2016). Argue with Me: Argument as a Path to Developing Students’ Thinking and Writing.

Kuhn, D. (2015). Thinking together and alone. Educational Researcher, 44, 46-53.

Reznitskaya, A., Anderson, Richard C., & Kuo, L. J. (2007). Teaching and Learning Argumentation. The Elementary School Journal, 107(5), 449-472.

 

What about source evaluation as an outcome? Think of this as being able to evaluate the information arguments we encounter daily.

Lin, T.-J., Horng, R.-Y., & Anderson, R. C. (2014). Effects of Argument Scaffolding and Source Credibility on Science Text Comprehension. Journal of Experimental Education, 82(2), 264-282.

 

Importance of argumentation in STEM areas – the process of science involves the key processes of argumentation hence the development of argumentation skill is important in appreciating science or taking a scientific perspective.

Lin, T.-J., Horng, R.-Y., & Anderson, R. C. (2014). Effects of Argument Scaffolding and Source Credibility on Science Text Comprehension. Journal of Experimental Education, 82(2), 264-282.

Lee, H.-S., Liu, O. L., Pallant, A., Roohr, K. C., Pryputniewicz, S., & Buck, Z. E. (2014). Assessment of uncertainty-infused scientific argumentation. Journal of Research in Science Teaching, 51(5), 581-605.

Some thoughts on counter arguments.

Since the requirements for near and far transfer were surfaced as part of the evaluation of the coding research and the amount of time required for transfer of coding to other cognitive skill areas was considered, I think it relevant to note the amount of time invested in some of the argumentation research. For example, the Kuhn research (e.g., her book) involved studies of classroom programs that spanned two years. The practical implications here would seem similar to concerns raised regarding “hour of code” and other short-term efforts to develop computational thinking. A lesson on argumentation here or there is not what the research tends to evaluate.
I am also not certain I would argue that argumentation research assumes the goal is to demonstrate the far transfer expected of coding research (computer programming problem solving to other problem-solving tasks). The identification of reasons and reason related evidence or the capacity to identify these same factors in the positions taken by others might be more a near transfer task when applied in different areas (science, social issues, etc).

Loading

Evidence is the hard part

 

This is the continuation of my coding vs. argumentation debate. Argumentation requires that those involved consider more than their own positions. The capacity to recognize the reasons and rationale for competing positions is required and represents a developmental advance in reasoning/critical thinking.

Argumentation requires that those involved consider more than their own positions. The capacity to recognize the reasons and rationale for competing positions is required and represents a developmental advance in reasoning/critical thinking.

Reasons:

Reasons to support coding

  • Programming is an important vocational skill
  • Coding is a way to gain greater insight into how technology works
  • Computational thinking transfers

Reasons to support argumentation

  • Capacity to analyze reasons and evidence essential when multiple information sources must be evaluated
  • Process of science involves reasoning from evidence
  • Argumentation is a productive social process increasing understanding when positions differ

The identification of reasons is just the beginning. While reasons are not always identified, the validity of a reason must be established.

As my example advances and I try to do my best to take both competing positions, things get even more challenging. This would not typically be a requirement of a classroom exercise, but I am taking on this challenge to provide a more realistic example. I do have a personal opinion regarding the strength of these two positions (given my challenge that schools take on one addition to the curriculum or the other). I would certainly welcome additions if you feel your own position has been slighted.

What must be established:

Is there evidence to support a reason? What is the evidence?

When is one reason superior to another? What can be claimed to dispute the weight of a reason?

More to come.

Loading

Coding – Beauty and Joy

In the recent State of the Union Address President Obama made mention of several forward-looking proposals regarding education. Among the advocate changes was the provision of computer science coursework for every student.

In following up on just how this might be accomplished, NPR identified an interesting MOOC Berkeley computer scientist Dan Garcia titled “Beauty and Joy of Computing.

The course emphasis both coding and the social implications of advances in computer science. The curriculum, which is freely available, is used in many secondary computer science classes. The course makes use of Snap which can also be accessed online.

I applaud Prof Garcia for making his content freely available.

The Beauty and Joy Curriculum – Coding and Social Implications

Snap

 

Loading