摘要
Introduction Interactive online educational technologies such as intelligent tutoring systems (ITS) can provide a good platform for performing research related to metacognition. Assessment of fine-grained tracking of students' cognitive abilities and their metacognitive behaviors can be provided by such systems. Designing a metacognitive support system focused on both cognitive and metacognitive development can be very challenging. The term metacognitive is most often associated with (Flavell, 1979) who has defined metacognitive knowledge as the process of acquiring knowledge about cognition to control cognitive processes. The role of metacognition in learning to solve computer programming problems is very important. Metacognitive management strategies are more often used by outstanding programming students than by lower-performing students (Bergin, Reilly, & Traynor, 2005). In fact, the more complex a programming problem, the greater the need for metacognitive control, purposeful reflection, and positive feedback (Havenga, 2011). A programmer must apply in-depth reading skills and meta-comprehension to judge how clearly and effectively he or she understands a programming problem. Furthermore, programmers must be skilled in problem-solving processes, apply appropriate programming approaches, and be able to correct programming errors, as well being able to think deeply about their programming solutions and test program output. Such problem-solving steps require metacognitive control such as planning (plan the solution), monitoring (monitor the design and development of the program) and evaluation (test and reflect on the programming solution). A well-trained programmer is someone equipped with good analytical thinking and problem-solving skills (Soloway & Spohrer, 2013). Students should therefore manage their skill with respect to programming processes, motivate their decisions, articulate their actions, and investigate alternative solutions to improve the quality of their programs. The teacher has a responsibility to support students in developing metacognitive skills and applying them during program development. Although there are methods of instruction (i.e., cognitive approach, motivation approach) the most valuable and effective methods involve a combination of theory and practice (Li, Zhang, Du, Zhu, & Li, 2015). The underlying strategies and knowledge of cognitive processes must be given to a learner along with opportunities to practice and apply both metacognitive and cognitive strategies. For development of metacognitive regulation, it is also important to evaluate the outcome of their efforts (Wegener, Silva, Petty, & Garcia-Marques, 2012). Yet, to date, there are many attempts have been made to provide the support learning tool for novice to learn computer programming (Sorva, Karavirta, & Malmi, 2013; Verdu et al., 2012). However, finding similar works that specifically discuss on improving novices' metacognitive skills using support learning tool could not be located. In the next section, we discuss the characteristics of a metacognitive support system for learning computer programming; they are identified as scaffolding, reflective prompts, self-assessment, self-questioning, self-directed strategies and graphical organizer. Metacognitive scaffolding Difficulties encountered while learning computer programming are a universal problem. There have been numerous attempts to address these difficulties (e.g., (Apiola, Tedre, & Oroma, 2011; M. Rum, Nurulain, & Ismail, 2014; S. N. M. Rum & Ismail, 2014; Soloway & Spohrer, 2013), but challenges still remain, so an optimal support mechanism using learner and effective instructional strategies should be developed to provide an optimal learning environment for learning computer programming. These difficulties show that some programming skills required by novice learners may be beyond their capabilities. Scaffolding is a critical component in facilitating students' aptitude for programming (Bickhard, 2013; Feyzi-Behnagh et al. …