This post continues my coding vs argumentation prioritization debate. Here I am providing what I propose as evidence in support of the reasons I generated to support classroom coding.
Just as a reminder, my reasons include the following:
- Programming is an important vocational skill
- Coding is a way to gain greater insight into how technology works
- Computational thinking transfers
While I have made a significant effort to locate quality data in support of these reasons, I must say that the task was not easy and this to me indicates a problem. As I provide the data I have located, I have decided to offer related comments and some counter arguments. In the system I am using, a counter argument weakens an argument. The intent in argumentation is both to offer arguments with sound evidence and to weaken the arguments of a competing position with solid reasons and/or evidence.
Coding is an important vocational skill
The Bureau of Labor Statistics – Occupational Outlook Handbook (http://www.bls.gov/ooh/computer-and-information-technology/home.htm) provides the following information.
Employment of computer and information technology occupations is projected to grow 12 percent from 2014 to 2024, faster than the average for all occupations. These occupations are expected to add about 488,500 new jobs, from about 3.9 million jobs to about 4.4 million jobs from 2014 to 2024, in part due to a greater emphasis on cloud computing, the collection and storage of big data, more everyday items becoming connected to the Internet in what is commonly referred to as the “Internet of things,” and the continued demand for mobile computing.
Thoughts on counter-arguments. The qualify of this evidence might depend on a couple of factors – a) what level of training is necessary to obtain such employment and b) what employment options would there be with a comparable level of training. Coding in the classroom can mean so many different things that relate to these factors. What training opportunities are available in schools (note that the short elementary and middle school experiences generate little progress toward the level of training that is necessary)? Do secondary schools offer CS courses?
Coding is a way to gain greater insight into how technology works
The benefits of coding for what used to be called computer literacy might be expected to be evidence rich. Again, work on making this connection (say in contrast to direct instruction of computer literacy topics) is difficult to locate. The topic seems close to some subtopics in the area Lye, et al (2014) call computational perspectives (one of three dimensions these authors argue make up computational thinking). The one example Lye offers to address this dimension is the observation that students can use some of the specialized coding environments to tell stories. To be fair, the focus was on the use of coding and not the insights coding might provide about issues such as privacy, the vulnerabilities inherent in code, etc. Counter argument – the issue of efficiency would seem relevant here. The use of software or learning about issues such as ethical practices or online vulnerabilities may not require that one have an appreciation of the code making online activities possible. If this were possible, it is then relevant to consider the level of coding proficiency that would be necessary for such insights.
The long-standing debate regarding computational thinking (this is a newer term but the notion has at least a 20+ year history) seems to generate the most buzz. I suppose that unlike coding as a professional development investment, computational thinking promises a benefit for all. The interpretation of this vague term is important and varies a bit with theorists. I would point interested parties to Lye and Koh. (2014) for a nice summary. Since Papert in the 1980s, I have described the position as supporting debugging and problem solving. If you have ever attacked a substantial goal as a programmer, the notion of solving a problem should make some sense. One definition of problem solving can be translated as the situation in which the present situation is not the desired situation. Clearly, this is the case when beginning the process of taking on a programming challenge. The key issue here can be interpreted as one of transfer – does solving programming problems make it more likely someone with programming skills can better solve other types of problems?
Again, I must say that I was unable to locate much in the way of recent work substantiating this claim. I provide the best of what I was able to locate summarizing recent work. Reading of these summaries provides very little in the way of recent work (I provide citations for these reviews below and invite your own contributions if you think my search has been incomplete). One review, pretty much substantiates my own position that the best work in this area was completed in the past.
Cognitive aspects of children and novices learning computational concepts were studied extensively in the 1980s—issues such as development of thinking skills (Kurland, Pea, Clement, & Mawby, 1986); debugging (Pea, Soloway, & Spohrer, 1987); problems with transfer (Clements & Gullo, 1984; Pea & Kurland, 1984); use of appropriate scaffolds for successful transfer (Klahr & Carver, 1988), to name a few. That body of literature should be brought to bear on 21st-century CT research. [from Grover and Pea, 2013).
To be complete, Lye and Koh (2014) cite a study by Kazakoff and Bers (2012) indicate that experience programming a robot does develop improved sequencing skill that can be demonstrated in a very different type of task.
I do believe there is some support for transfer from extended programming experiences. I believe Salomon and Perkins (1987) best summarizes the original research. As a counter argument to the “hour of code” approach that is so widely supported, I would also point to this same review. This summary pretty much says that short term coding experiences accomplish little. Transfer comes either from a) substantial programming time applied to a variety of programming challenges or b) purposeful approaches that identify the skills involved in programming and how they also are involved in other problem solving tasks. Are educators willing to get behind either or these approaches? Do those involving students in coding tasks have the background and experience necessary to take the more direct instruction approach? How does efficiency apply the development of the skills that may transfer – variables, sequencing, debugging, modularization, etc.
Grover, S., & Pea, R. (2013). Computational Thinking in K–12: A Review of the State of the Field. Educational Researcher, 42(1), 38-43.
Lye, S. Y., & Koh, J. H. L. (2014). Review on teaching and learning of computational thinking through programming: What is next for K-12? Computers in Human Behavior, 41, 51-61.
Kazakoff, E., & Bers, M. (2012). Programming in a robotics context in the kindergarten classroom: the impact on sequencing skills. Journal of Educational Multimedia and Hypermedia, 21, 371+.
Older work on programming and transfer
Palumbo, D. B. (1990). Programming language/problem-solving research: A review of relevant issues. Review of Educational Research, 60(1), 65-89.
Salomon, G., & Perkins, D. (1987). Transfer of cognitive skills from programming? When and how? Journal of Educational Computing Research, 3 (2), 149–169.