Narrative Coding
Narrative coding is a learning methodology combining storytelling and classroom programming practices to foster children's computational thinking (CT) by proposing to create projects with personal meanings [1, 2]. Storytelling and programming can mutually support each other, making digital coding accessible to young learners [3, 4].
The integration of computational thinking (CT) into education has expanded beyond traditional STEM* subjects, with a growing emphasis on incorporating CT into diverse fields, leading to the development of the STEAM framework [5, 6]. The inclusion of arts and humanities in STEAM acknowledges the importance of creativity in fostering innovation. Overall, this interdisciplinary approach aims to equip students with a well-rounded skill set applicable in all domains, emphasizing the universality and relevance of CT in education [7, 8].
Computational Thinking
Computational Thinking (CT) is a form of critical thinking that involves reasoning skills and processes to solve complex problems by applying concepts from computer science [10]. In an information-based society, CT is considered a fundamental skill for young learners, enabling the abstraction of problems and the creation of automated solutions [11]. It encompasses problem formulation, data analysis, solution exploration, and the generalization of problem-solving processes to different situations [12]. Moreover, CT is often related to programming, an extension of writing [13, 14]. Learning to program not only imparts coding skills but also encourages creative problem-solving [15]. Children can learn to solve problems and express ideas using different digital languages through programming [16].
To understand computational thinking more closely, it is essential to consider seven basic concepts in programming [9]:
- Sequences. A fundamental concept in programming lies in expressing a specific activity or task as a sequence of individual steps or instructions that can be executed by a computer. A sequence of programming instructions precisely outlines the desired behavior or action to be produced.
- Loops. Loops serve as a mechanism for executing the same sequence of instructions multiple times.
- Events. Events, where one occurrence triggers another, constitute a fundamental component of interactive media (ej., a start button initiating a music video).
- Parallelism. Parallelism refers to sequences of instructions occurring simultaneously or at the same time.
- Conditionals. Conditionals in programming refer to the ability to make decisions based on certain conditions (the if command); using conditionals allows for expressing multiple outcomes.
- Operators. Operators play a crucial role in programming by providing support for mathematical, logical, and string expressions. They empower programmers to perform various numeric and string manipulations, enhancing the versatility and functionality of the code.
- Data. Data encompasses the processes of storing, retrieving, and updating values.
Children can go beyond passive technology consumption and actively design, create, and invent programs using digital languages. Programming is recommended for all ages as it positively impacts intellectual growth [17, 18, 19]. New digital languages, programming, and robotics applications (such as tangible block-based interfaces) have emerged to foster CT skills in young children, making these concepts more accessible and less abstract. The evolution of educational technologies is transforming the traditional approach to programming education, opening up opportunities for young learners to develop computational thinking skills [12].
Different processes (Table 1), such as algorithmic thinking, sequencing, abstraction, decomposition, generalization and debugging, constitute computational thinking skills [13].
Table 1 - Computational thinking skills discussed in literature.
CT SKILL | DEFINITION |
Algorithmic thinking & Sequencing | Algorithmic thinking is the capacity to think in terms of sequences and rules, offering a problem-solving approach or a means of comprehending various situations [8]. It involves sequencing and designing the steps required to address problems [20] and is defined as the process of devising a step-by-step solution [21]. Furthermore, sequencing ability, which involves planning the correct order of actions in an algorithm, is considered integral to algorithmic thinking within the broader framework of computational thinking [21]. |
Abstraction | Abstraction is the process of eliminating less relevant details by concentrating on the essential features needed to identify the desired properties [22]. It involves the skill of extracting or removing characteristics from an object or entity to simplify it to a set of fundamental attributes. This skill encompasses the ability to determine which information about an entity or object to retain and what to disregard [23]. |
Decomposition | Decomposition involves the process of breaking down problems into smaller and simpler parts that are easier to comprehend and address [23, 24]. The primary function of decomposition is to identify subtasks and delineate the necessary objects and methods in each decomposed task to solve a problem effectively [25]. |
Generalization | Generalization is a problem-solving approach based on previous experiences [26]. It involves simplifying complexity by substituting multiple entities that serve similar functions with a single construct [27]. The skill of formulating a solution in generic terms, allowing it to be applied to different problems, is integral to generalization [21]. |
Debugging | Debugging involves identifying and addressing errors in problematic sections [9]. It is the skill of recognizing when actions do not align with instructions and the ability to rectify errors [21]. Debugging can be described as the stepwise refinement of an almost unsatisfactory solution into a more satisfactory one. In programming, this evolution is prompted as much by a change in the problem specification as by an error in the initial solution [28]. |
Digital Languages
Traditional programming education often started with languages like Java, Python, or C, but contemporary educational technologies are transforming this process, making programming and computational thinking more accessible for young learners [12].
While different graphical applications are popular for older children, research suggests that even young children can grasp fundamental programming concepts, such as sequencing and cause-and-effect relationships [29, 30, 31]. To promote computational thinking skills at the kindergarten to elementary levels, a new wave of programming and robotics applications has surfaced in recent years, including robots, visual block-based programming software, electronic blocks, storybooks with stickers, and devices controlled by buttons [12]. These artifacts provide a diverse and interactive learning environment for young children exploring computational thinking and programming [29].
Tangible Interfaces
Focusing on young learners, block-based and tangible tools play a crucial role in reducing the need for extensive reading and syntax learning, facilitating immediate command execution, shortening feedback loops, and providing additional sensory input/output and immediacy [30, 12, 2].
There are different types of tangible interfaces, such as physical buttons on the top of a robot, interfaces where commands are codified by colored materials or blocks scanned by a robot, or hybrid interfaces that allow children to program using both tangible blocks and on-screen icons [32].
Young children's incorporation of body gestures during programming correlates with enhanced computational thinking outcomes [33]. The presence of physical enacting agents allows learners to witness the actual movement and consequences of their programs in the physical world, providing immediate visual feedback. This tactile approach makes programming activities more engaging for young learners seeking varied sensory experiences [2]. Moreover, tools with tangible elements enable the development of fine motor skills and hand-eye coordination while fostering collaboration and teamwork among young children [29, 34].
References
[1] Land, M. H. (2013). Full STEAM ahead: The benefits of integrating the arts into STEM. Procedia Computer Science, 20, 547-552.
[2] Kafai, Y. B., & Burke, Q. (2014). Connected code: Why children need to learn programming. Mit Press.
[3] Thompson, R., & Tanomoto, S. (2016). Children's Storytelling and Coding: Literature Review and Future Potential. In PPIG (p. 6).
[4] Dietz, G., Le, J. K., Tamer, N., Han, J., Gweon, H., Murnane, E. L., & Landay, J. A. (2021, May). Storycoder: Teaching computational thinking concepts through storytelling in a voice-guided app for children. In Proceedings of the 2021 CHI Conference on Human Factors in Computing Systems (pp. 1-15).
[5] Daugherty, M. K. (2013). The Prospect of an" A" in STEM Education. Journal of STEM Education: Innovations and Research, 14(2).
[6] Robelen, E. W. (2011). STEAM: Experts make case for adding arts to STEM. Education week, 31(13), 8.
[7] Wing, J. M. (2008). Computational thinking and thinking about computing. Philosophical Transactions of the Royal Society A: Mathematical, Physical and Engineering Sciences, 366(1881), 3717-3725.
[8] Yeni, S., Nijenhuis-Voogt, J., Hermans, F., & Barendsen, E. (2022, October). An Integration of Computational Thinking and Language Arts: The Contribution of Digital Storytelling to Students’ Learning. In Proceedings of the 17th Workshop in Primary and Secondary Computing Education (pp. 1-10).
[9] Brennan, K., & Resnick, M. (2012, April). New frameworks for studying and assessing the development of computational thinking. In Proceedings of the 2012 annual meeting of the American educational research association, Vancouver, Canada (Vol. 1, p. 25).
[10] Wing, J. M. (2006). Computational thinking. Communications of the ACM, 49(3), 33-35.
[11] Yadav, A., Mayfield, C., Zhou, N., Hambrusch, S., & Korb, J. T. (2014). Computational thinking in elementary and secondary teacher education. ACM Transactions on Computing Education (TOCE), 14(1), 1-16.
[12] Ching, Y. H., Hsu, Y. C., & Baldwin, S. (2018). Developing computational thinking with educational technologies for young learners. TechTrends, 62, 563-573.
[13] Grover, S., & Pea, R. (2013). Computational thinking in K–12: A review of the state of the field. Educational researcher, 42(1), 38-43.
[14] Resnick, M., Maloney, J., Monroy-Hernández, A., Rusk, N., Eastmond, E., Brennan, K., … & Kafai, Y. (2009). Scratch: programming for all. Communications of the ACM, 52(11), 60-67.
[15] Resnick, M. (2013). Learn to code, code to learn. EdSurge, May, 54.
[16] Sullivan, A., Elkin, M., & Bers, M. U. (2015, June). KIBO robot demo: engaging young children in programming and engineering. In Proceedings of the 14th international conference on interaction design and children (pp. 418-421).
[17] Horn, M. S., Crouser, R. J., & Bers, M. U. (2012). Tangible interaction and learning: the case for a hybrid approach. Personal and Ubiquitous Computing, 16, 379-389.
[18] Papert, S. (1980). " Mindstorms" Children. Computers and powerful ideas. New York, NY: Basic Books, Inc..
[19] Resnick,M. (2002). Rethinking learning in the digital age. In G. Kirkman (Ed.), The global information technology report: Readiness for the networked world (pp. 32–37). Oxford, England: Oxford University Press.
[20] URL-1. (2020). https://community.computingatschool.org.uk/files/8221/original.pdf Computational thinking.
[21] Selby, C. C. (2014). How can the teaching of programming be used to enhance computational thinking skills? (Doctoral dissertation, University of Southampton).
[22] CSTA (2016). CSTA K-12 Computer Science Standards Revised.
[23] Wing, J. (2011). Research notebook: Computational thinking—What and why. The link magazine, 6, 20-23.
[24] National Research Council. (2010). Report of a workshop on the scope and nature of computational thinking. Washington, DC: The National Academies Press.
[25] Barr, V., & Stephenson, C. (2011). Bringing computational thinking to K-12: What is involved and what is the role of the computer science education community?. Acm Inroads, 2(1), 48-54.
[26] Csizmadia, A., Curzon, P., Dorling, M., Humphreys, S., Ng, T., Selby, C., & Woollard, J. (2015). Computational thinking-A guide for teachers.
[27] Thalheim, B., & Düsterhöft, A. (2000). The use of metaphorical structures for internet sites. Data & Knowledge Engineering, 35(2), 161-180.
[28] Rich, C., & Waters, R. C. (1981). Abstraction, inspection and debugging in programming.
[29] Bers, M. (2008). Blocks to robots: Learning with technology in the early childhood classroom. New York, NY: Teachers College Press.
[30] Fessakis, G., Gouli, E., & Mavroudi, E. (2013). Problem solving by 5–6 years old kindergarten children in a computer programming environment: A case study. Computers & Education, 63, 87-97.
[31] Kazakoff, E., & Bers, M. (2012). Programming in a robotics context in the kindergarten classroom: The impact on sequencing skills. Journal of Educational Multimedia and Hypermedia, 21(4), 371-391.
[32] Bakala, E., Gerosa, A., Hourcade, J. P., & Tejera, G. (2021). Preschool children, robots, and computational thinking: A systematic review. International Journal of Child-Computer Interaction, 29, 100337.
[33] Almjally, A., Howland, K., & Good, J. (2020, June). Investigating children's spontaneous gestures when programming using TUIs and GUIs. In Proceedings of the interaction design and children conference (pp. 36-48).
[34] Lee, K. T., Sullivan, A., & Bers, M. U. (2013). Collaboration by design: Using robotics to foster social interaction in kindergarten. Computers in the Schools, 30(3), 271-281.