Showing posts with label computational thinking. Show all posts
Showing posts with label computational thinking. Show all posts

Monday, June 24, 2019

Requirements for developing computational thinking

Buitrago and colleagues (2017) offer several specific recommendations for the use of programming experiences to develop computational thinking skills. These recommendations include:
  • A clear statement of objectives so the computational skills to be learned are understood
  • the use of educational tools and instructional strategies such as the use of concept mapping before coding as a way to emphasize organization, planning, and other computational thinking tools
  • The application of programming skills to authentic tasks such as robotics and game development
  • Collaborative team coding activities that encourage communication and discussion of strategies.
  • The use of programming languages (the researchers mention LOGO, Scratch, and Python) that scaffold skill development through the simplification of code syntax and limit tasks such as variable definition that are required by other languages.
I have no issues with these ideas and suggestions. My frustration is that both the ideas and suggestions are very similar to what Salomon and Perkins (1987) suggested after analyzing the success of LOGO programming experiences in schools 30 years ago. They did not call it “computational thinking” then, but the suggestion that the thinking involved in programming would transfer to other areas requiring higher order cognitive skills means pretty much the same thing.
The message from researchers to practitioners has been there for a long time.
Buitrago Flórez, F., Casallas, R., Hernández, M., Reyes, A., Restrepo, S., & Danies, G. (2017). Changing a Generation’s Way of Thinking: Teaching Computational Thinking Through Programming. Review of Educational Research. 87(4), 834-860.
Salomon, G., & Perkins, D. N. (1987). Transfer of cognitive skills from programming: When and how?. Journal of educational computing research3(2), 149-169.

Monday, August 27, 2018

Best language for computational thinking

There is an expression that keeps popping up in my head - "if the only tool you have is a hammer, everything starts to look like a nail". I admit I cannot attribute the expression to anyone and it certainly did not first come from me, but it does seem to state an important concern.

This expression makes me think of those who see coding and computational thinking everywhere. I had this reaction when I encountered this ad for "How to code a sand castle". The book is focused on coding for the very young and I would argue that the ad itself is a superior example of coding in a way not obvious to the writer. I will explain this later.

I am not suggesting that learning a computer language or languages cannot be an important vocational skills. I wrote code in several languages so I certainly understand the value of the skill. However, I wrote code because I needed to have computers and servers do something that was important for my work. I did not write code as a purposeful way to develop my personal cognitive skills.

I think it is time for a careful analysis of what computational thinking really is and what is the best way to develop this skill or skills if they really are unique and important. My definition for coding consistent with what I understand computational thinking to mean would go something like this. Coding is the "symbolic representation of a process in a way that would allow an unskilled entity to execute that process". When I wrote code in BASIC, assembly language, hyperscript, or PHP, I was trying to get computers to do something that I understood, but had to express in a way the computer could understand.

Coding might also be described as "careful description". You have to be careful (exact) when explaining something to a computer. Perhaps my vague language - description, entity - is starting to hint at where this post is going. What do I propose as the best language for developing computational thought? I would suggest it is whatever language you are already comfortable using. It would be English for me. Writing a tutorial for a naive learner (the entity) requires pretty much all of the skills of computational thinking - planning, completeness, careful analysis of the skill to be transferred. This is what I find somewhat ironic in the written product generated by the writer attempting to explain the process of building a sand castle as an example of coding. If a kid explained to another kid how to construct a sand castle as visualized by the explainer, wouldn't this meet my definition of coding? It is true a human learner helps you out in ways that a computer cannot, but a good writer cannot depend on the assistance.


Why not take the more general symbolic process (writing) and modify the task to require the important skills of computational thinking? This makes more sense to me than taking a symbolic tool (python, a language using block code) with limited applications (communicating with a computer) and hoping that skills utilize will transfer to other applications. There are certainly reasons to learn a specific symbolic tool. I had to. But, this was made necessary by a very specific application and not as a general cognitive skill.

Monday, February 10, 2014

Computational thinking, historical thinking, and beyond

