Keywords

1 Introduction

Within the context of the Fourth Industrial Revolution and the scarcity of software skills in South Africa, the South African government has announced a drive to introduce Coding and Robotics in schools, from Grade R (Lindeque, 2021). One of the biggest challenges for rolling this out in the country is the fact that we have nearly 16000 schools without any computer labs (BusinessTech, 2018). In addition to infrastructure limitations, Dr. Mmaki Jantjies, a senior lecturer at the Department of Information Systems, University of the Western Cape’s, mentions four other challenges: teacher training and support, localized learning content, technical support, as well as safety and security (The Conversation, 2019).

This paper follows on a series of workshops presented online in February 2021 (Bush, 2021; Gibson, 2021; Makoena, 2021; Oosthuizen, 2021). The focus of the workshops was on unplugged coding, aimed specifically at educators who had little prior experience in coding, as well as schools that do not have computer laboratories. The objective of the workshops was on demystifying coding and robotics, while also introducing computation thinking as critical to programming. Practical guidance as to pedagogical sound activities that could be conducted in the classroom was provided.

The paper provides some theoretical background, but mainly aims to serve as a teaching guide to educators who would want to implement unplugged coding activities. Consequently, it will be referring to specific unplugged activities as examples from different available resources. The paper concludes by introducing some computational thinking exercises as well as providing coding examples from the TANKS coding app which was developed at Nelson Mandela University (Batteson, 2017).

2 Background

Klaus Schwab (2016) stated that the powerful effects that digitization and technology have on different work areas are leading to a Fourth Industrial Revolution. He predicted that the effect new technologies would have on the digital, biological, and physical zones is extreme, letting all these zones merge and do greater things that were thought previously impossible. He expressed concern about how automation will get to replace certain jobs and how larger countries will be able to dominate the new economy. Technology could be the main reason for the income of many jobs stagnating or decreasing.

Xu et al. (2018) provide insight into what factors are leading to the Fourth Industrial Revolution. They see the Internet of Things and disruptive technologies as the main driving force behind it. With these new disruptive technologies, it is vital to have both the infrastructure and the workforce to be part of this revolution. They think that it will take longer to occur due to the gaps that exist in today’s societies between those countries that are ready for it and those which are not.

In acknowledging this challenge, South Africa’s President Cyril Ramaphosa (2019), in his 2019 State of the Nation Address declared that he had appointed a presidential commission on the Fourth Industrial Revolution. He placed importance on getting South Africa to be part of this revolution, preventing too many South Africans to be held back because of the digital divide in the country.

Within the context of the Fourth Industrial Revolution, computer programming and robotics are becoming essential to the economy of the future. To establish and build an economy in such a way to support this, people are needed who are able to develop and work with the latest technologies. Singh (2004) predicted this nearly 20 years ago already. To get a population that is comfortable with technology, children need to be enabled to programme and be comfortable with robotics. However, in South Africa there is a problem with this as the poorer and more disadvantaged communities lack access to computers. Due to their lack of exposure, they cannot be expected to have an interest in it and this implies that they will fall further behind in this economy. This is part of the problem known as the digital divide. The digital divide consists of four kinds of barriers to access (Deursen & Dijk, 2014).

  • Lack of elementary digital experience.

  • No possession of computers and network access.

  • Lack of digital skills caused by insufficient user-friendliness and inadequate education or social support.

  • Lack of significant usage opportunities.

A further challenge for South Africa is that software development is seen as one of the scarcest skills. According to the latest CareerJunction Index Report for February 2021 (Career Junction, 2021), Software Development remains one of the highest sought-after skills, with Information Technology the top employment sector. The CareerJunction Index analysis is based on comprehensive data gathered from the CareerJunction website—where around 3000 of the country’s top Recruiters (both agencies and corporate companies) advertise their positions to millions of registered job seekers.

In addition to the implicit value of teaching coding, it is important to acknowledge that coding has wider advantages for learners. Marr (2019) identifies the following top skills needed for future work: Creativity, Emotional Intelligence, Critical Thinking, Active Learning, Decision-Making, Interpersonal Communication, Leadership, Cultural Intelligence, Technology, and Embracing Change. It is easy to note that the boldfaced skills are all related to coding activities in the classroom. DePryck (2016) says coding is about algorithmic thinking, where more complex actions are broken down into a sequence of instructions and computational thinking. The learner is taught to focus on problems and their solutions.

