There is more than one reason for a child to learn to program a computer
By: Steven Floyd
Many parents, teachers, administrators and policy makers all around the world are exploring the potential of having young children learn to program a computer. Computer science is an exciting field of study, one that impacts, and is impacted by, many different economical, social, and technological areas of our lives. Because of this, the question “Why should children learn to code?” can be answered in a number of ways.
The reasons listed in this article are meant to help educators consider the specific goals and objectives of their own coding initiatives as they balance the strengths, weaknesses and needs of students within their schools and communities. Coding is an authentic, powerful and rich context that can help meet a variety of educational objectives. Consider your students’ needs and the objectives of your coding activities as well as how they align with the following approaches and views.
Why children should learn to code… Becoming epistemologists
An epistemologist is someone who studies how we know things and how we think. In his 1980 book Mindstorms, Seymour Papert outlined some practical aspects of programming in the classroom, but he also focused on the ways that coding can provide students with new ways of learning, thinking, and growing, both cognitively and emotionally. Papert believed that computer programming involved students teaching the computer how to think, and in doing so, the student would begin to consider how they themselves think.
Papert uses the term “mechanical thinking” to describe the type of thinking that students are introduced to when programming in LOGO, a programming language that he helped develop at MIT. He emphasises that by introducing students to mechanical thinking, they suddenly become aware that there is such a thing as a “thinking style”, and they begin to consider other thinking styles that might exist, as well as how and why they might choose between styles.
So, what does this mean for our students? It means that as students participate in coding activities, we should encourage them to engage in this metacognitive work. They should think carefully about their thought processes, their assumptions and their mistakes. As students program their classmate to walk to the classroom door, ask them how they can communicate clearly and precisely. Ask the classmate who is being “programmed” how they interpret the instructions and how they determine whether or not an instruction is perfectly clear and precise. As students plan a coding project, ask them to consider whether or not they have included all the instructions. Remind them that they can’t “be general” with the computer, they have to provide specific instructions in the correct order. Ask them if there are other situations in life that require this kind of thinking. Ask them if there are alternatives to this kind of thinking that might be more appropriate in specific areas of their life.
Why children should learn to code… Becoming computational thinkers
Computational Thinking (CT) is a concept that has been discussed for decades, but that gained popularity as a result of Jeanette Wing’s article published in 2006. CT includes the “thought processes 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” (Wing, 2011). Wing believed that to “reading, writing, and arithmetic, we should add computational thinking to every child’s analytical ability” (Wing, 2006, p. 33).
So, what does that mean for our students? It means that as our students engage in coding, we should encourage them to learn much more than just coding syntax and technical specifications. We should encourage them to develop the thought processes and problem-solving techniques that computer scientists use. Students should learn to appropriately sequence instructions and use decomposition and abstraction to solve large, difficult problems. Students should think carefully about how they will test their programs to ensure that they’ve found all of the “bugs”.
Why children should learn to code… Becoming creative participants in a digital world
As our students develop as computational thinkers, coding also provides a context in which they can develop as computational creators. Mitch Resnick, a researcher at MIT and the lead developer of the children’s programming language Scratch, explains:
“In today’s society, digital technologies are a symbol of possibility and progress. When children learn to use digital technologies to express themselves and share their ideas through coding, they begin to see themselves in new ways. They begin to see the possibility for contributing actively to society. They begin to see themselves as part of the future”
(Resnick, 2017, p. 50-51).
Yasmin Kafai, a researcher at the University of Pennsylvania encourages educators to see computer programming as something much larger than simply an abstract discipline, it is in fact a way to “make” and a way to “be” in the digital world. She believes that coding can be seen as a social practice that has both personal value and a value for sharing with others.
So, what does this mean for our students? It means that as we teach coding, we should ensure that we balance the technical and syntactically complex nature of programming a computer with the creative and social dimensions. We should help students understand the important foundational concepts of coding, but also provide them with opportunities to build on these foundations in creative and expressive ways. It also means that we should encourage social coding practices of paired programming as well as a sharing of projects with classmates, the school and the wider community.
Why children should learn to code… Becoming experimental and exploratory learners
While many students are “learning to code” in order to create final products, another approach involves children “coding to learn”. When students code to learn, they use computer programming tools as a means to investigate phenomena or develop an understanding of complicated concepts. As Gadanidis and Caswell explain in Computational Modelling in Elementary Mathematics Education:
“When children are working in a coding environment, they have the opportunity to explore an activity introduced by the teacher, but they also and importantly have the opportunity to ask their own what-if-questions and use code to model and investigate variations and extensions” (Gadanidis & Caswell, 2018, p. 2).
So what does this mean for our students? It means that coding can be used as a tool, integrated into a wide variety of subject areas, in an effort to help students experiment with and learn about a wide variety of concepts. Coding activities in mathematics, science and even art class can allow for a type of experimental and exploratory learning to take place. Students can reverse engineer mathematical models or replace the values of variables in order to understand the impact of each component. They can also create art or music and develop an understanding of the principles and elements that constitute an artistic piece.
Why children should learn to code… Becoming Employed
It’s no secret that there is an increased demand for workers with computer programming and digital skills. The Information and Communications Technology Council explains that there is already a shortage of highly skilled information communications technology (ICT) professionals. The top five ICT occupations with current labour market shortages include:
- computer and information systems managers;
- computer engineers and information systems managers;
- database analysts and database administrators and
- computer programmers and interactive media developers.
Considering the growth of computer programming related technologies such as Artificial Intelligence, Machine Learning, the Internet of Things and increased automation (including our cars), it is expected that students with coding skills will be able to find rewarding work in the field. In addition, just about every other field of work is being impacted by software and computer programming technologies. As a result, knowledge of coding practices may help all of our students in their careers, even those who enter non-ICT fields.
So what does this mean for our students? It means that as we integrate coding into our classrooms, we should ensure that we allow students to explore potential careers in the field, as well as how other fields of work are being impacted by coding and digital technologies. It means that we should provide opportunities for students to work on large project development, and on projects that connect coding to their own hobbies and interests. It also means that we should be open to any and all applications of coding in schools, and that we should find ways of incorporating coding activities into all subject areas. Specific examples include students exploring geocomputation concepts or digital methods of preserving historical documents and artifacts. If coding and digital technologies are impacting all fields of work, then it follows that our schools reflect this reality by incorporating applicable and related coding concepts into all subject areas.
Gadanidis, G. & Caswell, B. (2018). Computational modelling in elementary mathematics education. KNAER Mathematics Knowledge Network White Paper. Retrieved from http://mkn-rcm.ca/wp-content/uploads/2018/05/MKN-white-paper2-May-2018.pdf
Information and Communications Technology Council. (2017) The next talent wave: Navigating the digital shift – outlook 2021. Retrieved from https://www.ictc-ctic.ca/wp-content/uploads/2017/04/ICTC_Outlook-2021.pdf
Kafai, Y.B., & Burke, Q. (2014). Connected code: Why children need to learn programming. Cambridge, MA: MIT Press.
Papert, S. (1980). Mindstorms: Children, computers, and powerful ideas. New York, NY: Basic Books.
Resnick, M. (2017a). Lifelong kindergarten: Cultivating creativity through projects, passions, peers, and play. MIT Press.
Wing, J. (2006). Computational thinking. Communications of the ACM, 49(3), 33–36.
Wing, J. M. (2011). Research notebook: Computational thinking—what and why? The link. Retrieved from https://www.cs.cmu.edu/link/research-notebook-computational-thinking-what-and-why.