Evaluating Beacons, the Role of Variables, Tracing, and Abstract Tracing for Teaching Novices to Understand Program Intent

Research output: Chapter in Book/Report/Conference proceedingConference contribution

Abstract

Background and context. "Explain in Plain English"(EiPE) questions ask students to explain the high-level purpose of code, requiring them to understand the macrostructure of the program's intent. A lot is known about techniques that experts use to comprehend code, but less is known about how we should teach novices to develop this capability. Objective. Identify techniques that can be taught to students to assist them in developing their ability to comprehend code and contribute to the body of knowledge of how novices develop their code comprehension skills. Method. We developed interventions that could be taught to novices motivated by previous research about how experts comprehend code: prompting students to identify beacons, identify the role of variables, tracing, and abstract tracing. We conducted think-aloud interviews of introductory programming students solving EiPE questions, varying which interventions each student was taught. Some participants were interviewed multiple times throughout the semester to observe any changes in behavior over time. Findings. Identifying beacons and the name of variable roles were rarely helpful, as they did not encourage students to integrate their understanding of that piece in relation to other lines of code. However, prompting students to explain each variable's purpose helped them focus on useful subsets of the code, which helped manage cognitive load. Tracing was helpful when students incorrectly recognized common programming patterns or made mistakes comprehending syntax (text-surface). Prompting students to pick inputs that potentially contradicted their current understanding of the code was found to be a simple approach to them effectively selecting inputs to trace. Abstract tracing helped students see high-level, functional relationships between variables. In addition, we observed student spontaneously sketching algorithmic visualizations that similarly helped them see relationships between variables. Implications. Because students can get stuck at many points in the process of code comprehension, there seems to be no silver bullet technique that helps in every circumstance. Instead, effective instruction for code comprehension will likely involve teaching a collection of techniques. In addition to these techniques, meta-knowledge about when to apply each technique will need to be learned, but that is left for future research. At present, we recommend teaching a bottom-up, concrete-to-abstract approach.

Original languageEnglish (US)
Title of host publicationICER 2023 - Proceedings of the 2023 ACM Conference on International Computing Education Research V.1
PublisherAssociation for Computing Machinery
Pages329-343
Number of pages15
ISBN (Electronic)9781450399760
DOIs
StatePublished - Aug 7 2023
Event19th Annual ACM International Computing Education Research Conference, ICER 2023 - Chicago, United States
Duration: Aug 7 2023Aug 11 2023

Publication series

NameICER 2023 - Proceedings of the 2023 ACM Conference on International Computing Education Research V.1

Conference

Conference19th Annual ACM International Computing Education Research Conference, ICER 2023
Country/TerritoryUnited States
CityChicago
Period8/7/238/11/23

Keywords

  • CS 1
  • program comprehension
  • tracing

ASJC Scopus subject areas

  • Computational Theory and Mathematics
  • Computer Science Applications
  • Software
  • Education

Fingerprint

Dive into the research topics of 'Evaluating Beacons, the Role of Variables, Tracing, and Abstract Tracing for Teaching Novices to Understand Program Intent'. Together they form a unique fingerprint.

Cite this