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
期刊:
Proceedings of the 2023 ACM Conference on International Computing Education Research
影响因子:
--
通讯作者:
Zilles, Craig
Zilles, Craig
中科院分区:
--
文献类型:
--
作者:
Hassan, Mohammed;Cunningham, Kathryn;Zilles, Craig

文献摘要

参考文献

相似文献

背景和背景。“用简明英语解释”(EiPE)问题要求学生解释代码的高级目的,要求他们理解程序意图的宏观结构。我们对专家用来理解代码的技术了解很多,但对我们应该如何教新手开发这种能力却知之甚少。确定可以教给学生的技术,以帮助他们发展理解代码的能力,并有助于新手如何发展他们的代码理解技能的知识体系。我们开发了干预措施,可以教新手由以前的研究专家如何理解代码的动机:促使学生识别信标,确定变量的作用,跟踪,和抽象跟踪。我们对解决EiPE问题的入门编程学生进行了大声思考采访,改变了每个学生所教授的干预措施。一些参与者在整个学期多次接受采访,以观察随着时间的推移行为的任何变化。标识信标和变量角色的名称很少有帮助,因为它们不鼓励学生将他们对该部分的理解与其他代码行相结合。然而,促使学生解释每个变量的目的有助于他们专注于有用的代码子集,这有助于管理认知负荷。当学生错误地认识到常见的编程模式或理解语法(文本表面)时,跟踪是有帮助的。让学生选择可能与他们当前对代码的理解相矛盾的输入,被认为是一种简单的方法,可以让他们有效地选择要跟踪的输入。抽象跟踪帮助学生看到变量之间的高级函数关系。此外,我们观察到学生自发地绘制算法可视化,同样帮助他们看到变量之间的关系。因为学生在理解代码的过程中可能会遇到很多问题,所以似乎没有什么银技术可以在任何情况下都有所帮助。相反,对代码理解的有效指导可能涉及教授一系列技术。除了这些技术之外,还需要学习关于何时应用每种技术的元知识,但这需要留待将来的研究。目前,我们建议采用自下而上、从具体到抽象的教学方法。
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