TY - GEN
T1 - Analysis of student misconceptions using python as an introductory programming language
AU - Johnson, Fionnuala
AU - McQuistin, Stephen
AU - O’Donnell, John
N1 - Publisher Copyright:
© 2020 Association for Computing Machinery.
PY - 2020/1/9
Y1 - 2020/1/9
N2 - Python has become a popular language for the delivery of introductory programming courses. Two reasons for this are Python’s convenience and syntactic simplicity, giving a low entry barrier for beginners and the ability to solve complex problems with short snippets of code. However, students exhibit widespread misconceptions about the meaning of basic language constructs, inhibiting their ability to solve problems and damaging their understanding of fundamental concepts. In this paper, we document our observations of level 1 university students over several years, as well as surveys probing the nature of their misconceptions. We analyze the misconceptions in relation to a notional machine model for Python, and show that many students form inadequate and brittle mental models of the language. Our results indicate that one of the major sources of misunderstanding is the heavy use of overloading in Python. Overloading hides the complexity of algorithms and data structures, often leading students to write code that involves mutability, sharing, copying, side effects, coroutines, concurrency, and lazy evaluation – and none of those topics are accessible to students who haven’t yet mastered basic assignments, conditionals, and looping. We suggest that Python, when taught alone, is insufficient as an introductory language: students can gain a firmer grasp of programming fundamentals when Python is presented alongside a complementary low level language that makes a notional machine clear and explicit.
AB - Python has become a popular language for the delivery of introductory programming courses. Two reasons for this are Python’s convenience and syntactic simplicity, giving a low entry barrier for beginners and the ability to solve complex problems with short snippets of code. However, students exhibit widespread misconceptions about the meaning of basic language constructs, inhibiting their ability to solve problems and damaging their understanding of fundamental concepts. In this paper, we document our observations of level 1 university students over several years, as well as surveys probing the nature of their misconceptions. We analyze the misconceptions in relation to a notional machine model for Python, and show that many students form inadequate and brittle mental models of the language. Our results indicate that one of the major sources of misunderstanding is the heavy use of overloading in Python. Overloading hides the complexity of algorithms and data structures, often leading students to write code that involves mutability, sharing, copying, side effects, coroutines, concurrency, and lazy evaluation – and none of those topics are accessible to students who haven’t yet mastered basic assignments, conditionals, and looping. We suggest that Python, when taught alone, is insufficient as an introductory language: students can gain a firmer grasp of programming fundamentals when Python is presented alongside a complementary low level language that makes a notional machine clear and explicit.
KW - Introductory programming course
KW - Misconceptions
KW - Notional machine model
KW - Overloading
UR - http://www.scopus.com/inward/record.url?scp=85117540541&partnerID=8YFLogxK
U2 - 10.1145/3372356.3372360
DO - 10.1145/3372356.3372360
M3 - Conference contribution
AN - SCOPUS:85117540541
T3 - ACM International Conference Proceeding Series
BT - Proceedings - 4th Conference on Computing Education Practice, CEP 2020
PB - ACM
T2 - 4th Conference on Computing Education Practice, CEP 2020
Y2 - 9 January 2020
ER -