{'fraction_non_alphanumeric': 0.012925969447708578, 'fraction_numerical': 0.0, 'mean_word_length': 5.264705882352941, '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': 1, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Developing an Optimizing Compiler for the Game Boy as a Software Engineering Project

Software engineering students not only have to learn theoretical concepts but also how to successfully apply them in practice. Hence, projects are an important part of software engineering curricula. As software engineering methods and technologies are only relevant for non-trivial software systems, we report in this paper on a master-level software engineering project course in which a team of students developed a compiler for the Game Boy in a single semester. The students developed different languages and corresponding parsers to a common intermediate language, optimizations on the intermediate language, as well as a code generator for the Game Boy. We particularly present lessons learned by us and the students as well as potential course improvements.