Metacodenition: Scaffolding the Problem-Solving Process for Novice Programmers
Yulia Pechorina, Keith Anderson, Paul Denny
Abstract
Problem-solving is a central activity to computing, and thus a key skill that novices develop when learning programming. While most programming-related concepts are taught explicitly in introductory courses, it is common for problem-solving to be taught implicitly – usually through having students perform programming drills. This approach can be problematic for some learners and may lead to the development of unproductive problem solving strategies that leave students feeling lost when faced with new problems. A substantial body of work has investigated the explicit teaching of problem-solving and related metacognitive skills. This prior literature has shown that teaching students a model for the problem-solving process and how to track their progress within that model leads to greater self-efficacy and productivity. Interventions targeting isolated steps in these models have been shown to work, but there have been few efforts to combine such interventions into a single coherent system. Our contribution is a novel tool called Metacodenition, which is a programming environment for novices that provides metacognitive scaffolding around an existing problem-solving framework. We find that Metacodenition’s scaffolding improves performance on code-writing tasks and that students view Metacodenition to be a helpful tool they would use voluntarily.