{'fraction_non_alphanumeric': 0.017427385892116183, 'fraction_numerical': 0.004979253112033195, 'mean_word_length': 5.554347826086956, '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}}
Parallel threads: parallel computation labs for CS 3 and CS 4

One objective in establishing our NSF ILI funded parallel computation laboratory was to use closed, formal laboratory assignments to introduce parallelism throughout the core computer science curriculum. We discuss laboratory assignments developed for the Computer Organization (CS 3) and Algorithms (CS 4) courses. The CS 3 lab introduces parallelism based upon processor replication and two-performance indices for evaluating performance of parallel algorithms, speedup and efficiency. One factor that effects performance on MIMD message passage architectures, the ratio of computation to communication, is also introduced. The CS 4 lab guides students in developing a parallel version of Dijkstra's single source shortest path algorithm. A case study using parallel addition assists students in identifying potential parallelism by examining the data dependency of computations. Students working in teams of two develop a pseudo-code version of the single source shortest path algorithm for an abstract parallel machine. They also analyze the speedup and efficiency of an implementation of the algorithm for one, four and eight processors.