Showing posts with label coding. Show all posts
Showing posts with label coding. 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.

Thursday, December 8, 2016

Get serious to promote coding


Grandma and Porter exploring iteration at the Apple genius bar.
We are in the midst of the "Hour of Code". Schools have made this a popular annual event pointing to the vocational opportunities for programmers and to the potential benefits of "computational thinking". Both outcomes have potential benefits to learners.
Here is the issue. All of the attention and energy associated with the "Hour of Code" seems to dissipate quickly without much actually having been accomplished. Those adults who find this cause justified need to look beyond "the hour" to invest time and resources into real change. My concern is that ed tech folks find satisfaction at this level and do little to move this cause forward. There is too much focus on elementary school experiences and not enough on resource commitments in the upper grades.

Saturday, September 17, 2016

A case for coding?

If you are interested in the promotion of computer science courses and experiences in K12, you will likely find this lengthy pdf from the "Information technology and innovation foundation of value (The case for improving U.S. Computer Science Education). The paper even attempts to explain the origins of K12's focus on other content areas. For example, why was biology considered the ideal science for the k12 setting.
I do find the historical perspective on teaching computer science in schools to be an interesting topic. Someone of my age has pretty much lived through the entire history of this topic and has had the opportunity to view related events - e.g., the emergence and decline and re-emergence of coding for kids. 
In thinking about coding in schools, I beleive I can identify multiple challenges. There is the question of what role CS should play. It is called a science, but this position questions the definition of a science as I understand the discipline. Certainly, this is the case at the level CS is taught in K12. There is the question of how learning the skills of coding are beneficial. Can it be pushed as a vocational skill or does it have more general relevance as a way to develop a wide range of skills - e.g., computational thinking. If the broader benefits are the basis for promotion, is this content area really the best way to develop such skills and is there evidence that CS instruction actually accomplishes these goals. Finally, the time available within the school day, year, etc. is pretty much fixed. Hence, new commitments must replace existing commitments. Existing commitments are already under siege (e.g., physical education, arts). Which trade-offs make sense? It seems inappropriate to let others work out the details. Every discipline has supporters.

Thursday, August 4, 2016

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.

Monday, June 13, 2016

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.

Wednesday, June 8, 2016

Arguing about arguing

Indulge me in an intellectual exercise. Begin by assuming there is room in the curriculum for an addition - a different course or at least a learning activity requiring a significant commitment of time. Ignore the typical reaction of “we already have far too much to do”. Without taking on the issue of time, just assume that it is useful to be open to considering priorities as they exist and to consider the possibility of how best to spend whatever time is available.
The task I am proposing to evaluate the value of adding either coding vs argumentation.
I am not certain I know what the outcome of this choice should be. I do think I know enough to know that a sound case can be made for both alternatives and that others should at least recognize this same point before assuming they can promote either of the alternatives. In the circles I most commonly frequent, I assume that most would be willing to promote coding. However, this is because coding is the option most think they understand. Without intending to offend anyone, I would propose that most coding promoters are not actually coders themselves and most are nearly unaware of argumentation. 
Let me quickly provide a brief description of argumentation. I would describe argumentation as the processes involved in taking and defending a position. It requires the capacity to explain a position, offer reasons for this position, and offer evidence in favor of this position. It requires the recognition that others may not share this same position, the ability to recognize the reasons and evidence offered in support of this alternate position and the ability to compare and contrast the reasons and evidence for these opposing positions. Developmentally, we know that argumentation skills are acquired slowly and that the more advanced skills of analyzing the rationale offered by others is late to show up if this capacity develops at all. I hope this brief description allows a connection of what are likely more well known concepts such as critical thinking, persuasion, deep reading, and scientific reasoning.
It might even be possible to return to my initial challenge and use it as a “meta” example of argumentation - arguing about arguing. Having taken one position or the other, what are the reasons and evidence likely to be advanced in support of each alternative and what are the likely counters to these reasons and the supporting evidence.
I will give you some time to think before I offer my own analysis.

Thursday, May 26, 2016

Pop computing

It is the end of the K-12 school year and many educators and tech support staff are highlighting student work using social media. I think this is a good thing. It provides students an authentic audience, informs parents of student activities and provides ideas to other educators. However, I make one further observation after reviewing many such posts - few examples can be found to demonstrate how secondary students make use of technology. I have made this observation before and wonder if you have noticed the same thing.
I think I know many of the reasons for what I have just described:
  • - elementary teachers have greater control and can carve out blocks of time in a day or week to devote to the type of projects you see online,
  • - middle school teachers are more likely to work in cross-disciplinary teams that can be focused on projects, and
  • - the use of technology on the secondary level tends to be focused on tool integration rather than self-contained projects. This focus may be important but seems less news-worthy to many who want to promote what is happening.
I also think that tech support personnel have greater difficulty addressing content expectations that exist at the secondary level and are less likely to have the background knowledge necessary to offer suggestions.
Whatever the issue - please add your own thoughts to my list - I think this is a problem. Educational technology application just seems to run our of steam.
The coding thing in its present iteration has many of the same issues. Idit Harel just generated a concern with what was described as "pop computing". Hardly an opponent of computer science, Harel a co-author with Seymour Papert, has long championed constructionist approaches to learning but is disappointed in present coding experiences.
I now see my concern with the focus on the "hour of code" and what I observed here as sharing a common theme. Both seem to run out of gas without an obvious end game. With programming, I would begin by making certain secondary students have access to a computer science course. I would also suggest that what counts toward graduation requirements (not electives) should include computer science as an option.
Why is this an issue? In part, I blame AP, dual-enrollment, etc. courses. If this is about reducing the cost of a college education by taking supposed college level courses on the cheap, I think this is misguided. Take a high-school level computer science course, master a foreign language, improve your writing skills, take an industrial arts class. Enter college with a greater breadth of knowledge and greater depth of knowledge and skills in important areas.

Sunday, March 30, 2014

New chapter on computational thinking

One of my motives in moving from a commercial textbook company to writing through Amazon was the desire to write on a continuous basis. My frustration with the commercial approach was that you ignored your work for three years and then worked feverishly for 3-5 months in order to generate the next edition. I saw there were two problems in this approach. First, hard copy textbooks are out of date when first published (at least when addressing technology) and it made sense to me to take an approach that would allow me to continue to offer new content (online) as soon as the content was relevant. Second, the hectic pace of meeting a deadline does not allow for the best analysis and writing. This was particularly the case for me as my academic job means I have the most open time in the summer and this was not the time frame during which the work had to be done. The commercial folks never disagreed with my analysis, they just did not want to pay any amount for a future edition and would not offer an advance.

You may or may not understand how textbooks are financed. After the first edition for which you should be able to secure an advance on sales, the company decides whether or not a future edition will be offered and does not offer an advance. Since you, as the author, do not own the copyright but share it with the company, you are not free to suggest that a different company might be more willing to support the authoring model you propose.

Anyway, we have now exclusively held our copyright for several years and I have been offering resources based on this approach. We have a web site offering “supplemental” content to our book since it was released and I plan to rework the core book based on this content this summer. Since, the release of the latest edition the topic of “computational thinking” (programming or coding to many) has kind of returned to favor among practicing educators. You may be aware of this trend or perhaps interest in the “maker movement” which often incorporates programming skills. I have prepared a chapter and supplemental resources for our the next revision of our book. Rather than wait until this summer to make the “chapter” available, I am offering the draft of this chapter on our web site. This content will be available from the site until the revision of the book is complete. If you are interested in computational thinking and would like to review my take on the topic, access to our web site is available at no cost.

Beta content - http://learningaloud.com/grabe6/code/index.html