{'fraction_non_alphanumeric': 0.029465930018416207, 'fraction_numerical': 0.003683241252302026, 'mean_word_length': 5.628048780487805, '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}}
Block-Based Object-Oriented Programming

Object-oriented programming (OOP) is not only an integral part of computing degrees but also a requirement in non-computing majors such as engineering. Understanding OOP concepts can be difficult for novice programmers, and often leads to the development of misconceptions. This is exacerbated when the discipline requires students to learn a technical low-level language such as C++, as is the case in many engineering disciplines. We propose a block-based programming language extension, Blockly-OOP, to help students learn core OOP concepts without the technical complexities associated with traditional textual languages. The Blockly-OOP Learning Environment was developed by integrating Blockly-OOP with learning activities that guide students through programming exercises that target popular OOP misconceptions. An evaluation (n = 238) in a second-year programming course (CS2) showed that a block-based programming language helps students improve their understanding of object-oriented concepts, warranting further research in this area.