Evaluating Beacons, the Role of Variables, Tracing, and Abstract Tracing for Teaching Novices to Understand Program Intent
Evaluating Beacons, the Role of Variables, Tracing, and Abstract Tracing for Teaching Novices to Understand Program Intent
复制标题
评估信标、变量的作用、跟踪和抽象跟踪,以帮助新手理解程序意图
DOI:
10.1145/3568813.3600140
复制
发表时间:
2023
期刊:
影响因子:
--
通讯作者:
Zilles, Craig
中科院分区:
文献类型:
--
作者:
Hassan, Mohammed;Cunningham, Kathryn;Zilles, Craig
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.
登录
查看更多内容
DOI:
--
发表时间:
2018
期刊:
International Conference on Automated Software Engineering
影响因子:
--
作者:
Alex Groce;Iftekhar Ahmed;Carlos Jensen;P. McKenney;J. Holmes
通讯作者:
J. Holmes
DOI:
--
发表时间:
2011
期刊:
IFAC Symposium on Advances in Control Education
影响因子:
--
作者:
Jacqueline L. Whalley;T. Clear;Phil Robbins;Errol Thompson
通讯作者:
Errol Thompson
DOI:
--
发表时间:
2004
期刊:
Annual Conference on Innovation and Technology in Computer Science Education
影响因子:
--
作者:
Marja Kuittinen;J. Sajaniemi
通讯作者:
J. Sajaniemi
DOI:
10.1145/1404520.1404535
发表时间:
2008
期刊:
Labor: Human Capital eJournal
影响因子:
--
作者:
Carsten Schulte
通讯作者:
Carsten Schulte
DOI:
10.1016/s0020-7373(83)80031-5
发表时间:
1983-01-01
期刊:
INTERNATIONAL JOURNAL OF MAN-MACHINE STUDIES
影响因子:
--
作者:
BROOKS, R
通讯作者:
BROOKS, R