Programming in K–6: Understanding Errors and Supporting Autonomous Learning
OPEN ACCESS
Author / Producer
Date
2021
Publication Type
Doctoral Thesis
ETH Bibliography
yes
Citations
Altmetric
OPEN ACCESS
Data
Rights / License
Abstract
The research presented in this thesis aims at the development of a programming environment for primary schools that is focused on supporting students’ autonomous learning and independent troubleshooting. With the introduction of computer science as a new school subject, programming in primary school is currently experiencing a strong and promising rise in popularity. This creative form of learning can foster problem solving skills but it simultaneously requires a high level of precision. Making errors is inevitable and bugs show up in a variety of forms, from simple typos to highly complex misconceptions. Errors pose a significant problem for classroom implementation since students often struggle with troubleshooting and thus depend on external help. Previous research has addressed this problem and presented various approaches that ease primary school programming. Suggestions reach from programming languages with specialized grammars to tangible application domains and block-based programming interfaces. While each of these approaches has its justification in easing the way into programming, still, primary school programmers eventually need to face their errors and acquire appropriate troubleshooting skills. For more than fifty years, educational and professional programming languages have been treated as separate research fields which went through a distinct evolution in terms of error handling. Motivated by the enormous cost of a blunder in industry, numerous tools were developed for professionals to assist them in locating, analyzing, and fixing errors. Sophisticated tools reach from static program analysis all the way to post-mortem debuggers. In contrast, the educational community engaged with primary school programming focused during the last twenty years primarily on preventing errors. Yet, in order to become self-sufficient programmers, novices must be exposed to their own errors at some point. We developed a Logo learning environment with which primary school programmers aged 5 to 12 years can be introduced to programming and which provides novices with age-appropriate error recovery tools, e.g., an advanced syntax checker, static program analysis, type checking and inference, and a reverse debugger. All of these tools have been adapted to the use case in primary schools. We evaluated our approach using a set of more than 2 million structurally-erroneous Logo programs that were collected in over 80 000 user sessions. Using the tools presented in this thesis, 97% of all structural errors can be detected proactively (i.e., at compile time) and visualized using in-line error markers. In this way, the majority of structural programming errors can be fixed on-the-fly. The remaining 3% are runtime errors that can be analyzed and examined alongside all logical errors using our debugger. The proposed research has promising implications for primary school programming. Through the direct feedback loop with thousands of users, we gained an insight into their learning including problems and misconceptions. The analysis of structural errors allowed us to target the needs of students more effectively by adapting our teaching materials. In the long run, this improves the quality of programming lessons in primary school and students learn to handle errors on their own.
Permanent link
Publication status
published
External links
Editor
Contributors
Examiner : Dagienė, Valentina
Examiner : Hromkovič, Juraj
Examiner : Komm, Dennis
Examiner : Vahrenhold, Jan
Book title
Journal / series
Volume
Pages / Article No.
Publisher
ETH Zurich
Event
Edition / version
Methods
Software
Geographic location
Date collected
Date created
Subject
LOGO (PROGRAMMING LANGUAGES); PROGRAMMING ENVIRONMENTS (SOFTWARE ENGINEERING); PROGRAMMING EDUCATION; K--6
Organisational unit
03666 - Hromkovic, Juraj (emeritus) / Hromkovic, Juraj (emeritus)