{'fraction_non_alphanumeric': 0.014340871483728626, 'fraction_numerical': 0.0, 'mean_word_length': 6.141732283464567, '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}}
DISCOVER: AN INTELLIGENT DISCOVERY PROGRAMMING SYSTEM

Much of research in programming environments for novices has been polarized toward two opposite domains: guided programming environments and free programming environments. Intelligent programming tutors and systems that represent guided environments concentrate mainly on helping novices in acquiring programming skills through a series of problem-solving situations. Most of these systems tend to ignore the significance of a preproblem solving, dynamic, visualization-based, and free environment which would help novices in compiling an effective programming knowledge through a discovery-like process. Free programming environments, on the other hand, concentrate exclusively on helping novices to build correct programming knowledge through visible, exploratory, and free discovery environments. These systems generally tend to neglect the issue of supporting those aspects of intelligent diagnosis and tutoring, through which novices can transform their program knowledge into programming skill. A system has been developed called DISCOVER that occupies a unique niche between the two domains discussed above. The system emphasizes a synthesis-based framework which integrates free programming with guided programming features, and supports software visualization and immediacy of feedback to come up with an environment that facilitates learning programming through discovery and guidance. To assess the usefulness of the design framework presented in this paper, two pilot performance evaluations were conducted. The results provided a number of interesting insights into the implication of incorporating visualization and immediacy features, along with intelligent program diagnosis into the design of programming systems intended mainly for novices.