Section 3 provides an overview of some theories related to the work, with Sect. 4 introduces the concept of unplugged coding. Computational thinking (Sect. 5) and the Introduction of Coding (Sect. 6) are then discussed, combined with actual activities and exercises that can be implemented in the classroom. Some of the main resources of computational thinking exercises are introduced (Sect. 5), while it is shown how the TANKS coding app is used to introduce basic coding concepts (Sect. 6).

3 Educational Theory

In this section, the following three theories are discussed: Piaget’s Theory of Cognitive Development, Vygotsky’s Sociocultural Theory, and Kolb’s Experiential Learning Theory.

3.1 Piaget’s Theory of Cognitive Development

Piaget (1952a, 1952b, 1972) describes a developmental theory that is concerned with the different stages of cognitive development throughout childhood development. The sensorimotor stage is concerned with infants and their instincts, which is not relevant to this paper. The second stage of development is known as the preoperational stage. Piaget (1952b) formally defined the bounds of the preoperational stage as typically being between two and seven years of age. In this stage, words, images, and ideas tend to be presented by symbols. This is why children in this age group often engage in pretend play.

During the concrete operational stage, 7–11 years, children begin to perform mental operations such as problem solving and arithmetic. They begin to understand reversibility and conservational concepts; however, they do not always understand all of them.

The formal operational stage (starting around 11 or 12) is when children are able to hypothesize different solutions to the same problem. Children in this stage begin to think abstractly.

Based on Piaget’s developmental theory it can be concluded that age is the limiting factor in understanding many programming concepts. It seems that children in the concrete operational stage should be capable of basic sequential logic, with the more complex logic being more suitable for the formal operational stage. The preoperational stage, however, also creates an opportunity to introduce children to coding through play. All of this is relevant to the exercises referred to in this paper.

3.2 Vygotsky’s Sociocultural Theory

Vygotsky (1967) discusses play and its role in the mental development of children. He suggests that defining play as symbolic, could lead to a limited understanding of play in children. This implies that the imaginary situations children create during play have rules, which are based on reality. This directly relates to the interface metaphor in software development. Vygotsky’s theory further includes a concept referred to as the zone of proximal development, which refers to the difference between a child’s ability to learn when they receive guided supervision versus receiving no help at all (Kolb et al., 2000). A form of educational instruction, called scaffolding, is based on Vygotsky’s theory and the concept of the zone of proximal development. Scaffolding indicates that a child should receive supervision when learning, but no more than necessary.

The aspects of play as well as guided supervision are closely related to the exercises focused on in this paper.

3.3 Kolb’s Experiential Learning Theory

Kolb et al. (2000) describe experiential learning theory as a process whereby people learn through a transformative experience. One model related to experiential learning is the Experiential Learning Cycle (ELC), consisting of four components that make up a four-stage learning cycle required to learn effectively. Concrete Experience refers to perceiving new information through tangibility and relying on your senses. Abstract Conceptualization refers to thinking about new information and analyzing it without your senses. Reflective Observation is a personal reflection of what is experienced during the Concrete Experience phase. Active Experimentation refers to the application of newfound knowledge.

Once again experimenting through experiential learning is an intrinsic part of the exercises mentioned in this paper.

4 Using Unplugged Coding in Education

Unplugged coding makes use of games or activities that can be done offline using tangible objects, such as paper and markers. It could also be referred to as offline or tangible coding, which is a very hands-on approach. In the South African context, unplugged or offline coding could be seen as a “Plan B” where there are no computers available. Furthermore, it could be viewed as an easy way for teachers who do not have a coding background. Although these considerations are valid, there are, also, many good pedagogical reasons for introducing coding offline.

David et al. (2006) stated that a hands-on approach to learning could inform cognitive development through its kinesthetic involvement by going from concrete to abstract, which closely follows Kolb’s Experiential Learning Cycle discussed in Sect. 2. Rogers et al. (2002) suggested that allowing children to use mixed realities (virtual or physical tools) in the context of play and learning allowed for uncharacteristically extended interest and reflection. The extended interest would be key for an introduction to programming concepts.

