{'fraction_non_alphanumeric': 0.025139664804469275, 'fraction_numerical': 0.0, 'mean_word_length': 5.03932584269663, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Teaching novice programming using goals and plans in a visual notation

Introductory programming courses have been continuously reported as having a high rate of failure or withdrawal. This research aims to develop a new approach for teaching novice programming, which is both easy to introduce and effective in improving novice learning. Our approach combines three key ideas: using a visual programming language; using strategies, specifically using the concepts of "goal" and "plan"; and having a well-defined process. We present a way of representing goals and plans in a visual notation together with a plan library that we developed in a visual programming environment (VPE). A key feature of the approach is that a design, i. e. an unmerged "plan network", is executable and can be tested, giving feedback in the VPE. Furthermore, we describe a detailed process for using existing plans and building new plans in the VPE. This approach had been evaluated experimentally and the results indicated its potential to significantly improve teaching programming to novices.