Teaching Novices Programming: A Programming Process Using Goals & Plans with a Visual Programming Environment
It is easy to get novices to understand individual statements of a computer programming language, but it is hard to teach them how to put these statements together into a valid program. This research focuses on the one of the important matters: how to teach novices to construct code. A key constraint is that it aims to develop a new approach for teaching novice programming which is both easy to introduce and effective in improving novices’ learning. The approach of this study combines three key ideas: using a visual programming environment (VPE); using strategies, specifically the concept of “goal” and “plan”; and having a well-defined programming process. In this study, a visual notation of programming goals, plans and the data-flow relations has been developed and used to represent “hand solution” of programming design. A data-flow framework has also been developed and applied to support implementation of the programming design. A detailed programming process is provided to guide novices programming by using goals and plans in a VPE in order to combine the relevant programming statements into a valid program. Moreover, the data-flow framework provides immediate feedbacks to motivate and engage novices, not only from the unmerged plans, but also from all the rest of intermediate level phases in the programming process till the final program code. Based on the cognitive load theory, the integration of the above developments has been built up on a visual goal-plan teaching approach. This approach has been evaluated experimentally in a real teaching setting. The evaluation results indicated that the approach has potential to significantly improve the teaching of novices programming.
Advisor: Winikoff, Michael; Cranefield, Stephen
Degree Name: Doctor of Philosophy
Degree Discipline: Information Science
Publisher: University of Otago
Keywords: Goals; plans; programming; process; visual programming environment; cognitive load theory
Research Type: Thesis