Marshall (2007) stated that tangible programming may increase collaboration between children, as learning on a single desktop with a mouse and keyboard would result in one or two children taking control of the application while others may only observe. Horn et al. (2009) compared educational tangible systems to graphical systems. The results were that both systems were equally easy to understand, but tangible systems tend to increase group participation. Children were also found to become more involved with tangible systems than adults.

Although it is mostly done on a computer, blocked coding is also often used to introduce learners to coding. Block code is when coding is done in a visual block format (Fig. 1) to minimize potential errors. Visual blocks representing text-based code are dragged and dropped into the code editor (Dodge, 2021). Scratch is the best-known block coding tool, developed by MIT.

Fig. 1
figure 1

Block coding in Scratch

At Nelson Mandela University postgraduate students developed B# over 3 years. It represents code visually using flowcharts and icons. B# aimed to address difficulties for new developers in handling language and IDE complexities by using a visual editor to generate the code for them (Brown, 2001; Thomas, 2002; Yeh, 2003). Block code was also used in the TANKS game developed by Batteson (2017) as a tangible coding tool, making use of image recognition and a mobile application. It was referred to often during the 2021 CODING UNPLUGGED workshops, and will be discussed in Sect. 6.

5 Computational Thinking

The term “computational thinking” was first used by Seymour Papert and later popularized by Jeanette Wing (Oosthuizen, 2021; Wing, 2006). She defined it as “the thought process involved in formulating problems and their solutions so that the solutions are represented in a form that can be effectively carried out by an information processing agent.” In addition to coding, it is used in various disciplines such as science, engineering, and mathematics. Furthermore, it is relevant in day-to-day problem solving.

It is generally accepted that computational thinking goes hand in hand with an introduction to programming. Therefore, it is critical that any introductory coding module at school level should include computational thinking exercises and activities. Section 5.1 provides an overview on three potential sources of such exercises. Section 5.2 will then provide an example of exercises focusing on specific skills that have been identified in computational thinking.

5.1 Computational Thinking Exercise Resources

There are numerous resources for computational thinking exercises (Gibson, 2021; Makoena, 2021; Oosthuizen, 2021), which are of great value to teachers. This section will focus on the following:

  • Code.Org

  • CSUnplugged

  • IITPSA Talent Search Olympiad

5.1.1 Code.Org

They state their vision as expanding access to computer science in schools, specifically focussing on increased involvement of women and underrepresented groups. Although they are US based, their following goals are just as relevant to this paper within the South African context:

  • Improve diversity in Computer Science

  • Inspire students (learners)

  • Reach classrooms

  • Prepare new Computer Science (Coding and Robotics) teachers

They furthermore believe that Computer Science is foundational to all students (learners) and are committed to equity and access. Consequently, all their resources and tutorials are free to use (Code.Org, 2021).

5.1.2 CS Unplugged

CS Unplugged is a collection of free learning activities that teach computational thinking as an introduction to Computer Science through engaging games and puzzles that use cards, string, crayons, and lots of running around. The activities were developed to provide questions and challenges that programmers would face, without needing to programme first. Although it was first seen as a resource for outreach and engagement (science shows, talks for senior citizens, and special events), the activities are now widely used for formal teaching. Videos are available to show teachers how the activities work. All resources are open source and free to use.

The primary objective of CS Unplugged is to get them to find Computer Science interesting and thus would choose to study it. The specific aims are (Taub et al., 2012):

  • To give students a rough idea of what Computer Science is.

  • To promote the CS as a career for women.

  • To help students make an informed career choice related to work in Computer Science.

It must be noted that Taub et al. (2012) found limited success in reaching these aims. Within the context of this paper, CS Unplugged, however, remains a valuable source of activities and exercises.

5.1.3 IITPSA Talent Search

The Institute of IT Professional South Africa (IITPSA) offers an annual Computer Olympiad, which is one of the oldest and biggest competitions of its kind in the world. The Olympiad takes on three formats:

  • The Programming Olympiad is for learners who can programme.

  • The Applications Olympiad is for computer literate learners.

  • The Talent Search is an aptitude test using problem-solving tasks.

While the Talent Search is an online test, a pen-and-paper version is available for schools that do not have access to computers and the Internet. It is therefore relevant to this paper. This Olympiad identifies learners with computational thinking skills. Past papers can be downloaded from their website. The problems are classified according to levels appropriate to different ages and grades.

