Computer programming, reflective learning, education, metacognition, Constructivist Learning Environment, Reusable
Kinshuk, Demetrios G, and Sampson, J. Michael Spector and Pedro Isaías
Learning computer programming has proven challenging for novice learners; research indicates that this is a universal
problem. Programming theoretically encourages learners to evaluate their solutions and thinking process and this
cognitive process allows the student to transfer newly acquired problem solving skills to novel problem situations.
Knowledge about one’s own cognitive system is called metacognition. There are three types of metacognition,
knowledge about one’s own thought processes, self-awareness or self-regulation, and one’s beliefs and intuitions
(Schoenfeld, 1987).Metacognitive skills are activated during learning, make learning easier and facilitate knowledge
transfer. These skills are needed when habitual responses are not successful (Blakey & Spence, 1990) and problem
solving, hence programming, is one area where it is appropriate and necessary to develop metacognitive strategies.
This paper outlines on-going research which aims to address the challenges faced by novice programmers by providing
them with an innovative learning tool. The focus of the paper is on an innovative aspect of the learning tool which is a
metacognitive interface aimed at promoting the development of the learner’s metacognitive skills. Using the tool, learners
outline an initial approach to a concept/problem solution, reflect on what they knew initially and what they have learned
and then review the approach initially adopted. By requiring the learner to articulate his/her approach, implicit knowledge
becomes explicit, making the learning process more effective. The students’ approaches and reflections will be stored and
these metacognitive traces will be captured to provide the lecturer/tutor with a valuable insight into the approaches
adopted by the students and any particular areas of weakness.