(1) The case for using foreign language pedagogies in introductory computer programming instruction (2) A contextualized pre-AP computer programming curriculum: Models and simulations for exploring real-world cross-curricular topics - Portnoff, Scott R (ProQuest Dissertations & Theses, 2016)
Large numbers of novice programmers have been failing postsecondary introductory computer science programming (CS1) courses for nearly four decades. Student learning is much worse in secondary programming courses of similar or even lesser rigor. This has critical implications for efforts to reclassify Computer Science (CS) as a core secondary subject. State departments of education have little incentive to do so until it can be demonstrated that most grade-level students will not only pass such classes, but will be well-prepared to succeed in subsequent vertically aligned coursework. One rarely considered cause for such massive failure is insufficient pedagogic attention to teaching a programming language (PL) as a language, per se. Students who struggle with acquiring proficiency in using a PL can be likened to students who flounder in a French class due to a poor grasp of the language's syntactic or semantic features. Though natural languages (NL) and PLs differ in many key respects, a recently reported (2014) fMRI study has demonstrated that comprehension of computer programs primarily utilizes regions of the brain involved in language processing, not math. The implications for CS pedagogy are that, if PLs are learned in ways fundamentally similar to how second languages (L2) are acquired, foreign language pedagogies (FLP) and second language acquisition (SLA) theories can be key sources for informing the crafting of effective PL teaching strategies. In this regard, key features of contemporary L2 pedagogies relevant to effective PL instruction—reflecting the late 20th-century shift in emphasis from cognitive learning that stressed grammatical knowledge, to one that facilitates communication and practical uses of the language—are: (1) repetitive and comprehensible input in a variety of contexts, and (2) motivated, meaningful communication and interaction. Informed by these principles, four language-based strategies adapted for PL instruction are described, the first to help students acquire syntax and three others for learning semantics: (a) memorization; (b) setting components in relief; (c) transformations; and (d) ongoing exposure. Anecdotal observations in my classroom have long indicated that memorization of small programs and program fragments can immediately and drastically reduce the occurrence of syntax errors among novice pre-AP Java programming students. A modest first experiment attempting to confirm the effect was statistically unconvincing: for students most likely to struggle, the Pearson coefficient of −0.474 (p < 0.064) suggested a low-modest inverse correlation. A follow-up study will be better designed. Still, a possible explanation for the anecdotal phenomenon is that the repetition required for proficient memorization activates the same subconscious language acquisition processes that construct NL grammars when learners are exposed to language data. Dismal retention rates subsequent to the introductory programming course have historically also been a persistent problem. One key factor impacting attrition is a student's intrinsic motivation, which is shaped both by interest in, and self-efficacy with regards to, the subject matter. Interest involves not just CS concepts, but also context, the domains used to illustrate how one can apply those concepts. One way to tap into a wide range of student interests is to demonstrate the capacity of CS to explore, model, simulate and solve non-trivial problems in domains across the academic spectrum, fields that students already value and whose basic concepts they already understand. An original University of California "G" elective (UCOP "a-g" approved) pre-AP programming course along these principles is described. In this graphics-based Processing course, students are guided through the process of writing and studying small dynamic art programs, progressing to mid-size graphics programs that model or simulate real-world problems and phenomena in geography, biology, political science and astronomy. The contextualized course content combined with the language-specific strategies outlined above address both interest and self-efficacy. Although anecdotally these appear to have a positive effect on student understanding and retention, studies need to be done on a larger scale to validate these outcomes. Finally, a critique is offered of the movement to replace rigorous secondary programming instruction with survey courses—particularly Exploring Computer Science and APCS Principles—under the guise of "democratizing" secondary CS education or to address the severe and persistent demographic disparities. This group of educators has promulgated a nonsensical fiction that programming is simply one of many subdisciplines of the field, rather than the core skill needed to understand all other CS topics in any deep and meaningful way. These courses present a facade of mitigating demographic disparities, but leave participants no better prepared for subsequent CS study.