5.2 Computational Thinking Skills and Exercises

Four skills have been identified in computational thinking: Decomposition, Pattern Recognition, Pattern Abstraction, and Algorithm Design. This section provides an exercise related to each of these skills.

5.2.1 Decomposition

Decomposition has to do with breaking a larger problem into smaller parts. Exercises to practice decomposition, can be based on real life, as shown in Fig. 2, related to planning a vacation.

Fig. 2
figure 2

Decomposition exercise (Oosthuizen, 2021)

5.2.2 Pattern Recognition

Pattern recognition is a very common exercise in mathematics, with most learners accustomed to follow examples where the next element in the sequence must be identified:

  • 2, 4, 6, 8, 10, … .

  • 30, 25, 20, … .

  • A, D, G, J, … .

The Fibonacci series is a well-known series often used in introductory programming exercises:

1, 1, 2, 3, 5, 8, 13, 21, ………

Figure 3 shows the unplugged coding commands to draw a square. With closer inspection, it can be observed that the following commands are repeated 4 times:

  • Draw a straight line

  • Turn 90 degrees to the right

Fig. 3
figure 3

Pattern recognition (Oosthuizen, 2021)

By recognizing this, the concept of a loop (where commands are repeated) is introduced as shown in Fig. 4.

Fig. 4
figure 4

Introducing a loop (Oosthuizen, 2021)

5.2.3 Pattern Abstraction

Pattern abstraction has to do with focusing on important information only, and ignoring the extra information that does not help solve the problem. In other words, it is about the ability to explain a problem or solution by removing unimportant detail.

In solving the problem provided in Fig. 5, the learner would have to do the following:

  • Extract the most important features from the birdhouses.

  • Filter out unnecessary details.

  • Highlighting the similarities and differences in each birdhouse.

Fig. 5
figure 5

Pattern abstraction (Talent Search, 2021)

5.2.4 Algorithm

The final step in solving a problem would be to define an algorithm. This can be described as a series of steps that need to be followed in the correct order to accomplish a task. A very basic introduction of an algorithm could be to ask learners to write down the recipe for a cheese and tomato sandwich (or any other dish). They could also be tasked to give directions from the school to another building in town (post office or nearest Mc Donald’s).

In Fig. 6, a crane responds to six different input commands: Left, Right, Up, Down, Grab, and Release. The learners are tasked to find the correct set of instructions to swop the position of the two crates. This set of instructions would be a typical algorithm.

Fig. 6
figure 6

Algorithm (Robinson et al., 2020)

6 Introducing Coding Without a Computer

This section introduces the TANKS coding app and proceeds to give examples from the app on how the following basic coding concepts are introduced: sequential instructions, loops, and nested constructs.

6.1 The TANKS Coding App

TANKS was developed by 2017 Computing Sciences Honours student Byron Batteson (2017). It uses tangible tokens (customized puzzle pieces), image recognition, and a mobile app to allow learners to construct instructions that are executed on a mobile device (Fig. 7). No computers are thus needed to introduce coding concepts such as sequential instructions, loops (if and while), if constructs and nested constructs.

Fig. 7
figure 7

Coding in TANKS

Since the launch of the app in November 2017, unplugged coding boot camps have been presented to nearly 30000 learners across South Africa, often in very disadvantaged areas (Willemse, 2019). Various schools and NGOs in South Africa have identified TANKS as a great tool to introduce learners to coding at a young age. NGOs such Good Work Foundation (Fig. 8), Nemato Change a Life, and the Govan Mbeki Math Development Centre, as well as Johannesburg Libraries, are some of the most proactive implementation partners.

Fig. 8
figure 8

TANKS workshop at Good Work Foundation (Makoena, 2021)

Kelly Bush (2019) from Hudson Park Primary School in East London has developed 7 lesson plans, aimed at introducing learners to coding through TANKS. This led to the launch of the TANKS School Kit in July 2019. This kit contains TANKS games, the lesson plans, instructional videos, solution sets, and various other resources which empower a school to start its own coding club. The great value of TANKS is that an introductory coding curriculum can thus be offered with literally 6–8 smart phones. The app has 35 levels of increasing complexity, and introduces various coding concepts that would be found in introductory coding modules.

