{'fraction_non_alphanumeric': 0.02216427640156454, 'fraction_numerical': 0.001303780964797914, 'mean_word_length': 5.587982832618025, '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}}
From Static Books to Dynamic Knowledge Bases: Software Engineering Education into the 21st Century

Educating students and professionals on the fundamental principles of computer science, and showing how to apply these using advanced, state-of-the-art technologies is major challenge for pedagogy. While the fundamental principles of computer science and software engineering are well established (and evolving relatively slowly), the state-of-the-art of technology and tooling changes daily. This rapid technology change forces educators and software engineers to constantly draw on a diverse collection of unstructured, complex and often contradicting information sources -- books, blog posts, products documentation, online presentations, discussion boards -- to keep up with this pace of change. This paper describes a radically different vision of the future in which software engineering knowledge is widely available from curated, semantically organized, dynamic knowledge bases. These knowledge bases link fundamental principles to supporting technologies and tools, and provide a basis for understanding the approaches that different technologies adopt, and comparing competing approaches. Such a knowledge base is curated by experts as well as populated by algorithms that are able to discover relevant information from the Internet using machine learning. As an example, we describe briefly the QuABaseBD, a knowledge base for designing big data systems that is a first step to demonstrating the feasibility of this vision.