The Gap Between Computational Thinking and Computer Science Education in K-9
Why Do People Advocate for Computer Science Education?
Former President of the United States Barack Obama said, “We need young Americans like you to master the tools and technology that will change the way we do just about everything” (Code.org, 2013, 0:20). This is a famous message from Obama to all students to kick off the Computer Science Education Week in 2013. He encouraged all students, regardless of gender or geography, to study computer science (CS) because it is not only their future but also the country’s (Code.org, 2013). Justin Trudeau, the Prime Minister of Canada, also said, “Every job we are going to do in the future will rely on technology and be benefited if you are powerful users of the technology that surrounds us” (Code.org, 2022). Technology is the key driver of economic growth and human progress for all countries (Broughel & Thierer, 2019). The U.S. Bureau of Labor Statistics also projected that from 2020 to 2030, computer and information technology occupations, which encompass all jobs linked to CS, are expected to grow at a rate 13% faster than the average for all occupations (2021). Thus, with the rapid development of technology, not only Obama and Trudeau, many world leaders, celebrities, politicians, and educators around the world also advocate for CS education to expand human resources in the technology field.
Although careers in technology field are in high demand, technology is not the future career path for all children. In 2020, the tech industry in the United States employed approximately 5.2 million people (Alsop, 2021). The number of employed tech workers is expected to reach about 6 million by 2030 (Alsop, 2021). However, it only accounts for 3.6 percent of the total workforce in the United States (U.S. Bureau of Labor Statistics, 2021). In other words, for every 10 children, there are 3 to 4 students who will work in the technology field someday. Meanwhile, the purpose of education is to prepare all students for a future career (Foshay, 1991). Why is it necessary to advocate for all children to learn about technology on a deeper level, such as coding, rather than simply utilizing a computer? How do we prepare students for non-CS future careers?
Computer Science education is not only about career guidance. In 2016, K-12 Computer Science Framework Steering Committee argued that “the goal of Computer Science education is to develop computational thinking skills, which refer to the thought processes involved in expressing solutions as computational steps or algorithms that can be carried out by a computer” (K–12 Computer Science Framework, 2016). Thus, the intention of teaching and learning CS for children is to help them develop their computational thinking skills instead of just preparing technology skills for future careers.
Computational thinking is “the thought processes involved in formulating a problem and expressing its solution in a way that a computer—human or machine—can effectively carry out” (Wing, 2017, p. 8). Computational thinking (CT) has four main pillars: decomposition, pattern recognition, abstraction, and algorithm (Wing, 2006). By using computational thinking skills, students can decompose a large problem into smaller and more manageable chunks; they can recognize the pattern for connecting solutions to one another. Students can abstract the problem, hiding unnecessary details to create general solutions for many specific situations. Finally, students also can build algorithms to guide others through the steps to solve a problem in the most efficient ways. Therefore, CT is the skill set for students to solve problems proficiently. All students, not only those who follow the technology industry for their careers, must comprehend computational thinking, a crucial skill set for the twenty-first century (Mohaghegh & McCauley, 2016; Wing 2017; Zhang & Nouri, 2019), in order to be flexible enough to prepare for the fast-paced future (Rahman, 2019).
Computer Science Classes
What do CS classes for students from 6 to 15 years old look like? CS can be taught in a variety of ways such as programming, robotic and even unplugged activities. However, programming, especially game programming, is the most appealing method for most students (Basawapatna, 2010). Indeed, Code.org, one of the most prominent organizations in the U.S. supporting CS for all students, uses coding activities to introduce CS to more than 69 million students worldwide (Code.org statistic, 2022).
The classes I have taught are not an exception. I have been teaching CS through programming to thousands of students over the past seven years, ranging in age from 6 to 15 years old. In my class, I mostly use Scratch to help children learn coding through creating games, animations, simulations, and other software programs. With a user-friendly interface and unlimited creativity, learning programming with Scratch is one of the top platforms for young children to learn CS. Indeed, Scratch is the most popular block-based visual programming language with more than 84 million users worldwide (MIT Lab, 2022). In my classes, students learn how to do a variety of Scratch projects, ranging from basic to advanced. Students learn CS concepts by using them frequently. Therefore, all projects repeat main concepts, such as sequence, loop, condition, and variable. Students usually finish a basic version of a project after one to three classes. By finishing it, students achieve the learning goals of the unit such as introduction or mastery of a concept. Next, students are challenged to respond to feedback and upgrade their project based on criteria they develop. Because their projects become more and more complicated over time, I can clearly see students’ mastery of CS concepts as well as their growth in coding skills. However, I did not have any guidelines or assessments to evaluate how much CT students developed through these lessons. Thus, if the main goal of CS education is to develop students’ CT, my classes might not meet that requirement. There is a need to actively teach, explicitly practice, and assess CT skills in CS classes.
Example of 9-12 Year-Old Students’ Scratch Projects Created in CS Classes
The Gap Between Computational Thinking and Computer Science Education
Coding is only one application of computational thinking (CT). Coding is giving instructions for machines or computers to solve a problem. CT is solving the problem from a computer scientist’s perspective (Wing, 2006). CT often involves coding because coding applies the solutions developed through CT processes to create software to solve problems. Consequently, CT is not equal to CS; CT encompasses much more than learning to code.
While the number of CS classes increases rapidly, there is a lack of a well-defined methodology to teaching CT through CS classes. On only Code.org platform, the number of registrations to learn programming increased 21 times over the last seven years, from 2014 to 2021 (Figure 2) (Code.org, 2022). The funds allocated for CS education in the U.S. also increased seven times over five years, from 9 million dollars by the end of 2015 to 63 million dollars by the end of 2021 (Code.org, 2021). However, if teachers only use programming to teach CS concepts rather than teaching CT, then CS classes become vocational instead of preparing all children with necessary skills for their future. The questions of “what to teach” and “how to teach” have been debated since 2006, when Wing raised awareness about CT education and received substantial agreement within the academic field (Zhang & Nouri, 2019). Thus, to enhance students’ learning about CT skills in current CS classes, there is a need for a review of research to find consensus on CT principles, teaching, and assessment methods.
Students’ Registration to Learn Programming on the Code.org Platform from 2015 to 2021
More importantly, at the same time as introducing CT concepts, Wing (2006) also said, CT “represents a universally applicable attitude and skill set everyone, not just computer scientists, would be eager to learn and use” (p. 33). For example, when people need to plan a party, they need to create a to-do list. That is decomposition. By using the to-do list to organize what to do now and what to do later, they make an algorithm. Another example is a person who does not know how to use a payphone, using their experience on a mobile phone to identify similar patterns and solve the problem. That is how pattern recognition works. As Wing emphasized, the wide application of CT skills in defining and solving daily life problems makes these skills an essential for everyone. However, no research has mentioned how the CT skills learned in CS classes can be applied in students’ real lives. The question of “why to learn” from students’ perspective persists. Thus, the CS classes not only need to teach students using CT skills in CS concepts, the classes must also assist students in connecting those skills to their daily lives.
There is no doubt about the importance of CT education and the current speed of development of CS education worldwide. Despite this, no wide-ranging agreement exists on CT principles, teaching methods, and assessments. There is a gap between CT and CS education that might lead CS education to become mere vocational training rather than a means of teaching more essential thinking skills for students. As a result, in this study, I choose to look at recent studies on CT education for K-9 students to see if there is consensus on “what to teach” regarding CT in the present frameworks and standards as well as from individual instructors’ perspectives. Then, I look at two curricula to see how the current teaching in CS class using Scratch programming language aligns with CT elements. Finally, I review CT assessment research to analyze current methods of evaluating students’ CT skills. Throughout the process, I place a greater emphasis on the practical application of these abilities in the lives of students, a big gap in current research. In detail, I seek to understand: (1) What principles of computational thinking does the curriculum need if it is to prepare K-9 students? (2) How does the curriculum scaffold computational thinking principles into units? (3) In K-9 education, how are computational thinking skills measured through activities in which students construct game projects using the Scratch programming language?
By reviewing contemporary literature, this study will significantly contribute to CT education through CS classes by providing teachers with a clearer picture of what to teach, how to teach, and how to assess what they teach. Acknowledging that CT can be taught in a variety of ways (Bell et al., 2009), this review research will mostly benefit K-9 CS teachers, who use Scratch programming as their primary activity. This study further adds to the current body of knowledge by focusing on the practical application of CT in students’ daily lives. This research will also be useful for students to understand how to apply CT skills outside their CS classes.
This review of research is organized as follows. First, I present my method in selecting literature about CT frameworks and assessments. Second, I give some background about two Scratch programming curricula that I used for inquiry in this study. Third, I describe the findings of my investigation, which include agreement on CT’s definition, CT’s elements, recommendations for enhancing CT skills in current CS classes, and CT skills evaluation methods. I conclude the report by discussing the implications of this study as well as directions for future work.
For this review of research, I used the ERIC (Education Resources Information Center) database as my primary source. ERIC is a large and well-known database that includes educational reports, assessments, and research. I used the NOFT function to narrow the search by only searching these keywords in title, abstract, and keywords parts. The search term was conducted by Boolean logic as follows: NOFT(“computational thinking”) AND NOFT(Computer Science OR coding OR programming) AND NOFT(practices) AND NOFT(elementary OR secondary); NOFT(“computational thinking”) AND NOFT(“Scratch”) AND NOFT(assessment or curriculum). With these search terms, there were 114 results. I read through all the abstracts and selected 18 articles that directly study teaching, learning, or assessing computational thinking for K-9 students.
Another database that I used for this review of research is Google Scholar. Google Scholar is a search engine that allows finding peer-reviewed papers, theses, books, abstracts, and articles from academic publishers, professional organizations, preprint repositories, institutions, and other scholarly organizations. With Google Scholar, I used broader search terms than in ERIC: computational thinking AND computer science AND Scratch. There were more than 66,000 results for this search. I reviewed the five first pages (50 articles) of the result and selected five more relevant sources for my research. My priority for selection is direct mention of developing or assessing computational thinking through teaching and learning Scratch programming.
Finally, I drew on knowledge from my academic advisor, Professor Webb, to solicit more in-depth sources about computational thinking research. His expertise includes assessment, computational thinking, and also designing game-based curricula to develop computational thinking skills. Professor Webb shared his previous research project, Scalable Game Design, which focuses on computational thinking patterns that can be applied across programming contexts. That opened a new perspective on my selection of context-based computational thinking elements. I added all of his suggestions to my literature review list.
The literature is divided into two main categories: conceptual studies and empirical research. The definition CT, general characteristics, and elements were examined in conceptual articles, which provide a theoretical framework as well as high-level CT principles. On the other hand, empirical studies tended to assess certain CT’s curricula, interventions, and assessment through qualitative and quantitative methods. Thus, my review of the literature went from conceptual studies to examination of the current state of CT’s definition and elements. Then, I looked at empirical research to see how current teaching and learning strategies facilitate CT growth and how CT can be assessed in the classroom.
Computational Thinking Definition and Elements
To answer my first question, what principles of computational thinking does curriculum need if it is to prepare K-9 students, I decided to look at different sources related to CT from various perspectives. First, I began with CT in the CS education aspect because it is the most popular approach, and it is also my main focus in this literature review. CT is supposed to be learned through activities using computers, often known as plugged activities, such as programming. Second, in order to gain a broader perspective on computational thinking, I studied sources that use unplugged learning activities, in other words, those that do not require the use of computers or other electrical devices to learn CT. Because CT is an essential 21st-century skill (Mohaghegh & McCauley, 2016; Wing 2017; Zhang & Nouri, 2019), it appears in CS as well as other fields. However, different fields are commonly studied separately. Thus, in order to have a more complete understanding of CT education, I study both plugged and unplugged activities.
The CT concept was first formed in the 1980s with the intervention of LOGO, the first programming language for children to learn about thinking procedures. In 1980, Papert, one of the founders of LOGO, created the first definition of “procedural thinking,” which considered the CT concept’s foundation (Cansu & Cansu, 2019). Then, in 2006, Wing expanded to the first CT definition and was considered as a person to bring CT to the mainstream. Since 2006, multiple definitions of the CT concept have been provided. Some of the well-known and widely used definitions are from Hemmendinger (2010) and Yadav et al. (2014).
From the foundational definition of CT, CS experts expand it into different elements, such as abstraction and algorithm, to clarify how to see CT as a specific set of skills. Then, educators used these elements to define practices to help students develop these skills in the education environment. However, there has been no complete agreement on CT’s definition, or on its elements and practices. Thus, this review of research will provide an overview of current literature then make a claim about the most reasonable definition and the most important aspects of CT. This definition and these elements should be widely used.
Computational Thinking and Computer Science Curriculum
In order to evaluate how curricula scaffold different computational thinking elements into units, I will examine the Harvard Creative Computing with Scratch curriculum and the STEAM for Vietnam Computational Thinking and Scratch programming curriculum. I chose two curricula that I am most familiar with and have access to in order to maximize the use of this research in my teaching career. These curricula also are popular. The newest version of the Harvard Creative Computing with Scratch curriculum has had 455,000 downloads since 2014 and became the most popular Scratch curriculum worldwide when translated into 12 languages (Brennan, 2022). More than 30,000 students have used the STEAM for Vietnam Computational Thinking and Scratch programming curriculum since 2021, which makes it the most popular CS curriculum in Vietnam (STEAM for Vietnam, 2022). In the following paragraphs, I will explain the components of each curriculum then deep dive into the assessment methods.
Harvard Creative Computing with Scratch
The Harvard Creative Computing with Scratch curriculum has seven units. It primarily focuses on creative computing, which encourages students to develop and create computational artifacts using their imagination, creativity, and passion (Balch et al., 2014). Besides that, it also “encourages exploration of key computational thinking concepts (sequence, loops, parallelism, events, conditionals, operators, data) and key computational thinking practices (experimenting and iterating, testing and debugging, reusing and remixing, abstracting and modularizing)” (Balch et al., 2014, p. 8). The method for designing activities in all seven units is guided by four principles: creating, personalizing, sharing, and reflecting. Indeed, the first activity in each unit is an unplugged activity to introduce CS concepts such as sequence and loop. Then, there are two to three short projects with detailed instructions to help students learn about programming language and apply what they have learned to the coding assignments. Next, students will have a debug lesson where they have projects with bugs that they need to fix. Finally, the unit ends with a lesson that requires students to create a new project that incorporates all of the knowledge they have learned through the unit. During all activities, even in small or big projects, students are encouraged to collaborate, share and write reflections about their process.
STEAM for Vietnam Computational Thinking and Scratch Programming
There are eight units in the STEAM for Vietnam Computational Thinking and Scratch programming curriculum. In contrast to the Harvard Creative Computing with Scratch curriculum, each unit in this one is an independent Scratch project. STEAM for Vietnam units start with the introduction of the complete project. Teachers will give students a chance to envision their future projects and become excited about what they can make. Then the demo project will be analyzed through three steps, including decomposition, pattern recognition, and abstraction to create an algorithm for each component. Next, teachers will guide students step-by-step using Scratch to implement a project that is similar to the demo. Finally, after finishing all required functions, students will have opportunities to upgrade the projects based on their own creative ideas. As they do with the Harvard curriculum, students have a coding journal to reflect on their learning process, such as what they have done well and what they expect to learn in the future. However, in the STEAM for Vietnam curriculum, the chance for reflection is limited, occurring only after each unit, not in most lessons as it does in the Harvard curriculum.
Computational Thinking Assessment
Assessment in the Harvard Curriculum
The Harvard Creative Computing with Scratch Curriculum assesses students’ CT and CS concepts through evaluating their projects and the progress of doing those projects. The authors define CT as a set of concepts, practices, and perspectives (Balch et al., 2014). In detail, concepts include sequence, loop, parallelism, events, conditionals, operators, and data. Practices are experimenting and iterating, testing and debugging, reusing and remixing, abstracting and modularizing. Perspectives are indicated through students’ expressing, connecting, and questioning. While there is a detailed definition of concepts and perspectives, there is no detailed guide for assessing them. However, the curriculum developers did provide rubrics to assess each computational practice on three levels: low, medium, and high levels (Balch et al., 2014). For example, when evaluating experimental and iterating skills, teachers can ask students “How did you build your project step by step?” or “What different things did you try out as you went along with your project?” (Balch et al., 2014, p. 148). If students can provide detailed steps and examples, that means students have high experimental and iterating skills. Similar to all other computational practices, the curriculum provided questions for educators to assess their students’ skills. See Appendix A for more details about the rubric for assessing computational practices in the Harvard curriculum.
Assessment in the STEAM for Vietnam Curriculum
In the STEAM for Vietnam curriculum, both summative and formative assessments are used to evaluate students’ CT skills and CS concepts. Summative assessments are conducted through multiple-choice quizzes and submitted projects. Each lesson’s multiple-choice quiz comprises ten questions. The first four questions are directly related to the analysis step that requires students to use decomposition, pattern recognition, abstraction, or algorithm skills to solve. The last six questions focus on evaluating students’ understanding of computer science concepts. These questions are at remember, understand, and apply levels in Bloom’s Taxonomy (1956). See Appendix B for sample questions. Besides answering multiple-choice questions, students also need to submit their finished projects. Projects are evaluated at three levels: not pass (do not meet all basic requirements, not being playable), pass (meet all the basic requirements), and excellent (meet all basic requirements as well as add upgrade functions). Students’ final evaluations are a combination of quiz results and project assessments. See Appendix C for more details about the project’s assessment in the STEAM for Vietnam curriculum.
Not only summative assessments, but exit tickets, coding journals, and check-in surveys are used as formative assessments. The exit ticket for each lesson is a multi-select multiple-choice question that allows students to select all the concepts they feel they have mastered after that lesson. These concepts include both CT and coding concepts. The coding journal typically has three prompts, one for asking students about their feelings, one for the connection between the lesson and their daily lives, and one for future development suggestions. The check-in survey is usually sent several times during live class to check in with students about their current progress and understanding. Teachers are encouraged to use all of the data from these formative assessments to adjust their teaching during the live session as well as plan for the next lessons.
Other Well-Known Assessment Frameworks
Brennan, one of the authors of the Harvard Creative Computing with Scratch Curriculum, published additional research to focus on CT assessment. Brennan and her colleague experimented with evaluating three components of CT, including computational concepts, practices, and perspectives, through three different approaches: project analysis, artifact-based interviews, and design scenarios (Brennan & Resnick, 2012). The project analysis approach, which uses an automated tool, can only measure computational concepts. With the artifact-based interview approach, students are required to participate in 60 to 120-minute interviews to answer questions about their background, project creation process, sharing with an online community, and looking forward to their future. This approach helps evaluate both concepts and practices, but it is not efficient in measuring perspectives (Brennan & Resnick, 2012). The final approach is design scenario, which requires students to choose one scenario, then explain the code, fix bugs, and add a feature. Like interviews, this approach is only efficient in evaluating concepts and practices. On the other hand, it makes it hard to ask direct questions related to perspectives (Brennan & Resnick, 2012). In conclusion, even though they have a clear framework for assessing CT, Brennan & Resnick did not find an optimal approach to implement the assessment framework.
Fronza et al. (2017) extended Brennan & Resnick’s framework (2012) by adding observation steps into the previous assessment to evaluate the computational perspectives aspect, which was missing in Brennan & Resnick’s work. In detail, during classroom activity, the research teams paid more attention to students’ awareness of using technology to express themselves, intra- and inter-team interaction, and active involvement of students (Fronza et al., 2017). Even Fronza’s framework can assess all aspects of CT based on Balch’s definition (2014), it takes time and can be challenging for teachers for doing all project analyses, artifact-based interviews, and observations to assess students’ CT.