{'fraction_non_alphanumeric': 0.025390625, 'fraction_numerical': 0.005208333333333333, 'mean_word_length': 4.866412213740458, '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}}
Review of "The Art of Computer Programming, Volume 4, Fascicles 2, 3, and 4 by Donald E. Knuth," Pearson Education (Addison-Wesley), 2005

DePaul University, where I teach, offers a Master of Science degree in Computer Science. Most of the students entering this program have very little background in CS and we help them fill this in by offering undergraduate CS courses tailored to older (and so more motivated) students. Teaching the course in discrete mathematics is both a pleasure and a challenge. A pleasure because it is a real joy to present some of the gems of our field to people who have never encountered the mathematics we rely on. Pulling out Euclid’s GCD algorithm and Euler’s cycle finding algorithm and discussing the wonderful elegance of each reminds me of why I entered this field. The challenge comes from connecting the material to practice. Many of these students come from the banking, investing, consulting, or trading firms located steps away from our downtown campus and many are working programmers. For most, the MS is a professional degree so connecting Euclid’s algorithm to public key cryptography helps them understand why grasping the fundamentals of number theory or combinatorics or graph theory (and the more difficult algorithms and proofs to come in later courses) is relevant to practice. One encounters that same pleasure in Don Knuth’s latest additions to his collection of volumes titled “The Art of Computer Programming.” At the same time, he also meets the challenge of practical relevance.