Reference Semantics in Python: Explicit Pedagogy vs Intuitive Acquisition — A Literature Synthesis

Python's runtime model gives every variable the semantics of a reference — a name in a namespace dictionary bound to an object on the heap — with assignment as rebinding, with mutation visible through every name that refers to the mutated object, with a hard distinction between immutable objects (rebinding only) and mutable objects (rebinding and mutation), with a default-mutable-argument trap that produces silent state-leakage across calls, and with parameter passing that the literature has variously called pass-by-object-reference, pass-by-sharing, or passby-assignment. None of this is surfaced by Python's surface syntax. The introductory-textbook tradition for Python (1995– 2020) has overwhelmingly chosen intuitive acquisition — write working code, let the model emerge — over explicit teaching — name the reference phenomena, visualise them with a notional machine, walk through worked examples that surface the binding relation. This paper synthesises Holland-Griffiths-Woodman 1997 Avoiding Object Misconceptions, Ma et al. 2007 and Ma et al. 2011 (the empirical measurement of reference-misconception persistence and the Jeliot cognitive-conflict intervention), Sorva 2012 PhD and Sorva 2013 ACM TOCE notional-machine survey, Kohn 2017 Variables in Python, Caceffo et al. 2016 misconception inventory, Sajaniemi 2002 / Sajaniemi-Kuittinen 2005 roles-of-variables, Hertz-Jump 2013 trace-based teaching, Guo 2013 / 2015 Online Python Tutor work, Posner-Strike-HewsonGertzog 1982 conceptual-change theory, and the parameterpassing pedagogy thread (Fleury 1991, Madison-Gifford 1997, Lopez et al. 2008). The paper delivers four contributions. First, a literature verdict that intuitive acquisition produces persistent and transferable misconceptions at the four canonical Python reference-phenomena moments — variable rebinding, list-mutation aliasing, default mutable-argument trap, parameter pass-by-object-reference — with measured persistence into the second and third programming courses. Second, a verdict that explicit teaching is required, but the cognitive-conflict moment, not the introduction moment, is the load-bearing curriculum slot: explicit teaching at first variable introduction overloads working memory; explicit teaching at the second-encounter mutation moment meets the Posner-Strike conceptual-change pre-conditions and produces the largest measured model-shift gains. Third, a deployment template using Python Tutor visualisations paired with mutation worked examples, staged across the elix-researches Python Pathway Volume 2 Chapter 3 and Volume 3 Chapter 1. Fourth, an explicit map showing how this verdict feeds A3.1 (variable mental model), B1.1 (function bottleneck), and the textbook chapters that depend on the recommendation. Per the elix-researches no-cohort scope, no learner data is collected; piloting is identified as a downstream cohort responsibility (B1.4, C2.1).

Authors

Institutions

Publication Details

Journal
Zenodo (CERN European Organization for Nuclear Research)
Published
2026-05-12
DOI
https://doi.org/10.5281/zenodo.20131468
Primary Topic
Teaching and Learning Programming
Type
preprint
Controls
|||
ALL TIME
JAN
FEB
MAR
APR
MAY
JUN
JUL
AUG
SEP
OCT
preprint

Reference Semantics in Python: Explicit Pedagogy vs Intuitive Acquisition — A Literature Synthesis

That Le
Zenodo (CERN European Organization for Nuclear Research)
Teaching and Learning Programming
preprint

Reference Semantics in Python: Explicit Pedagogy vs Intuitive Acquisition — A Literature Synthesis

That Le
preprint en

Abstract

Python's runtime model gives every variable the semantics of a reference — a name in a namespace dictionary bound to an object on the heap — with assignment as rebinding, with mutation visible through every name that refers to the mutated object, with a hard distinction between immutable objects (rebinding only) and mutable objects (rebinding and mutation), with a default-mutable-argument trap that produces silent state-leakage across calls, and with parameter passing that the literature has variously called pass-by-object-reference, pass-by-sharing, or passby-assignment. None of this is surfaced by Python's surface syntax. The introductory-textbook tradition for Python (1995– 2020) has overwhelmingly chosen intuitive acquisition — write working code, let the model emerge — over explicit teaching — name the reference phenomena, visualise them with a notional machine, walk through worked examples that surface the binding relation. This paper synthesises Holland-Griffiths-Woodman 1997 Avoiding Object Misconceptions, Ma et al. 2007 and Ma et al. 2011 (the empirical measurement of reference-misconception persistence and the Jeliot cognitive-conflict intervention), Sorva 2012 PhD and Sorva 2013 ACM TOCE notional-machine survey, Kohn 2017 Variables in Python, Caceffo et al. 2016 misconception inventory, Sajaniemi 2002 / Sajaniemi-Kuittinen 2005 roles-of-variables, Hertz-Jump 2013 trace-based teaching, Guo 2013 / 2015 Online Python Tutor work, Posner-Strike-HewsonGertzog 1982 conceptual-change theory, and the parameterpassing pedagogy thread (Fleury 1991, Madison-Gifford 1997, Lopez et al. 2008). The paper delivers four contributions. First, a literature verdict that intuitive acquisition produces persistent and transferable misconceptions at the four canonical Python reference-phenomena moments — variable rebinding, list-mutation aliasing, default mutable-argument trap, parameter pass-by-object-reference — with measured persistence into the second and third programming courses. Second, a verdict that explicit teaching is required, but the cognitive-conflict moment, not the introduction moment, is the load-bearing curriculum slot: explicit teaching at first variable introduction overloads working memory; explicit teaching at the second-encounter mutation moment meets the Posner-Strike conceptual-change pre-conditions and produces the largest measured model-shift gains. Third, a deployment template using Python Tutor visualisations paired with mutation worked examples, staged across the elix-researches Python Pathway Volume 2 Chapter 3 and Volume 3 Chapter 1. Fourth, an explicit map showing how this verdict feeds A3.1 (variable mental model), B1.1 (function bottleneck), and the textbook chapters that depend on the recommendation. Per the elix-researches no-cohort scope, no learner data is collected; piloting is identified as a downstream cohort responsibility (B1.4, C2.1).

Zenodo (CERN European Organization for Nuclear Research)
ElSohly Laboratories (United States) (US)
Quality Education
Teaching and Learning Programming
AI Navigator

Ask Laika to Summarize, Analyze, and Connect papers live on the map.

Summarize Papers & Methodologies

Extract key findings, datasets, and comparative methods across publications.

Benchmark Rankings & Visual Analytics

Rank top research institutions, authors, funders, topics, and journals by Field-Weighted Citation Impact (FWCI) and paper volume with instant charts.

Connect Distant Disciplines

Bridge topological clusters on the map to find hidden collaborative intersections.