Meanwhile, some operational definitions of CT have been proposed. For example, the CSTA & ISTE put forward that CT is a particular set of problem-solving skills that includes identifying the problem, organizing and analyzing data, representing the data, developing automated solutions, implementing and evaluating the optimal solution, and generalizing and transforming solutions 
. Adding to this, Brennan and Resnick proposed the three-dimensional framework of CT. This framework argues that students’ CT should be developed and evaluated in three dimensions: (1) computational concepts (the concepts that students often use in programming, such as sequences, loops, and events); (2) computational practices (the practices that students develop when they engage with computational concepts, such as iterating, debugging, and abstracting); and (3) computational perspectives (the perspectives students form about themselves and about the world, such as recognizing that computation is a medium of creation, realizing the power of working with others, and feeling empowered to ask questions) 
. This integrated framework has been used frequently to cultivate K–12 students’ CT, because it not only emphasizes the conceptual knowledge and practical skills of CT but also attaches importance to the social attribute of CT 
To sum up, we draw three conclusions. First, CT is an important ability to solve problems. Second, generalizing solutions is an integral part of learning CT. Third, students need not only to learn computational concepts and computational practices but also to develop computational perspectives.
Integrating CT into Secondary School Education
In the past years, CT has been integrated into secondary school education to build a solid foundation for students’ future success and to support the sustainable development of our computer science-driven world 
. Consequently, various learning strategies have been used to develop students’ CT. In general, there are two types of learning strategies for developing CT with secondary school students.
The first and most popular is student-centered learning. Motivated by constructionism 
, researchers have used the design-based learning strategy to develop CT in eighth-grade students 
. Students self-explored the applications of CT by engaging in multiple cycles of design, evaluation, and redesign to make computer games about science topics iteratively in a programming environment. The results showed that design-based learning activities enable students to master computational concepts and computational practices. Along similar lines, a pedagogical strategy based on agile software engineering methods has been adopted to develop secondary school students’ CT 
. This strategy allows students to explore, iterate, and experience computational practices in different settings. The results showed that students’ CT was enhanced by exploring these multidisciplinary activities. Moreover, collaborative learning strategies have been integrated into student-centered learning activities. A three-year research project claimed that co-designing mobile games about social change could advance secondary school students’ understanding of computational concepts and computational practices 
The second is teacher-directed learning. For instance, Saritepeci conducted a study that explored the effect of completing programming tasks on CT development with ninth-grade students 
. The teacher introduced computational concepts and sample problem-solving activities to the students. Then, the teacher directed the students to collaborate on computational practices. The results showed that the students’ CT had been significantly improved, while interacting with others had a positive effect on developing these students’ computational perspectives about themselves and their relationships with others. Moreover, teacher-directed learning has also been used to develop interdisciplinary CT in ninth-grade students 
. In this pedagogical process, the teacher demonstrated examples, guided the students to discuss, and provided the students with a series of pre-designed problems. As a result, the students’ CT and programming skills were improved.
Overall, gaining computational experiences through self-practice or observation has been a main learning activity in cultivating CT with secondary school students. These cognitive experiences not only help students understand computational concepts and computational practices, but also shape students’ computational perspectives 
Meanwhile, many studies have been conducted to explore the possible means of assessing CT with students. In general, there are four ways of assessing CT. The first popular way is works analysis. For example, a visualization tool named Scrape (http://happyanalyzing.com/
accessed on 9 October 2021) has been developed and used to automatically present the computational concepts used within Scratch projects 
. Moreover, there are researchers who analyze works manually from the four aspects of content, creativity, artistry, and technology to evaluate students’ learning performance in computational concepts and computational practices 
. The second way is using traditional quizzes, such as multiple-choice items, to evaluate students’ learning performance in computational concepts and computational practices 
. The third way is conducting artifact-based interviews or self-reports to assess computational concepts, computational practices, and computational perspectives 
. The fourth way is using scales. For instance, a five-point Likert scale was developed by Korkmaz et al. 
. Computational thinkers use this scale to evaluate their creativity, algorithmic thinking, cooperation, critical thinking, and problem solving.
However, generalizing and transferring CT to other contexts remains a challenge for secondary school students 
. In addition, more attention should be paid to the ways of developing K–12 students’ computational perspectives 
2. Learning CT through Critical Reflection
In the context of thinking, critical reflection is defined as a process of thinking about the conditions and the effects of what a person is doing or has done 
. It reveals the influence and function of thought and action on people 
. To achieve critical reflection, students need to complete the following steps. First, students need to examine noticeable details of the problem-solving process. Then, they are required to judge the reasons for their decisions from different perspectives. Following this, they re-cast prior experiences and knowledge into other contexts. Finally, they should develop new plans for solving similar problems in the future 
. Therefore, researchers believe that a statement can be measured as critical reflection only when it shifts from a description of events to a critical report that analyzes, integrates and reconstructs experiences, and ultimately produces a new perspective 
In the domain of education, the theory of experiential learning recognizes critical reflection as an essential metacognitive strategy for acquiring meaningful learning outcomes from specific experiences 
. Researchers believe that metacognition refers to thinking about one’s own thinking, which is a crucial component in controlling and regulating one’s thinking, especially problem-solving 
. If problem-solvers can be aware of their cognition and can use this awareness to control and regulate their problem-solving process, they will have a better chance of success 
In recent years, some researchers have discussed the relationship between CT and critical reflection. They argued that CT is exactly a particular set of problem-solving abilities, while critical reflection could improve students’ problem-solving abilities 
. Moreover, generalizing solutions and forming computational perspectives are essential parts of CT, while critical reflection features prominently in promoting the generalization of solutions and the formation of new perspectives 
In view of these arguments, critical reflection has been employed as a metacognitive strategy for developing CT-related knowledge in higher education. For instance, university students working in programming and multimedia systems development were required to blog about their critical reflections on their learning process. The students were prompted to examine what problems they have encountered, how they solved the problem, why the solution worked or not, and what they should do next time. The results showed that these activities could help the participants develop computational practices, such as finding problems and making revisions 
. Moreover, Kyungbin and Jonassen’s study showed that critical reflection had positive effects on helping university students understand computational concepts and complete computational practices in the domain of programming 
. In their study, participants were asked to explain and critically judge their decisions. Similarly, Miller et al. integrated critical reflection into university students’ CT learning activities 
. The students were provided with critical reflection prompts to think about their CT learning activities at a more abstract level. The results confirmed that critical reflection enabled the students to transfer CT to more general problem-solving contexts.
However, whether and how critical reflection can improve CT with secondary school students remains to be explored. At present, only noncritical reflection has been integrated in the CT learning activities of secondary school students. These noncritical reflections stated the noticeable details of the problem-solving process but did not evaluate the solutions. For instance, Zhong et al. stated that reflective card, which was designed for students to report their noticeable errors after they finished computational practices, was a useful tool for helping teachers discover students’ learning barriers 
. Similarly, reflective journals have been adopted to reveal secondary school students’ perspectives on CT training activities and problems encountered 
. In particular, the students were assigned to individually report the successes and difficulties they faced, as well as the activities they enjoyed and disliked. Although these noncritical reflections benefit teachers in detecting students’ immediate and present learning difficulties, they have a trivial effect on activating and enhancing metacognition, which is essential for controlling and regulating learners’ thinking