Monday, 7 September 2015

Visit to Code Club at Lindfield East Public School

On the 18th of June I took two of my colleagues to Lindfield East Public School to watch Grade 5 and Grade 6 children in action during Code Club. Code Club was developed in the UK in 2012 and debuted in Australia early 2014. In Sydney there are currently more than 20 primary schools that offer Code Club as an extra-curricular activity. The aim of Code Club is for children to leave Code Club ‘inspired to pursue other digital making activities, whether that’s in their spare time, in school or as a career’. ‘But also learning about computational thinking, problem solving, planning, designing and collaboration.’

Code Club is run by volunteers, who receive their training for free. We met with one of these wonderful volunteers, Bruce Carney, who is a father of two children at Lindfield East Public School (LEPS) and works for Telstra as a software engineer. Bruce learned about Code Club while he was living in the UK and when he and his family moved to Sydney he approached the LEPS Principal, Andrew Stevenson, and offered to take the lead in setting up a Club at LEPS. Bruce assembled a team of other parent volunteers (typically parents with engineering jobs) together with whom he has been supervising Code Club every Thursday morning, between 8 and 9am.

The morning of our visit there were about 20 Grade-5 children (50% girls). Bruce told us that, this year, there were no specific prerequisites for signing up for Code Club. It was purely based on whether the child was interested in learning to code. This was different to the year before, when they offered Code Club as an enrichment program for their top math students. Most of them, now Grade 6 students, were still doing Club and currently working on a coding assignment in another room.

After a short instruction in front of the interactive white board, during which the problems were explained and the children were prompted to think about solutions, the Grade 5 children went to their computers (each had their own) to work on the Code Club Tutorial called ‘Fish Chomp’. When questions arose along the way, a parent volunteer came by to help out or neighbouring coders were consulted for help.

The Grade 5 children were working with program called ‘Scratch’. Scratch is a visual programming (or block design1) language developed by MIT and currently one of the, if not the most, popular programming language for children. Just like LOGO, it is a procedural language: it is telling the computer what to do step by step and how to perform from the first piece of code to the second piece of code. Scratch provides its users with heaps of prepared coding ‘blocks’, but it also allows for custom solutions. We noticed that, independent of given exercise, some children were making their own programs, designing their own backgrounds (‘Stages’) and drawing their own characters (‘Sprites’).

In the meantime the Grade 6 children were crunching their brains on an HTML project. In contrast to Scratch, this project is presented in a text-based programming environment. This means that the children have to type in the code themselves, instead of dragging colourful blocks with prepared code into the coding environment.

After about 45 minutes of coding the school bell rang and the children went out to the playground for a break before the start of school. This gave us the opportunity to ask Bruce and his volunteers some more questions, until they also had to leave for work and other commitments.

We would like to thank Bruce, the other Code Club volunteers and the LEPS Code Club students for allowing us to observe them in action and for teaching us about Scratch and telling us about their experiences with Code Club. It is clear that the LEPS Code Club students are getting a great introduction to coding. Since all the coding activities in Scratch are performed on an online platform, children also have the opportunity to continue their projects at home.

References 

1Dwyer, H., Hill, C., Hansen, A., Iveland, A., Franklin, D. & Harlow (2015). Fourth grade students reading-block based programs: Predictions, Visual cues, and affordances. Proceedings of the eleventh annual International Conference on International Computing Education Research, 111-119. ACM: New York.

Monday, 15 June 2015

What do children learn from programming in LOGO?

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.

References

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.
Pea, R.D., & Kurland, D.M. (1984). On the cognitive effects of learning computer programming. New Ideas Psychology, 2, 137-168.

Thursday, 19 February 2015

Everyone can learn to code! Or not?

Everyone can and should learn to code! Last year, the United Kingdom introduced coding to the curriculum of primary and secondary schools. The European Union has started investigations about whether or not to implement coding in all schools in Europe. Obama, president of the United States has participated in Hour of Code and has produced his first line of code. Software companies – keen to secure well-trained future employees - are encouraging children and adolescents to try their hands on coding (e.g., Google “Made with code”). In sum, there is a global trend of coding being taught and encouraged.

But how to best teach coding in various age groups? How to assess levels of coding ability? Is everyone able to learn to code to satisfactory levels? What are satisfactory levels? These are all relevant questions that come with attempting to introduce a new skill to the masses.

A parallel can be made to learning to read. Research interest in reading and learning to read arose more or less simultaneously with the introduction of compulsory education. Which was exactly when children were taught how to read at a large scale. Will we see a similar development for learning to code now that coding is gradually being implemented in the curriculum?

The answer seems to be yes. In 2006 Jeanette Wing introduced the term ‘Computational Thinking’. Researchers have picked up on the term and have started to brainstorm about the exact definition and have started to develop new tools to train Computational Thinking. However, as Grover and Pea (2013) pointed out: there are many gaps in this new field of research. For example, which cognitive processes are involved in learning to code? The literature on this topic mostly seems to date back to the 1980s and is not based on current coding education environments and approaches. Gaps in our knowledge of how to best teach coding are reflected by a review by Lye and Koh (2014) on current trends of empirical research in the teaching and learning of computational thinking in primary and secondary education. Although some preliminary recommendations about how to teach coding were made, the bottom line was that controlled experimental training studies are needed to draw conclusions.

As it is still early days with the regard to the introduction of coding to the curriculum, everyone is excited and optimistic. Everyone can and should learn to code. However, as with every skill we will inevitably find that it comes easy to some and will be hard to learn for others. The first publication on dyslexia – describing a 14-year old with severe difficulties learning to read – appeared in 1896. Here we are, more than a century later, adding coding to the curriculum. Will we soon describe and try to explain the underlying cognition of severe cases of difficulties with learning to code? Will there be dyscodia ten years from now? Only time will tell.


On this blog I will report on my progress on this new and exciting line of research: the Scientific Study of Learning to code.  I believe this line of research is best summarised by a triangle of three existing disciplines: Cognitive Science, Educational Science and Computer Science. My expertise lies on the Side between Cognitive Science and Educational Science. Probably more towards the Cognitive Science node - hence the name of the blog: Cognition of Coding. In order to learn more about the others Sides, and in particular the Computer Science node, I aim to collaborate with other researchers. However, I also aim to increase my own practical skills and theoretical knowledge of Computer Science.

References
  • Grover, S. & Pea, R (2013). Computational Thinking in K-12: A review of the state of the field.
  • Sze, Y.L., 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.
  • Wing, J. (2006). Computational thinking. Communications of the ACM, 49 (3), 33-36.