Teaching coding as a foreign language
My school wants STEM teachers to integrate coding into their curriculum beginning next year. The authorities on high think this is a great idea. The concept was presented uncritically, as the best thing to do for students. No one asked the obvious questions … except me.
Citing myself, from pgs. 14-23 of my notes from a recent lecture at USC (linked here), I went down the list of considerations for any teacher who wants to teach coding given that any programming language is essentially a foreign language and should be taught as such if one wants to be successful at it.
My main points from the discussion, with the “answers” in the lecture notes:
Explain the Natural Language Acquisition (NLA) model and how it categorises learners as either Analytic Language Processors (ALPs) or Gestalt Language Processors (GLPs) based on their cognitive style. If teachers don’t understand this and it’s implications, they will necessarily leave about 40% of learners behind.
Discusses challenges GLPs face in learning programming languages concurrently with complex STEM subject matter due to the linear, sequential way programming is often taught. This speaks to accommodating the 40% of humans who happen to be GLPs, either diagnosed or not.
I proposed teaching strategies to better accommodate GLPs such as project-based learning, aligning coding with applications, leveraging visuals / interactions, emphasising patterns, and allowing exploration.
I outlined features of programming languages like Python, JavaScript, Ruby and Swift that may be easier or harder for GLPs.
I estimated timeframes for GLPs to reach proficiency in Python, JS, Ruby, and Swift based on various factors.
I provided comprehensive, practical recommendations for making STEM / coding curricula more inclusive through diverse teaching methods, flexible materials, collaboration opportunities, adaptive assessments, incorporating project-based learning, and soliciting student feedback.
Overall, I attempted to demonstrate the value of recognising cognitive diversity in learners through insights from the NLA model and how applying those insights through inclusive teaching strategies can enable both ALP and GLP students to excel in coding-intensive STEM coursework. The end goal, after all, is creating truly student-centered educational experiences.
Considerations
Learning to code has often been compared to learning a new language. Indeed, there are many similarities that make applying foreign language teaching methods highly effective for coding education.
For starters, coding uses a syntax with defined vocabulary and grammar rules to communicate ideas, just like human languages. Students learning to code must become familiar with the basic building blocks and rules before they can understand and write functional programs. This mirrors early stages of language acquisition focused on vocabulary, grammar patterns, and simple exchanges of ideas or information.
Additionally, both coding and foreign languages feature high utility vocabularies. Just as language learners begin with high frequency words and phrases for basic communication, beginning coders start with print statements, variables, conditionals and loops to build their first running programs. More advanced constructs can be added over time in the same way foreign language students add broader vocabulary and more complex syntax.
Using the lens of language learning also brings helpful frameworks for instruction, assessment and lesson planning. Code can be introduced thematically, allowing ample meaningful practice to internalise concepts. Students further benefit from varied inputs like reading code, writing code, debugging errors or listening to new syntax explanations. Scaffolding activities focus on comprehension before production, just like language classrooms. Assessing real-world relevant communicative abilities guides evaluation.
Overall, thinking of coding as a new language allows teachers to bring evidence-based techniques from language pedagogy. This encourages active progress through comprehensible input, meaningful output, and passionate, practical uses of students’ emerging skills. The parallels between coding and foreign languages make adopting this lens intuitive and highly effective.