{'fraction_non_alphanumeric': 0.018963337547408345, 'fraction_numerical': 0.0012642225031605564, 'mean_word_length': 6.328703703703703, '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}}
A Spiral Bilingual-Programming Approach for Teaching Concurrency and Parallelism

Innovative Practice Full Paper: Concepts of concurrency and parallelism are indispensable aspects of today’s technology-centric human societies. However, application of these concepts are often taught using a single programming language whose semiotics, despite multimodal instruction, can obfuscate and hinder thorough understanding of the concepts. Consequently, a spiral bilingual-programming approach in which topics are reemphasized with increasing depth of coverage using two different programming languages is proposed. The proposed approach increases pedagogical modalities and learning opportunities for multifaceted comprehension to enable synthesis of various concepts. This article presents experiences of pursuing a spiral bilingual-programming (namely Java and C++) instruction in an undergraduate course for teaching concepts of concurrency and parallelism. Importantly, it contributes quantitative results (that is conspicuously missing in related literature) from various assessments conducted to evaluate the proposed method. The paper discusses statistics (N=85) collated from direct as well as indirect formative and summative assessments conducted during two offerings of the course to evaluate the effectiveness of the proposed approach. Analysis of the assessment data shows that a spiral, bilingual-programming approach is beneficial in increasing the cognition of concepts related to concurrency and parallelism thereby improving student learning and overall course outcomes.