In order to gain more hands-on coding experience I followed Obama’s example by doing an exercise on the Hour of Code website. The description on the website is encouraging: “The Hour of Code is a global movement reaching tens of millions of students in 180+ countries. Anyone, anywhere can organize an Hour of Code event. One-hour tutorials are available in over 30 languages. No experience needed. Ages 4 to 104.” I chose the first program on the list, which involved making Disney princess Elsa ice skate, leaving pretty figures in the ice.
This Hour of Code exercise immediately triggered a flashback to high school where I was taught the LOGO programming language in my third year. In the 90s this did not involve pretty princesses, but featured a two dimensional turtle crawling over the computer screen. The assignment was basically the same though: draw pictures and shapes. Apparently, except for the more fancy graphics, not much has changed over the last two decades. I confirmed this suspicion with a subsequent literature search: LOGO is still is a popular language to introduce programming to novices.
LOGO was developed in 1967 at Bolt, Beranek and Newman (BBN), a Cambridge, Massachusetts research firm, by Wally Feurzeig and Seymour Papert. It was the latter who added Turtle graphics. A benefit of having a turtle (or a princess) drawing pictures and shapes is that it gives the programmer immediate visual feedback. For instance, if the assignment is to draw a five-point star and the Turtle (or Princess) delivers a six-point star, it is immediately clear that something needs to be fixed.
An intriguing question for my research is what children learn from programming in a LOGO environment. What kind of skills and cognitions are required, used and trained? My previous coding experience with the LOGO turtle definitely helped solving the Elsa ice skating assignments. For instance, I recognised the principles of ‘loops’ and ‘functions’ from my earlier LOGO encounters as a teenager. This anecdotal evidence ‘demonstrates’ that the skills directly involved in the coding exercise are most likely being trained.
Papert makes an even bolder claim. He postulates that becoming a more proficient coder in LOGO automatically transfers to other cognitive skills, like planning and problem solving ability in other contexts. However, results from research by Pea and colleagues in the ‘80s shows that it is actually not that easy to establish such transfer. In one of their studies a group of primary school children received LOGO instructions for an entire school year. In contrast to Papert’s claim, at the end of the year the children did not show superior planning performance on an everyday life assessment compared to a control group that did not do any coding.
In 1991 Liao and Bright1 conducted a meta-analysis on the effects of computer programming on cognitive outcomes (across all kinds of different measures). They merged the data from >60 studies conducted between 1969 and 1989; 39 of these studies used LOGO as a program language. They found an overall effect size of 0.41 for transfer of coding skills to cognitive outcomes, which is a moderate effect. On page 258 of their paper they present an insightful scatter plot clarifying that the majority of the studies (95%) only show a small to moderate effect size. Liao and Bright conclude that the next important step is to find out which specific cognitive abilities will be strengthened by teaching children to code. In sum, it is possible to obtain transfer of coding skills to other cognitive measures. However, on average these effects are only small to medium and it is still unclear for which specific cognitive measures transfer is established.
In addition to finding out which cognitive skills are involved in learning to code, another important issue is how to best achieve transfer of coding ability to other domains of problem solving. Pea and Kurland (1984)2 argue that in order to establish transfer, learning to code and computational thinking must be approached from a cognitive developmental science approach. This means that the task and learning outcomes need to be adapted to the learning experiences and the (cognitive) developmental level the students are currently in. Pea and Kurland describe four different levels of programming skill: 1. Program user, 2. Code generator, 3. Program generator and 4. Software developer. They postulate that it depends on the current ability or level of the coder what kind of transfer can be expected, and hence what kind of transfer would need to be stimulated. With regard to stimulating transfer they stress that it is important to foster a culture that makes explicit links between programming exercises and more general problem solving skills. Just letting children do some random coding exercises will not be enough to achieve transfer to problem solving skills; teachers will be instrumental in facilitating this explicit link.
1 Liao, Y-K. C., & Bright, G.W. (1991). Effects of computer programming on cognitive outcomes: A meta-analysis. Journal of educational computing research, 7, 251-268.
2 Pea, R.D., & Kurland, D.M. (1984). On the cognitive effects of learning computer programming. New Ideas Psychology, 2, 137-168.