6.2 Sequential Coding

Figure 9 depicts Level 3 from the app. At each level, the tank needs to reach the star as its final destination. For the initial commands, the following sequential commands are available: Move Forward, Move Backward, Turn Left, and Turn Right.

Fig. 9
figure 9

TANKS Level 3

At first inspection Fig. 10 shows a possible solution for the problem. The Move Forward commands have, however, been limited to 3. Consequently, the player has to come up with an alternative solution (Fig. 11). At the end the tank turns left, and then moves backward toward the star.

Fig. 10
figure 10

Possible solution for Level 3

Fig. 11
figure 11

Correct solution for Level 3

6.3 Loops

Figure 12 depicts Level 11 from the app. The basic solution would be to use 5 Move Forward commands. As stated in Sect. 6.2, there are only 3 allowed. To solve this problem, the Repeat command is introduced, which allows for loops.

Fig. 12
figure 12

TANKS Level 11

Figure 13 shows how a basic loop is implemented. Below the Repeat token, the player indicates how many times the command above the Repeat token must be repeated. The Move Forward command is thus repeated 5 times. An alternative solution to Level 13 would be to use the While token (Fig. 14). The While command as shown in this solution says, “while my path is clear, move forward.” The user would expect the tank to go all the way to the wall, but a special feature terminates the activity once the star is reached. This “early termination” of a loop is a typical coding concept.

Fig. 13
figure 13

First solution for Level 11

Fig. 14
figure 14

Second solution for Level 11

An important feature of TANKS is that the part that is repeated (referred to as the “body of the loop” in programming), can contain more than one command. Figure 15 depicts Level 12 from the app. At first inspection Fig. 16 shows a possible solution for the problem.

Fig. 15
figure 15

Level 12

Fig. 16
figure 16

First solution for Level 12

In addition to being a very lengthy solution, it has the additional problem of using 6 Move Forward. There is an alternative solution to, at some stage, turn the tank around and then proceed with Move Backward, but this is even more lengthy. Keeping in mind the early termination rule, as discussed earlier, one could add an additional (unnecessary) Turn Right at the end. Now, it is clear that the following set of commands are repeated 3 times: Move Forward, Move Forward, and Turn Right. Figure 17 thus shows an optimized solution, making use of three commands in the body of the loop (at the top of the Repeat token).

Fig. 17
figure 17

Optimized solution for Level 12

6.4 Nested Structures

Figure 18 depicts level 24 of TANKS. At closer inspection it can be noticed that the following commands are repeated:

  • Turn Left

  • While - Path Clear - Move Forward

Fig. 18
figure 18

TANKS Level 24

This needs to be done 11 times, but the repeat only allows repetitions up to 6 times. A solution to this is the Infinite token. Combined with the early termination rule, a solution for Level 24 is given in Fig. 19. The main loop in this solution is thus the loop that “infinitely” repeats the Turn Left and the While command. Consequently, the While command is a nested loop inside the Repeat loop, and combined with the Turn Left it is repeated until the tank reaches the star.

Fig. 19
figure 19

TANKS Level 24

6.5 TANKS—Summary

The further levels (up to Level 35) become even more complex, and introduce the If statement, which combined with infinite Repeat loops make for interesting solutions to very challenging problems. In addition to being an unplugged solution that only needs a regular smart phone, TANKS has many pedagogical aspects to it that make it an ideal tool to use in a class situation. These include the following:

  • Teamwork

  • Problem solving

  • Scaffold learning

  • Strategy

  • Immediate feedback

  • Conflict resolution

  • Dealing with failure

  • Fun

7 Conclusions

South Africa is a developing country which needs to guard against too many of its citizens falling behind during the Fourth Industrial Revolution. One way to address this is to introduce coding and robotics in the country’s primary schools. With this goes computational thinking. A major challenge in doing this, is the fact that the vast majority of schools in the country do not have computer labs. Furthermore, teachers are not equipped to teach this subject.

This paper shows the importance of computational thinking, as well as coding and robotics. It then goes further to demystify these topics by introducing various resources, exercises, activities, and tools that any teacher could use, without coding experience, or without the need for computers.

The authors believe that the paper makes a useful contribution in empowering teachers to introduce their learners to the skills needed to survive the Fourth Industrial Revolution.