Old folks are supposedly famous for reacting to their younger peers by responding to their new ideas claiming “we already tried that and it did not work”. Sorry if some of my comments seem to fit this description. However, …..
The limited time available within the school day is limited and interested parties seem to be arguing that their content be given a larger portion of the pie. I accept the value of advocacy and I consider myself relatively neutral. I become critical when it seems to me the positions taken go beyond what I think can actually be delivered. I agree that not everyone really needs what everyone gets and, that when practical financially, greater flexibility be provided. However, when it comes to innovation, two positions that cause me to react with skepticism claim a) all students need this new experience, and b) this new experience develops general skills/knowledge in ways not now accomplished by the existing curriculum. Here is where I want to see some evidence so education does not given in to the fad of the year.
Presently, there seems to be interest in something called “computational thinking.” I have no idea if this is really new or a rebranding of an earlier idea. I remember reading Papert years ago and he proposed a computational way of understanding geometry. I admit when I first thought of the way he proposed understanding “circle” I thought there was something unique about his perspective. Of course, I knew the definition of circle - a closed, plane figure consisting of all points equidistant from a point, but being able to generate this definition was not really understanding. Now, if you imagine yourself as the LOGO turtle standing on a point and you walk forward a given number of turtle steps, lower your pen and walk one more step, raise the pen, then backup the given number of steps +1, you have created a point at a given distance from a point. Turn right one unit, repeat, turn right one unit, etc. You have a circle.
I admit this is my one example. However,  the difference between my ability to offer the definition of a circle and create a circle via coding has influenced my understanding of understanding. Is this reaction unique to programing or is the capacity to execute a construct through action a more general way to achieve understanding? I understand what I can do.
Flash forward to the present and recognize that computational thinking has experienced a renaissance. What I mean by this is that some in education are again promoting the value of learning to program, but also proposing more general benefits for these experiences. Clearly, those of us who have developed programming skills (now sometimes called coding) have experienced vocational advantages. Programming seems a skill for the 21st century based on the larger role digital devices play in all aspects of our lives. While I agree with the value of this particular skill as important in multiple vocations, I balk at the argument that it is a skill for all or that what students might learn through programming courses goes beyond the skill of programming.
My concern is that those in various disciplines argue too broadly for the benefits of their discipline. If a particular discipline happens to be in favor for one reason or another (STEM seems to be the in thing at the moment), there seems a tendency to embellish a bit and to argue that a skill is more than just a skill.
So, just to make a point, I think I can make the same case for several disciplines not typically considered as being broadly beneficial. For example, consider what could be learned from history. Yes, yes, I understand about important names and dates, knowing where we came from, and not repeating mistakes. However, historians should argue there is the potential to teach far more. What historians do is not what you likely learned from taking history courses. You learn what historians learned, but you do not learn how they learned it. Historians piece together accounts from multiple, primary sources. Since sources were generated by individuals with different perspectives, i.e., biases, piecing together an account of what likely happened is a great exercise in critical thinking. There is also great value in appreciating that individuals experience history from different perspectives and with different personal outcomes so the consequences of historical events is complex and multifaceted. Anyway, when explained in this manner, there is the potential here to develop very important higher order cognitive skills and such skills are exactly what reformers contend are missing as a consequence of typical educational experiences. Think like a historian.
I do promote a given activity both as useful for all and as a way to develop thinking capabilities more generally. My personal recommendation for an alteration of typical practice would be to place a greater emphasis on writing. Yes, students are taught to write, but I think they should write more as part of all classes they take. There are limits when you learn to write by writing to practice writing. Beyond the basics, you learn to write by writing to communicate. Students should write for their parents and they should write for their peers. They should write for themselves. Mostly, they should write about they learn. This seems more purposeful than writing about an arbitrary topic assigned in English class. The effort in putting something down on paper leaves far less room for the assumption of understanding than does just studying. There is something about that blank sheet of paper or monitor screen that challenges the illusion of knowing. Call it “Writing to learn” or “Writing across the curriculum”, the flexibility of writing would be my recommendation for an activity required of all and offering higher order advantages.