Article Preview
Top1. Introduction
There is now broad agreement that in order to prepare future generations to make the most of technological developments, we should introduce the teaching of programming to early grades of elementary school and even to preschool learning (Papadakis et al., 2016). This is especially important for the present generation of ‘digital natives’ that has to function in a digitized world in which technology is evolving rapidly, creating new fields of study and new forms of employment, requiring new skills and abilities (Yang et al., 2015). As the learners are exposed at a younger age to programming, it is easier for them to function more efficiently in a world where technology is gaining momentum and controlling almost everything in it. Learning programming structures and principles enhances problem-solving abilities, analytic thinking abilities, creative thinking, and computer literacy (White & Sivitanides, 2002; Thomas et al., 2007; Papadakis et al., 2016; Kalelioğlu & Gülbahar, 2014). Developing problem-solving skills involves developing cognitive abilities and high order thinking that help a person face thinking challenges. Analytic thinking and creativity are needed during the process of looking for an algorithm that solves a given problem (White & Sivitanides, 2002). In Mindstorms: Children, Computers, and Powerful Ideas, Seymour Papert (Papert, 1980). drew his vision of how children use a computer: “In many schools today, the phrase ‘computer-aided instruction’ means making the computer teach the child. One might say the computer is being used to program the child. In my vision, the child programs the computer and, in doing so, both acquires a sense of mastery over a piece of the most modern and powerful technology and establishes an intimate contact with some of the deepest ideas from science, from mathematics, and the art of intellectual model building” (p. 5). Papert believed that the learning of programming should be done through playful exploration in which children take control of their learning. He was the first researcher who paved the way to the idea that children will learn to code.
In the field of education, various teaching methods have evolved over the years. Among the effective ways of learning is the spiral method. Bruner (1960) proposed the spiral curriculum, a teaching approach in which each topic or skill area is revisited at intervals, at a more complex level each time (Takaya, 2008). First, the topic is taught on a basic level, followed by several rounds such that in each round more complexity of the topic is added, reinforcing principles that were previously discussed. This teaching method enables the establishment and solidification of the learning topic thoroughly. Spiral learning provides a gradual learning process from simplistic ideas to complicated ones (Johnston, 2012). In light of what is written above, I found the spiral learning method to be suitable for teaching programming principles to young students. To enable the students to invest their efforts in understanding the programming principles and the underlying logical ideas, I chose a simple programming language. The young students will be acquainted with programming principles via the Scratch environment. To avoid unnecessary syntax mistakes, Scratch commands are designed as blocks that can be dragged and executed. Scratch has been translated into many languages so that students can acquire programming principles in their native language. The Scratch environment is taught in some elementary schools in Israel using the Hebrew language. Despite the difficulty of programming in a language that is not one’s native language, I believe it is important to teach programming in English because it is the language of all the programming languages and students have to get used to it right from the beginning. To overcome the language barrier, I added a small dictionary at the end of each learning unit that includes the translation of the new English words in it. To ‘soften’ the rigid character of the programming commands and to raise the students’ curiosity as regards to their functionality, I decided to teach programming via music. Via the composing of familiar melodies, the learner will become acquainted with programming concepts such as variables, repetitive structures, conditional commands, methods, and so forth. Moreover, the teaching/learning process follows the constructivist theory in a way that the students will engage in personal exploration tasks. In the last fifteen minutes of each lesson, a class discussion will take place in which the new concepts will be discussed, and the students will share with the whole class the insights they gained during their explorations.