{'fraction_non_alphanumeric': 0.0195160031225605, 'fraction_numerical': 0.0039032006245121, 'mean_word_length': 5.608247422680412, '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}}
A study of programming problem representation in novice and expert programmers

Based on a study by Chi and Glasser on physics problem-solving, [1] we hypothesized that novices represent computer programming problems initially on the basis of surface features, such as application areas, while experts represent programming problems on the basis of deep features, such as solution method and data structures. Using a problem sorting task, we studied differences in representation among beginning programmers, experienced programmers, and programming managers. Each participant in the study was given specifications for 27 different programming problems, and was asked to group together problems whose method of solution would be similar. The 27 problems were designed to have three different treatments on each of three dimensions of variation: data-structure, algorithm, and application area. Beginning programmers tended to group problems by application area, experienced programmers grouped by algorithm, and programming managers used a mix of the two methods. The experts were more consistent in their groupings and took more time to complete the grouping task, both of which are consistent with Chi and Glasser and reflect the expected novice/expert representation difference.