DEVELOPING PROGRAMMING SKILLS ON DIGITAL NATIVE CHILDREN
THROUGH THE INTERACTION WITH SMART DEVICES
José Rafael Moraes Garcia da Rocha
RECIFE
2016
José Rafael Moraes Garcia da Rocha
DEVELOPING PROGRAMMING SKILLS ON DIGITAL NATIVE
CHILDREN THROUGH THE INTERACTION WITH SMART DEVICES
Dissertação apresentada como requisito parcial para a obtenção do título de Mestre, pelo Programa de PósGraduação em Ciências da Computação do Centro de Informática da Universidade Federal de Pernambuco
Orientador: Vinicius Cardoso Garcia, PhD CoOrientadora: Taciana Pontual da Rocha Falcão, PhD
RECIFE
2016
Catalogação na fonte
Bibliotecária Monick Raquel Silvestre da S. Portes, CRB4-1217
R672d Rocha, José Rafael Moraes Garcia da
Developing programming skills on digital native children through the interaction with smart devices / José Rafael Moraes Garcia da Rocha. – 2016.
76 f.: il., fig., tab.
Orientador: Vinicius Cardoso Garcia.
Dissertação (Mestrado) – Universidade Federal de Pernambuco. CIn, Ciência da Computação, Recife, 2016.
Inclui referências.
1. Engenharia de software. I. Garcia, Vinicius Cardoso (orientador). II. Título.
005.1 CDD (23. ed.) UFPE- MEI 2016-087
DEVELOPING PROGRAMMING SKILLS ON DIGITAL NATIVE
CHILDREN THROUGH THE INTERACTION WITH SMART DEVICES
Dissertação
apresentada
como
requisito parcial para a obtenção do
título de Mestre, pelo Programa de
PósGraduação em Ciências da
Computação
do
Centro
de
Informática
da
Universidade
Federal de Pernambuco
Aprovada em 15/01/2016
BANCA EXAMINADORA
PhD. Cristiano Coelho de Araújo – UFPE
________________________________________________
PhD. Vinicius Cardoso Garcia – UFPE
________________________________________________
PhD. Alberto Cesar Cavalcanti França – UFRPE
________________________________________________
RECIFE
Jan 2016
Dedico essa dissertação a minha esposa e meus
familiares.
Agradecimentos
Após três anos, recordar de todas as pessoas que contribuiram direta e indiretamente para a conclusão deste trabalho não é uma tarefa fácil, então tentarei fazer os devidos agradecimentos em ordem cronológica. Primeiramente, gostaria de agradecer o apoio dos meus pais, Garcia e Audrey, que me propiciaram todas as condições físicas, mentais e financeiras para que eu pudesse concluir um dos maiores desafios que decidi enfrentar. Sou muito grato também a minha irmã, Raissa, que sempre me incentivou a continuar trilhando este caminho, e me ajudou bastante com seu conhecimento na língua inglesa. Agradeço a minha sogra Henriqueta Luiza, por me incentivar, principalmente na reta final do trabalho. Aos meus colegas de turma agradeço o suporte para a conclusão da primeira parte do curso, em especial os mais próximos: Clecio Costa, Herminig Everson, Plácido Segundo e José Alfredo. Aos meus amigos Diego Nascimento e Diogo Carvalho, que me ajudaram na ideação e no design gráfico do meu projeto. Gostaria de agradecer também aos meus amigos das empresas Fingertips e C.E.S.A.R. nas quais trabalhei durante o período do mestrado a lista de nomes é bastante extensa, mas eles sabem que agradeço profundamente pelo apoio. As palavras não seriam suficientes para agradecer ao meu orientador, Vinicius Garcia, que aceitou entrar comigo nessa empreitada e colaborou ativamente com seu conhecimento e sua experiência, além de me colocar no caminho correto sempre focando no objetivo final, a conclusão deste trabalho. Da mesma forma, não tenho como agradecer suficientemente a minha coorientadora, Taciana Pontual, que me ajudou muito com seu conhecimento específico e foi bastante criteriosa em suas sugestões, prezando sempre pela qualidade do trabalho. Não poderia deixar de agradecer ao professor Luciano Meira, que em determinado momento, em uma curta conversa, ajustou o rumo do meu trabalho, evitando que eu provavelmente percorresse um caminho muito mais tortuoso do que percorri. Agradeço também a todas as outras pessoas que contribuíram direta ou indiretamente para a conclusão desse trabalho. E por fim, demonstro minha imensa gratidão a pessoa que talvez tenha me acompanhado mais de perto, minha esposa, Mariana, que me deu todo o suporte psicológico, além de me acompanhar nos experimentos, me ajudou com seus conhecimentos sobre métodos de pesquisa e que, na reta final, ainda ajudou com suas habilidades em design gráfico, construíndo algumas figuras para o trabalho.
Abstract
Nowadays the computational thinking is one of the most important skills a person should develop to be more well prepared for the near future. By the middle of this century, this ability will probably have the same level of importance of fundamental skills like reading and writing, and people will need to learn programming and problem solving with computational thinking from an early age. Studies are trying to stimulate the introduction of this skill set to young children, and this has been done since 1967 when the Massachusetts Institute of Technology created the first language aiming this kind of public called LOGO. Although the studies in the area of developing computational thinking on children started almost six decades ago, the importance of teaching programming in schools is not widely spread, in places like Brazil, this skill is starting to be introduced to children older than 10 yearsold. In contrast, the United States and some european countries are using a variable set of approaches to introduce these concepts to young children varying from 4 to 12 years old, usually by creating toys and games which these concepts can be developed within them. Unfortunately most of approaches are aimed for already literate children, very few of them do not require reading skills, limiting the minimum age of users to approximately 6 years old. This work has the intention to argue that toddlers are not only able to develop algorithms and initiate the development of computational thinking skills, but also this practice will be quite profitable for their future. A survey involving 9 children with between 4 and 6 years old is presented, where the selected children played a game developed specially for this work, and their performance was able to produce data that is going to be analyzed further to test the main hypothesis which is " Toddlers can develop algorithmic thinking by playing programming games ", additionally, while reviewing the literature, problems related to the effects of letting children use smart devices and internet without supervision were identified, in order to advocate the usage of this technology by young children, possible causes and risks of these problems are presented and ways to avoid them as well, the results of this work are encouraging, all toddlers involved were able to play the game developed.
Keywords: Programming skills. Computational thinking. Digital native children. Smart devices.
Resumo
Nos dias de hoje o pensamento computacional é uma das habilidades mais importantes que uma pessoa deve desenvolver para se preparar melhor pro futuro próximo. Em poucos anos essa habilidade será tão importante como ler e escrever, pessoas precisarão aprender a programar e resolver problemas com pensamento computacional desde cedo. Estudos que tentam estimular a introdução dessas habilidades para crianças são feitos desde 1967 quando o Institudo de Tecnologia de Massachusetts criou a primeira linguagem para esse público chamada LOGO. Embora os estudos na area de desenvolvimento do pensamento computacional em crianças tenha começado a mais de seis décadas atrás, a importância de ensinar programação em escolas não é amplamente difundida, em lugares como Brasil, essa habilidade está começando a ser introduzida a crianças com mais de 10 anos de idade. Por outro lado, nos Estados Unidos e em alguns países europeus diversas abordagens vem sendo usadas para introduzir esses conceitos para crianças de 4 a 12 anos de idade, normalmente são criados brinquedos e jogos que podem ajudar a desenvolver tais conceitos. Infelizmente a maioria dessas abordagens são focadas em crianças alfabetizadas, poucas não requerem a habilidade de leitura, limitando a idade mínima a 6 anos de idade. Esse trabalho argumenta que crianças muito novas não somente são capazes de desenvolver algoritimos e iniciar o desenvolvimento de habilidades do pensamento computacional, como essa prática será bastante proveitosa para o futuro deles. É apresentada uma pesquisa envolvendo 9 crianças com idade entre 4 e 6 anos, onde as crianças selecionadas jogam um jogo desenvolvido especialmente para este trabalho, e a performance deles foi capaz de produzir dados que foram analisados para testar a hipótese principal que é " Crianças muito novas podem desenvolver pensamento algoritimico jogando jogos de programação ", adicionalmente, enquanto a literatura foi revisada, problemas relacionados aos efeitos de permitir crianças a usar dispositivos móveis e internet sem a supervisão dos responsáveis foram identificados, para defender o uso desse tipo de tecnologia na educação de crianças as possíveis causas e meios de evitar esses problemas foram levantados, os resultados desse trabalho são encorajadores, todas as crianças envolvidas foram aptas a jogar o jogo desenvolvido com uma boa performance.
Palavraschave: Habilidades de programação. Pensamento computacional. Crianças nativas digitais. Dispositivos móveis.
LIST OF FIGURES Figure 1: The Valiant turtle ………19 Figure 2: Roamer educational robot ………..21 Figure 3: Roamer Too, Roamer's second generation ………...22 Figure 4: Flashlight with touch sensor built with electronic blocks ………...23 Figure 5: FlowBlocks (left) and SystemBlocks (right)...23 Figure 6: Tern (left) and Quetzal (right) ………...24 Figure 7: RoboEduc Level 1 (left), Level 3 (center), and Level 5 (right) …...25 Figure 8: LogoBlocks user's interface. ………...26 Figure 9: Scratch interface …………...28 Figure 10: ScratchJr interface ………...29 Figure 11: A kindergartener project working on a premade environment (left), a project based on a story by two kindergartners (right).………...30 Figure 12: Research on introducing computational thinking to children timeline ………...31 Figure 13: Children sidebyside practicing programming with AlgoBlock………..33 Figure 14: Traffic lights built with AgentSheets………...35 Figure 15: Squeak Etoys printscreen………...36 Figure 16: LightBot………...37 Figure 17: Cubetto………...37
Figure 18: A physical programming interface ……….....38
Figure 19: Sphero ………...40 Figure 20: Application’s alpha version main screen………...42 Figure 21: Design of the three game levels………...42 Figure 22: First level of the game………......45 Figure 23: Second level of the game………...46 Figure 24: All valid ending points and respective scores…………...48 Figure 25: Level 2 and application redesign………...49 Figure 26: Child playing freely with the robot………...50 Figure 27: 4 yearold child playing the first level………...51 Figure 28: 5 y.o child celebrating the completion of the second level……...56 Figure 29: 6 y.o child playing the third level………...60
Figure 30: Conceptual model of smartphone addiction in early childhood……...68 Figure 31: New interface prototype for the tablet application………...73
LIST OF TABLES
Table 1: M's first three attempts on level 1 ………..44
LIST OF CHARTS Chart 1: First 4 yearold Score x Attempts………...53 Chart 2: Second 4 yearold Score x Attempts……….…..54 Chart 3: Third 4 yearold Score x Attempts………..………...55 Chart 4: First 5 yearold Score x Attempts………..……….57 Chart 5: Second 5 yearold Score x Attempts……….………..58 Chart 6: Third 5 yearold Score x Attempts………...59 Chart 7: First 6 yearold Score x Attempts……….………..61 Chart 8: Second 6 yearold Score x Attempts………..……….62 Chart 9: Third 6 yearold Score x Attempts………..………...63
CONTENTS
1 INTRODUCTION………... 13 2 STATE OF THE ART……….17 2.1 DEVELOPING COMPUTATIONAL THINKING ON CHILDREN: BASIC CONCEPTS AND HISTORICAL FINDINGS………....18 2.2 A TAXONOMY FOR APPROACHES TO INTRODUCE CHILDREN TO PROGRAMMING………..31 2.2.1 TEACHING MECHANICS OF PROGRAMMING………..31 2.2.2 SOCIAL LEARNING………....32 2.2.3 PROVIDING REASONS TO PROGRAM………..33 2.2.4 EMPOWERING MECHANICS OF PROGRAMMING………...34 2.3 APPROACHES THAT INFLUENCED DIRECTLY THE GAME DEVELOPED 36 2.4 CHAPTER SUMMARY………...38 3 THE GAME: HOW IT WAS BUILT, AND WHAT IT ACHIEVED………....39 3.1 ALPHA VERSION, TESTING AND RESULTS………...………....41 3.2 BETA VERSION USED FOR THE SURVEY……...………....47 3.3 CHAPTER SUMMARY………...49 4 THE SURVEY, TESTING THE GAME'S BETA VERSION WITH CHILDREN……….50 4.1 THE 4 YEAROLD'S ANALYSIS ………...51 4.2 THE 5 YEAROLD'S ANALYSIS ………...55 4.3 THE 6 YEAROLD'S ANALYSIS………..59 4.4 A COMPARISON BETWEEN THE THREE GROUPS………..63 4.5 CHAPTER SUMMARY………...64 5 RISK ASSESSMENT AND MITIGATION………..65 6 CONCLUSION……….70 6.1 FUTURE WORK………..71 REFERENCES………....74
1. Introduction
Through the past few years the learning process that is applied in elementary school has been criticised more often. Questions about its effectiveness are being made and some schools have already tried to improve it by adding some disciplines that may prepare the students better for the World's demands (WAGNER, 2008).
According to Wing (2006) computational thinking is one of the abilities that the world is demanding from people, and it will probably be listed as a fundamental skill set in a few years. This skill set includes the computer science foundations such as: abstraction as the ability to separate the complexity of things in different levels, think recursively, algorithmic thinking, essentially solving problems using the computer science fundamentals.
The algorithmic thinking, as part of computational thinking skill set and understood as the capability to develop algorithms, is often listed as one of the most important skills to be learned sooner and, since the early 90's developing thinking skills by programming has been stimulated (COSTA, 1991). Nowadays, in a majority of countries, programming is only learned when the person reaches adolescence or early adult age, at college. Some studies and applications are trying to deliver to children an early access to this skill through classes, games, puzzles, and applications. Some examples of such applications are Alice, a 3D environment to create animations and tell stories, and Scratch , an environment to create stories, games and animations, LEGO mindstorms, a tool set to create robots and develop programs to control them (DE PAIVA et al., 2015; FARIAS et al., 2015; MATTOS, 2015; FINCHER et al., 2010).
The introduction of programming concepts to teenagers and children have been studied since before the personal computer was introduced to the stores. Most of the studies related to this research are focused on how to achieve the two most valued aspects of the area, which are lowering the barriers to programming and designing a "higher ceiling" with a lower barrier (TEMPEL, 2012). When the barriers are lower more people can access the technology and people with less previous knowledge of mathematics, logic and programming can access the technology and start to create programs. Moreover, an easier approach to be used might be considered to have a "higher ceiling", if people can create more complex programs with it than with previous ones. This chapter provides a brief introduction of the historical achievements of the area to be more detailed on the next chapter.
In 1967 the MIT (Massachusetts Institute of Technology) started working on Logo, a multiparadigm language based on the functional language LISP, which was introduced to schools in 1980 by Papert (TEMPEL, 2012). In his work, Papert (1980) advocated that children would be able to comprehend and play with Logo, and as soon as it were accepted by the schools, the educational system would have to change and adapt to it, but clearly it did not go this way as many countries are still trying to introduce programming to schools more than 3 decades after Papert published his work.
With the advent of Logo in the late 60's a series of research and works were done in the area of teaching programming to children (described in the next chapter), but the majority of the approaches, like Scratch and LEGO Mindstorms for example, requires reading skills, building a barrier for preschool children to start learning programming skills. Some recent approaches of the area that concentrate efforts on young children try to avoid written text actions, replacing them with icons and contextualized buttons to provide a more reachable and intuitive user interface, for example ScratchJr and Roamer Too. More details on these approaches will be seen on the next chapter.
With appropriate approaches , teaching programming to children can deliver even more than just a useful skill, programming classes can also help the development of basic concepts of science, technology, engineering and mathematics (HOLMQUIST, 2014). Wyeth (2001) advocates that the increasing need of introducing technology to young children is undeniable, considering that educators have to prepare the next generations for the 'information revolution'. Although an approach of how to teach programming to children has not reached a consensus yet, it is considered that it needs to be gradual and assisted. According to Zuckerman et al. (2005) an interesting approach is with digital manipulatives or familiar objects, as it increases the acceptance of children to technology.
Considering that children manipulating new technology is probably an unavoidable scenario that will be faced worldwide, it is important to parents and school teachers to prepare themselves properly to provide such contact, and there are many possible strategies to introduce children to smart devices in ways that will be productive, enabling them to develop new skills and play at the same time. Conversely, unsupervised and uncontrolled usage of smartphones, tablets and the internet can lead to very serious problems such as: addiction, loneliness, obesity, hearing and vision impairments and the situation is aggravated the younger the child is (PONTES, GRIFFITHS, PATRÃO, 2014).
There are many initiatives on teaching children how to create programs, and developing basic programming skills such as developing algorithms, procedure calls and recursion. Some of these approaches are focused on young children with 4 yearsold average, but very few of these approaches present studies suggesting that children are able to use it properly, and the ones that present such study, mostly do not evaluate the children's results in the process, and none of them with the same focus on toddlers presented a quantitative analysis to test the hypothesis. Considering this fact, this research investigates if preschoolers are able to develop algorithms, and if they develop programming skills such as developing algorithms and debugging when playing programming games.
This project is willing to understand if not yet literate or recently literate children can develop computational thinking skills by being in contact with an application that is architected to stimulate these skills, by smoothingly introducing them to the concept of algorithm. Allowing prescholar children to control a small robot may attract their attention to the programming activity, making it easier to focus on it . Furthermore the demonstration of how age and life experiences affect the tests results is also an important.
To test the main hypothesis that is: "Toddlers can develop algorithmic thinking by playing programming games ", a programming game was developed composed by a tablet application, a robot and challenging levels. The game was designed as an application for smart devices based on some of the most played programming and puzzle games on mobile marketplaces such as LEGO Mindstorms and LightBot. In order to be easily accessed by children, the application was designed to run on a tablet device, and to stimulate the development of algorithms to solve simple logic problems. The tablet application is connected to a robot through Bluetooth and is able to send specific commands to it. It attempts to recreate the idea of the combination of Logo and the floor turtle, abstracting programming languages with a visual language and removing the "umbilical cord" (cable) from the machine with the use of Bluetooth. To become interesting, games need to be challenging, and to represent these challenges game levels were designed to simulate a track on the environment where the robot has to follow the path, guided by the child through the tablet application to be put on the floor, or on a table where it can simulate a track.
During the application's experimentation process, useful data such as score of each attempt of each level, age and gender were collected to be further analysed and used to test the main hypothesis of this work. The data collected was both quantitative and qualitative,
and the results are presented based on charts and observation notes. Considering that most children have a high interest in games and smart devices, the application was expected to be enjoyable while helping them to get in contact with the basic concepts of programming.
This work does not focus on socio demographic variables and to avoid high variability due to such variables the children selected to participate on the survey had to follow a predefined profile: only children with previous experience with smartphones and tablets were selected. As most of the studies often test children from an specific grade, usually they have results on a particular sample with the same age approximately. In this study, a larger age range (4 to 6 years old) was defined in order to provide comparisons between different ages. The specific profile and the differences between ages raised important facts that are detailed in Chapter 3.
Chapter 2 reviews the literature to provide a historical overview and the state of the art of the studies regarding developing programming skills on children. Chapter 3 is focused on detailing how the game was designed and developed, how it was initially tested, which changes were made between versions, and also presents a quantitative analysis on the data collected as the results of the research, and a detailed report of how children interacted with the game. Chapter 4 provides a risk assessment in children interacting with technology and ways to mitigate those risks. Chapter 5 draw the conclusions of the work.
2. State of the art
Since 1980, when the personal computer was an imminent reality, studies that involve children practicing programming skills have been made, and the need of developing young children's computational thinking skills has grown in importance over time. This chapter supplies a historical overview of the studies related to developing digital native children's programming skills and emphasizes the importance of promoting the development of such competences in children nowadays.
The present research is focused on children that are called "digital natives". According to Bennett et al. (2008) a digital native can be defined as any person who was born immersed in digital technology, is familiar with it and interested in it.
A digital native child is able to easily understand and interact with digital devices as a consequence of being constantly exposed to technology. Brazil has not yet designed an educational system to fully satisfy the needs of a digital native student . Although some individual initiatives are being implemented, such as programming, robotic and information technology classes, the whole system is still outdated. In the United States a lot more effort is being made with the advent of Scratch and Alice, but their educational system has not fully changed (PRENSKY, 2009).
According to Prensky (2001), the opposite of digital native, is digital immigrant, which means a person that was born before the delivery of the personal computer, or did not have access to it during their childhood. Prensky affirmed that all the educators from American schools were digital immigrants at the time. Considering this was more than ten years ago, we can assume that not all but, most of our educators are digital immigrants.
Nowadays the gap between digital immigrants and digital natives is not as big as it was ten years ago, because the immigrants are constantly trying to follow the technological innovations (BENNETT, 2012). However the swiftness with which digital natives absorb technology information is much higher and, since the creation of Logo, according to Papert (1980) one of the main objectives of those involved in teaching programming to children is to lower the barriers to programming, in the next section are presented some works related to developing computational thinking skills on children, and the majority of them focus on diminishing the difficulties of programming and making it more accessible.
2.1 Developing computational thinking on children: basic concepts and historical findings
The main concept involved in all studies of computer programming is algorithm, for the aim of every approach is to learn or develop the ability of building algorithms. The classic concept of algorithm is traced back to the early ninth century and is attributed to alKhwarizmi, a philosopher from the House of Wisdom of Baghdad (Iraq nowadays), where the greek works were translated (O'CONNOR; ROBERTSON, 1999). The algorithm concept accepted nowadays was firstly formalized by David Hilbert on "Hilbert's Program" in 1921 (ZACH, 2009).
David Hilbert in the first decade of the 20th century realized and stated that in order to rigorously develop any scientific subject, an axiomatic approach is needed. This assumption raised a series of questions about the foundations of mathematics, so Hilbert proposed to the community the problem of developing a direct consistency proof of analysis not based on reduction to another theory. Although this question was never answered, it raised many ideas and contribute to the field of mathematics (ZACH, 2009).
Later in 1936, Church and Turing proposed different approaches to formally define algorithm, lambda calculus and the Turing's machine concept respectively. Both were able to do it and the problem of defining algorithm was solved, many other approaches were developed, but those became most famous in the computer science field.
Exploring all the historical works related to Hilbert's program is not the focus of this work, but it should provide an informal definition of algorithm enabled by Hilbert's works. Informally, algorithm can be defined as an ordered sequence of nonambiguous steps with a goal to accomplish.
With the introduction of Logo to schools in 1980, a famous application was created, known as the Logo turtle, which was basically a game where a turtle was controlled by the user with Logo commands. The game was popular among computer users, and then following with the idea the floor turtle was created, a little robot connected to the computer to materialize the virtual turtle used on Logo's programs. It enabled children to send simple commands for the machine to execute such as: move to the sides, back and forward, all in Logo language. Papert (1980) explained that children were able to interact with the turtle and make it reflect their own cognitive process. In 1983 Valiant Technology started to ship their commercial version of the floor turtle, named Valiant Turtle (Figure 1). It consisted of a
remotely controlled version of the floor turtle which was a great improvement, and also it had space to plug a pen or pencil on the top of it, which enabled the turtle to make drawings on the surface.
Figure 1: The Valiant Turtle
Source: http://roamerrobot.tumblr.com, accessed in 02/12/2015.
Studies of the benefits of practicing computational thinking at early ages are dated from before the computer was widely used in education. In 1984 Clements and Gullo, in order to understand some cognitive benefits of teaching programming skills to kindergarten children, randomly divided two groups of first graders (6 years and eleven months old approximately) in order to investigate the effects of computer programming on their cognitive development and ability to describe directions, among other aspects. They pretested every subject to assess their current status on the studied abilities. One group used computer programming, and the other used computer assisted instruction (CAI). After the activities of each group, they retested the subjects and although there was not a cognitive measurements difference, the computer programming group was more creative on the second test, and outperformed the CAI group in metacognitive tasks and similar results were found on direction tests.
Other approaches introduce programming to children in similar ways of how computer science students learn, implementing simple algorithms like easy mathematical calculations, building lists and drawing lines for example, far away from their interests. Moreover, programming was introduced without guidance when things went wrong (debugging), and children were not stimulated to deeply understand when things went right (CLEMENTS; GULLO, 1984). According to Resnick (2009) those were the main reasons why some children
could not master the syntax of the early programming languages and were the main challenges to overcome back in the 80s.
To motivate children to get in touch with programming, the LEGO/Logo language was introduced in the late 80s. LEGO/Logo is a language based on Logo designed to control machines built with Lego programmable bricks, sensors and motors. The kids were able to build the machines, connect them with the computer, and program them with LEGO/Logo (RESNICK; OCKO; PAPERT, 1988).
To unleash the robots from the cables connected to the computers the Lego Company 1 introduced the programmable brick, which is a tiny computer embedded on a Lego brick. Joining some blocks people are able to create simple electronic circuits and control motors to automate something, for example: door opening, switching lights on/off, and also moving car toys (RESNICK et al., 1996).
The Lego Company is still investing in the robotics area, and nowadays we can find all sorts of machines made from Lego bricks and motors. The company produced, out of the programmable bricks initiative, a set of products known as LEGO Mindstorms for building 2 robots with Lego bricks and programming them with a visual language built for the product called RCX Code, and the Tufts University also created an environment named ROBOCODE to develop programs for LEGO Mindstorms, there are several other third parties approaches available, including environments that supports Lua, Visual Basic and Java for example.
According to Holmquist (2014), educational robotics can be a great tool for making students engage and learn science, technology engineering and math (STEM) and for elementary students toys can be used to this objective. She conducted a research with fourth grade students (9 10 yearsold) to describe the process of using robotics to facilitate the understanding of STEM concepts. Roamer Too, a reinvention of the floor turtle, was used as tool for the research. This version is also a second generation of the Roamer created in 1983 and mostly used in European schools at the end of the 80s.
Both versions of the Roamer were designed to be independent robots, no need for cables, Bluetooth devices or any other tools commonly required by other approaches. The robots have a commands keypad on top of them that enables users to previously set up their actions and then play. The first version (Figure 2) had only one keypad option, while the
1 Available at http://www.lego.com/ accessed in 02/12/2015. 2 Available at http://mindstorms.lego.com accessed in 02/12/2015.
second generation (Figure 3) is considerably smaller and provides different keypads for users of different ages, also it can communicate with the user to help with debugging and give advice such as remembering to shut it down.
Figure 2: Roamer educational robot
Source: http://www.valianttechnology.com, accessed in 02/12/2015.
The work of Holmquist in 2014 with fourth grade students was conducted in a way that the children involved built a project in which the robot needed to complete using sequential tasks, and also built the set of instructions to lead the robot to complete the tasks. She observed a list of STEM concepts such as forces, motion, programming, designing, and metrics units. The study was a comparison between 2 groups, one used robots, and the other did not. The analysis was qualitative and the activities proposed to the students were the same. The students were presented to a fictional adventure where they needed to rescue a spaceship, and they needed to design the pathway and work together to complete the task. Holmquist used a pretest to assess the previous STEM knowledge of each group, and then conducted a class to teach basic instructions. The full experiment took 5 sessions lasting between 1 and 2 hours of duration. The only difference between the two groups was that when the group with the robot needed to program the robot and design the path, the other group needed only to design the path. As for the results, the group with robots showed a considerably positive difference in engagement, and the results of the post test on STEM concepts were slightly higher in comparison with the group without robots.
Figure 3: Roamer Too, Roamer's second generation
Source: http://www.valianttechnology.com, accessed in 02/12/2015.
Important contributions to the area involve the creation and use of digital manipulatives, which are based on manipulative toys like cuisenaire rods and pattern blocks with digital circuits embedded to add computational and communications capabilities to the regular toys (RESNICK et al. 1998). Lego bricks for example are manipulatives with which people can join blocks and create a form, like a castle or an animal, and also turn lights on and off, make them run across the room among other features.
Using the electronic blocks, a manipulative toy using modified LEGO blocks with electronic systems inside, a research involving 40 children between 4 and 8 years of age found that even the youngest children were interested in playing with the toy. Low levels of frustration were noticed, and playing with it the children were able to build a good variety of systems such as walking cars, flashlights activated by a touch sensor (Figure 4), and lights that are turned on and off by a clap. Most of the children demonstrated signs of using analogies to do it, what was identified as a good approach to facilitate their experience, use analogies to make it easier to understand how to build systems or what systems they are able to build (WYETH; PURCHASE, 2002).
Figure 4: Flashlight with touch sensor built with electronic blocks
Source: Wyeth and Purchase, 2002.
According to Zuckerman et al. (2005) during their experiments involving children working with toys designed to develop systems, in addition to practicing their creativity and building algorithms, children can become more social while playing with each other and they can start to understand some important concepts such as abstraction, iterativeness, modelling, and analogizing. Zuckerman's experiments were based on what they called digital MiMs (Montessori inspired Manipulatives). They developed two toys, SystemBlocks and FlowBlocks (Figure 5), that enabled children to create abstract structures that through analogies made possible to better understand real world systems and operations such as water flow from a bathtub or probability of a storm to happen.
Figure 5: FlowBlocks (left) and SystemBlocks (right)
An interesting study using LEGO Mindstorms was done by Horn and Jacob in 2007. They created a programming language for LEGO Mindstorms robots using manipulatives to control robots, which they named Quetzal. It was considered a good approach to stimulate children to play and discover programming, as it was relatively easy to use and easy to test and debug a program. They used connectible tags to represent commands and form algorithms. Although Quetzal was a good approach, they suggested that the pieces were fragile and probably would raise problems using it inside classrooms, so they created a second language, Tern, to control virtual robots on a computer screen, which was considered an evolution and had better acceptance with the users. It was based on wooden blocks representing the commands, similarly to Quetzal, but they noticed that the wooden blocks from Tern language were easier to connect so they realized that it created a better experience. Figure 6 shows on the left side, the wooden blocks from the Tern language and on the right the connectible tags from Quetzal, which makes it easier to understand why Tern was considered to give a better experience to the users, the connectible tags from Quetzal were more delicate on the joining dots, requiring more motor coordination to use.
Figure 6: Tern (left) and Quetzal (right)
Source: Horn and Jacob, 2007.
In 2009 an experiment was made by Horn at an exhibit at the Boston Museum of Science, where he put people in contact with two approaches to learn programming moving robots: the first one was through tangible manipulatives using the Tern language, and the second one was with a visual language on a mice based application. The experiment was focused in comparing the two approaches to understand the differences between them in some aspects such as learnability, engageability, collaborativeness, focus on the child and other aspects. The results shown that the first approach performed better than the second one in most of the aspects studied, on the other ones the two approaches tied. It suggested that
manipulatives tend to be more effective when trying to learn and practice programming than micebased applications (HORN et al. 2009).
Another research made in 2009 by Thomaz and associates used LEGO Mindstorms to introduce robotics and programming to Brazilian digitally excluded children. They developed a software that was used as a programming interface with different levels of difficulty, so that programming could be introduced gradually to the students. The research was performed with third and fourth graders (8 to 10 yearold), and the children were able to "learn by doing" robotics, as they assembled their LEGO robots. After assembling they were put into a challenge that needed programming, and then they used the software called RoboEduc to 3 create algorithms and send the instructions to the robots (THOMAZ et al. 2009). RoboEduc provided 5 different levels of programming, starting with visual icons, and increasing the complexity to written commands to control a specific motor for example. Figure 7 shows levels 1, 3 and 5 of complexity, level 1 provided a set of commands represented by icons, level 3 let the user start to code with a simple language using some commands in native language, and the level 5 accepted a more complex language, similar to C. The main results observed were the great engagement showed by the children, and some feedbacks given by the teachers involved in the process, that this approach revealed to be a great tool for digital inclusion.
Figure 7: RoboEduc Level 1 (left), Level 3 (center), and Level 5 (right)
Source: Thomaz et al., 2009.
After the invention of the programmable brick, the Logo team created an innovative approach to teach programming for kids that was Logo Blocks, unifying concepts of Logo programming language and the idea of joining LEGO bricks. Figure 8 exemplifies how the
coding is done with the bricks concept, at the left a commands palette and the right side was reserved for developing. In 2006 as a project of the Lifelong Kindergarten Group at the MIT Media Lab, Scratch was built based on the idea of Logo Blocks but adding a collaborative 4 platform to develop and share multimedia content on the internet such as games, presentations and animations (TEMPEL, 2012).
Figure 8: LogoBlocks user's interface.
Source: Kelleher and Pausch, 2005.
Although Scratch enables simple sprites (two dimensional figures to simulate a character moving) setup and programming, like having a cat walking through a two dimensional plane to parallel programming with multiple threads, the collaborative platform is one of its key features. According to Resnick, et al. (2009) small multinational online groups are being formed by children from all ages, they simply like one another's project, ask to help, and then any new ideas can come out. An example Resnick and associates retrieved from the Scratch community was from a 15 yearold British girl that started a project of full animated sprites, she started to encourage others to use her sprites, and then another 10 yearold British girl asked if she could help providing some backgrounds for the sprites, and they started to collaborate, and also called themselves "Mesh Inc.", a company to build games. After some time, a 14 yearold boy from United States asked to join Mesh Inc.
claiming to be a good programmer; later on an Irish 11 yearold boy also asked to join saying that he was good in side scrolling feature. This group formed by 3 different nationalities, different skills, all available through web communication, formed an active community what is very positive, children can interact socially, study design, programming and particular concepts that will only be showed to them at college or equivalent.
Scratch's community grows continuously, and by the end of 2015 more than 11 million projects will have been shared on the platform, it is used in more than 150 countries and is translated to 40 languages, which considerably contributes to growth. Figure 9 shows Scratch's main interface and it is possible to identify the similarities with LogoBlocks, the left side with the commands palette, in the middle a developing area, and at the right side a debugging area with a palette for building scenarios at the bottom.
With some similarities to Scratch more recently in 2010 Greenfoot was released, a 5 platform that provides the practice and learning concepts of object oriented paradigm by programming Java code to build games and other sophisticated applications (FINCHER et al. 2010). Greenfoot is a useful tool for adolescents, it provides an environment to develop complex applications, but it is not focused on young children, and requires some experience with writing code, more appropriate for high school students.
Figure 9: Scratch interface
Source: Resnick, et al. (2009)
Scratch first contact is aimed for children with the average of 7 years old, when they are already literate. Coding with blocks and these kinds of language are limited for people who are able to read, for that matter an association between the Lifelong Kindergarten group (MIT), the DevTech Research Group at Tufts University and the Playful Invention Company developed ScratchJr (Figure 10), a tool based on Scratch but designed for children between 5 and 7 yearsold.
According to Flannery et al. (2013) the ScratchJr project started with experiments on the Scratch platform, presenting it to children of different ages and analysing their interactions with the platforms. When letting four and five yearolds of the same school arranged in groups to have lessons of Scratch's functionalities and skills accompanied by some of their teachers, it was possible to gather data to create ScratchJr's first interface and main features (Figure 10).
Figure 10: ScratchJr interface
Source: Flannery et al. (2013)
Following Scratch's idea, the green flag represents start, and the red block or button means stop, in Figure 10 it is possible to identify how ScratchJr simplified the interface providing only necessary features, at the bottom the development area, composed of a operations palette (turn to sides, run, jump) and a lower area reserved for programming, the left panel is a sprites pallet that enabled the user to compose the environment with some actors, and the panel from the right options for debug were provided with the green flag and the red button to start and stop debugging.
This experiment enabled the creation of a prototype that was tested with children between 5 and 7 yearsold. The alpha test encountered some barriers, clearly illiteracy was a problem, with most of the commands based on text, children that were still learning to read had troubles with it, also some numeric operations that were not yet introduced revealed to be problematic causing programming to be very difficult. These results led them to improve SratchJr's interface and develop the concept of cards, visually more acceptable for younger children and when applied in a semistructured project was more effective on kindergarten students.
Figure 11: A kindergartener project working on a premade environment (left), a project based on a
story by two kindergartners (right).
Source: Flannery et al. (2013)
While refining ScratchJr solution Flannery and her associates could collect many examples of projects children from 4 to 7 years old were able to work on. Their activities were more commonly divided into two subgroups, those who wanted to program actors on an specific scenario, and those who wanted to build a scenario and then refine some of its actors behaviours. These observations are exemplified on Figure 11, where a kindergartener familiarized himself with the presented scene, and started to add behaviour to its actors (left), and a couple of students who were creating a particular story and practiced programming with some of the created actors.
Considering ScratchJr as one of the newest and most popular solutions, with the lowest learning curve to programming skills, the next step into this line of work is to find out how to lower the curve even more. The next chapter introduces the game developed that tries to lower the curve to better prepare children to interact with more complex applications.
Figure 12 summarizes the timeline of the most relevant work and important products related to introducing computational thinking to children starting from late 60s until more recent works. This section provided a historical overview and also a review of the most common approaches used nowadays for making children familiar with programming. The number of solutions made for this kind of initiative is massive, since it started more than 40 years ago and the interest of researchers only grew since then. For this reason the next section of this work exposes a taxonomy presented in 2005 that tries to categorize all kinds of approaches of the area.
Figure 12: Research on introducing computational thinking to children timeline
2.2 A taxonomy for approaches to introduce children to programming
An interesting survey was made by Kelleher and Pausch in 2005 categorizing most of the attempts to ease the programming learning process. They created a taxonomy that divided all the approaches into two large groups: Teaching systems, and Empowering systems. The first one tries to teach programming to develop skills of the learner, and the second one is to use programming for some reason in the future.
Kelleher and Pausch analyzed over 70 different approaches that would make programming easier, the taxonomy is useful to categorize new approaches, and it will be briefly described in this section. In order to create an approach that aims to develop computational thinking on young children, it is required to understand most of the strategies used to make programming more accessible to people, a summary of the taxonomy is presented in the next subsections with example of the approaches related to the categories.
2.2.1 Teaching Mechanics of programming
The category that probably contains the majority of the approaches towards learning to code, believes that syntax and code style are the hardest things to learn when a person starts to develop programs, and focuses on lowering the barriers to learning these aspects. Some approaches are centered on how to express programs and making it easier to communicate
with machines, lowering the complexity of a programming language, for example, is one of the strategies. Some languages like BASIC, Blue language and JuniorJava were based on other more complex languages, also, some programs help developers to code by making them avoid syntax errors. Another changing approach is to create new languages and/or paradigms that focus on how instructions can be combined and organized to create more complex programs. There are several examples of approaches for this subgroup, like Pascal, a language created to be taught in classes when the only languages available were FORTRAN, COBOL and Algol. Pascal is a structured language. Smalltalk, considered to be the first object oriented language, is a good example of a language that introduced a new paradigm, that made easier to create more complex programs.
An approach, and the most relevant for this presented work, is lowering the barriers to programming by avoiding typing and, in some cases, reading code. The initiatives of this subgroup focuses on creating visual languages, physical objects, toys, more tangible experiences that make easier to learn how to develop programs. These approaches are able to lower the barriers for very young children to start developing algorithms and be able to start developing more complex programs while still in childhood beyond the approach presented in the next chapter, other examples are Logo Blocks, Electronic Blocks, Scratch, Alice, Curlybot
and Tortis .
6 7
2.2.2 Social learning
All the approaches of this category and its groups are focused on allowing children to develop skills by working together. There are two ways of collaboration: sidebyside and through network interaction, probably, all the tangible user interfaces are classified into sidebyside social learning such as the previously cited tangible manipulatives Tern and Quetzal, LEGO programmable bricks and AlgoBlock, a set of tangible manipulatives that represents a physical programming language created on the mid 90s ( SUZUKI; KATO, 1995). Figure 13 shows children practicing programming sidebyside using AlgoBlock. 6 A robot that can record motion and replay it, more information available at http://tangible.media.mit.edu/project/curlybot/ accessed in 02/12/2015. 7 A device to ease the communications between young children and a robot turtle available at http://dspace.mit.edu/handle/1721.1/6224 accessed in 02/12/2015
Figure 13: Children sidebyside practicing programming with AlgoBlock
Source: Suzuki and Kato (1995)
Although the survey indicated that an approach can only be classified into one category, Scratch was classified into Teaching mechanics of programming, but if you consider that one of the main interesting features of the platform is the network experience, and what children from all over the world are creating using it, maybe, it can be classified into this category too, because it provides a network interaction between users, and the context of programming for children may have considerably changed since 2005.
2.2.3 Providing reasons to program
This category focuses on providing a starting point for beginners since usually they do not understand the complexity of programming, or how to start, or even what they can achieve with it. Reinforcing the idea that one approach can be categorized in more than one category, the game presented on the next chapter can be classified into the previous categories and also in this one, because it provides tools to develop the fundamentals of programming mechanics, it can be played with friends sidebyside and it also provides a starting point for beginners.
Approaches of this category can be educational software or games that provide puzzles or challenges that involves fundamental concepts of programming or actual coding to
achieve certain goals for example on The Incredible Machine from Sierra Entertainment, the 8 user changes pipes position to provide water for houses. Children can gradually develop their skills while facing harder challenges. Another example is Robocode where programmers9 write java code to control a simulated battle robot and then test them into an arena against other programmer's robot.
2.2.4 Empowering Mechanics of programming
This category is not focused on preparing users to program on general purpose languages, but to understand the importance of programming to develop the skills to be used in specific domains. The approaches classified into this category are basically divided into two subgroups, the first one advocates that coding is too difficult and tries to avoid it following certain strategies, and the second one tries to improve existing languages or ways of interacting with existing languages.
One strategy to avoid coding is to provide an educational software where the user can interact with the interface and practice some programming concepts focusing on a certain domain, Programming by rehearsal was one of the approaches of this subgroup, created in 1984, it consisted into a program that allowed users to build small systems like clocks, chronometers only by moving visual components that communicate with others. Another strategy is to allow users to create programs or simulations using only conditionals and actions. AgentSheets created in 1991 at University of Colorado is an environment that10 allowed the user to create simulations based on conditionals and actions, Figure 14 shows a program that simulates traffic lights built with AgentSheets. It contains 2 rules: the first one is to every 3 seconds execute the second rule that is change color following the sequence green, yellow, red. 8 Available at http://www.sierragamers.com/aspx/m/660032 accessed in 02/12/2015. 9 Available at http://robocode.sourceforge.net/ accessed in 02/12/2015. 10 Avalable at http://www.agentsheets.com/ accessed in 02/12/2015.
Figure 14: Traffic lights built with AgentSheets
Source: Kelleher and Pausch, 2005.
A third strategy the user does not build any program, but changes its behaviour by choosing its specific actions. The Pinball Construction Set , for example, was created in 11 1983 and it is a software program that allows the user to create a pinball game by placing each component on the screen, but also define the behaviour of the ball when getting in contact with each component.
The second subgroup focuses on creating languages that are easy to teach, and prepare their programmers to write in languages of general purpose. Languages designed to become more understandable usually applied common expressions used by people on their natural
environment. Created in 1981 COBOL (COmmon Business Oriented Language) was
designed to be written by programmers and read by management. Another language categorized into this subgroup is Logo, previously defined, created for children.
Another approach was an environment with a different way to code by replacing the typical text editor with different tools, for example Squeak Etoys created in 1997 where the 12 novices can edit the behaviour of certain premade objects. Figure 15 shows a printscreen of Squeak, and the boxes on the upper left are the places programmers can edit the code. Figure 15: Squeak Etoys printscreen Source: Kelleher and Pausch, 2005. 2.3 Approaches that influenced directly the game developed
A very popular related initiative that started as a webbrowser game in the last decade, and was lately upgraded for a multiplatform approach, is LightBot: Programming puzzles (Figure 16), where the user guides a robot with simple commands with the goal of lighting blue floor spaces into yellow ones. It gradually puts users in contact with some programming core concepts such as basic algorithm development, procedure calls, and recursiveness.
Figure 16: LightBot
Source: http://lightbot.com/ (Accessed on 02/12/2015)
The LightBot initiative divided the game in two main versions, a common version designed for public in general, and a junior version designed for children between 4 and 8 years old. Code.org , a nonprofitable organization with the goal of bringing programming 13 classes to schools, recognizes LightBot as a good approach to introducing children to programming concepts.
Most of previous approaches are not as focused on developing algorithms as LightBot, and not all of them, LightBot included, are able to get children further interested in it, probably because of lacking a physical representation of the algorithm execution, from the presented approaches the Valiant turtle and the Roamer are the only ones that showed such attributes.
The main product that inspired this work was the Cubetto (Figure 17) from primo.io initiative, which consists of a robot with a simple electronic board and a cubicle form.
Figure 17: Cubetto
Cubetto is controlled by a wireless wooden board (Figure 18) that provides, what primo.io initiative calls, a physical programming interface, and with a set of command bricks, enables children to develop and debug basic programs. It presented the main ideas of LightBot and the Roamer, but it was not available to be used in this research, as will be further discussed on the next chapter.
Figure 18: A physical programming interface
Source: https://www.kickstarter.com/projects/1039674461/
primoteachingprogramminglogictochildrenage4 (Accessed on 02/12/2015)
2.4 Chapter summary
This chapter presented a literature review collecting some historical works made on programming for children, and more recent studies including the areas of robotics and smart tangible devices. It also summarized a taxonomy that tries to categorize all approaches on teaching children how to program. The next chapter introduces the approach used on this work to introduce young children to programming, the experiment methodology and the main findings of the research.