Challenges: low budget
Programming is still a rather recent development in the primary-school classroom. It therefore presents challenges not only to pupils, but also to schools and teachers. A difficulty frequently cited by the teachers we spoke to is a lack of media infrastructure at schools.
If government funds or money from fundraising aren’t available to purchase those materials, there are creative ways of using a small number of devices effectively. One teacher suggested we should “pool resources across schools to share, like a hardware library”. There are also plenty of collaborative teaching approaches which reduce the need for numerous devices: pair programming, for example, would halve the number of devices required. If only individual devices are available, one educator’s suggestion of “a dedicated teacher to take out smaller groups of children, rather than trying to teach all at once” is a recommended approach, as is splitting the class into groups. Here, each group rotates through several tasks, and only one task deals with programming on digital devices. An unplugged approach that takes place away from devices altogether can also be considered. Even if you do have resources available, hands-on experiences that don’t require digital media literacy can be very fruitful, especially for beginner programmers.
Challenges: teacher knowledge and skills
The teachers surveyed frequently mentioned concerns about their own cognitive, affective (attitudes, motivation, self-efficacy), and pedagogical skills. An effective best-case strategy to counter these concerns is to attend teacher training, which ideally should be free, of high quality, mandatory, and regularly attended, and should take place prior to teaching. However, this isn’t always possible.
Teachers also welcome time for exploring materials and trying out different teaching methods to boost their confidence. One teacher’s suggested approach is “peer mentoring among teaching staff”, in which experienced teachers support less confident ones. This can take the form of team teaching (planning or teaching lessons in pairs) or lesson observation (giving feedback). Such teacher collaboration might be useful, but is also time-consuming.
To make teaching programming manageable — especially in the beginning — consider using or adapting existing material. While our surveyed teachers knew some websites that provided support, many were unaware of the automated tools that are available to support teaching; you’ll find some examples in the boxout.
According to our survey, experienced teachers, when compared to preservice teachers, consider programming to be much less challenging for primary-school students. This might be due to the strategies that these experienced teachers have developed over time. For example, they cite avoiding overwhelming children by teaching each concept slowly, in small steps, and in a repetitive manner. As with other subjects, the teachers simplify concepts, relate them to real life, and use examples for effective child-oriented learning.
Programming at primary school also provides great opportunities that many non-specialised teachers can often be unaware of due to a lack of exposure to the subject. Our surveyed teachers agreed that programming enables the building of new cognitive, metacognitive, and affective skills. In particular, the young age of the students allows them to explore new interests or talents mostly unbiased by stereotypes, which is especially important for underrepresented groups in computer science.
These new skills can be integrated into existing subjects in an interdisciplinary way, thus also having the advantage of supporting a tight curriculum. One teacher suggested that it’s important to teach programming as a stand-alone lesson to teach skills, but to also include it in other lessons to demonstrate how versatile it is. This explains why Scratch (scratch.mit.edu) is so popular in primary schools: the basics of Scratch can be taught in two school lessons. Using, for example, a catch game in Scratch, coordinates or angles can be explained in maths classes, as well as basic physical concepts such as motion sequences, gravitation, or measurements of time and distance.
Teachers also frequently mentioned that programming “gives them the opportunity to be confident and create something in a fun ... new and exciting way” — something to which Scratch is again well suited, as it gives pupils the opportunity to create colourful characters and landscapes. These skills can also be implemented with Ozobots (ozobot.com), where students control small robots by drawing coloured lines and shapes. Since Scratch is also available in several languages, it can also be integrated into language classes, for example to practise vocabulary or to gain a better understanding of syntax in general.
These cross-curricular links create a win-win situation: not only is programming integrated in a practical way, but existing subjects are also made more varied and educational. Our surveyed teachers particularly appreciated the methodological diversity that programming classes have to offer; they especially recommend coding competitions, small group work, and pair programming to improve students’ communication skills and their ability to work in a team.
The acquisition of these cognitive, metacognitive, and affective skills, which also include digital and computing literacy, is the basis for our digitalised world. Therefore, job and career opportunities should also be highlighted at an early age. Suggestions from experienced teachers include inviting experts from science or industry to share their experiences or, even better, holding courses with the children so that they can experience it for themselves.
These ideas and principles suggested by teachers can be implemented within various approaches to teaching programming. We hope that you have gained some new ideas for realising cooperative and creative programming classes in primary schools.
Tools for block-based programming:
Analysis of code
CodeMaster (Snap! and App Inventor, helloworld.cc/codemaster)
Dr. Scratch (Scratch, drscratch.org)
LitterBox (Scratch, helloworld.cc/litterbox)
Analysis of output
SnapCheck (Snap!, helloworld.cc/snapcheck)