{"title":"LMC + Scratch:构建程序执行的心智模型的方法","authors":"Noman Javed, Faisal Zeeshan","doi":"10.1145/3498343.3498353","DOIUrl":null,"url":null,"abstract":"Understanding how programs execute is one of the critical activities in the learning journey of a programmer. A novice constructs a mental model of program execution while learning programming. Any misconceptions at this stage lead to the development of a discrepant mental model. If left untreated, learning in advanced subjects like data structures and compiler construction may suffer. One of the ways to prevent the situation is carefully and explicitly unveiling the details of program execution. We employed Little Man Computer (LMC) for this purpose. Its interactive visual interface helped them internalise how software interacted with the hardware to achieve the programmer’s objective. After spending a few sessions on the programming of LMC, we moved to Scratch. Scratch is a much higher-level language than the LMC assembly. So, while introducing Scratch programming constructs, we mapped the LMC equivalents of these instructions. The strategy helped evade several misconceptions by developing a deep understanding of the program execution model. It also served as a building block for introducing other concepts like state, abstraction, the need for higher-level languages and the role of compilers etc. We tried this approach in an Introduction to Computer Science module where most students had zero or very minimal exposure to programming. We received positive feedback from students and other fellow teachers teaching in the subsequent semesters.","PeriodicalId":135120,"journal":{"name":"Proceedings of 6th Conference on Computing Education Practice","volume":null,"pages":null},"PeriodicalIF":0.0000,"publicationDate":"2022-01-06","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"0","resultStr":"{\"title\":\"LMC + Scratch: A recipe to construct a mental model of program execution\",\"authors\":\"Noman Javed, Faisal Zeeshan\",\"doi\":\"10.1145/3498343.3498353\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"Understanding how programs execute is one of the critical activities in the learning journey of a programmer. A novice constructs a mental model of program execution while learning programming. Any misconceptions at this stage lead to the development of a discrepant mental model. If left untreated, learning in advanced subjects like data structures and compiler construction may suffer. One of the ways to prevent the situation is carefully and explicitly unveiling the details of program execution. We employed Little Man Computer (LMC) for this purpose. Its interactive visual interface helped them internalise how software interacted with the hardware to achieve the programmer’s objective. After spending a few sessions on the programming of LMC, we moved to Scratch. Scratch is a much higher-level language than the LMC assembly. So, while introducing Scratch programming constructs, we mapped the LMC equivalents of these instructions. The strategy helped evade several misconceptions by developing a deep understanding of the program execution model. It also served as a building block for introducing other concepts like state, abstraction, the need for higher-level languages and the role of compilers etc. We tried this approach in an Introduction to Computer Science module where most students had zero or very minimal exposure to programming. We received positive feedback from students and other fellow teachers teaching in the subsequent semesters.\",\"PeriodicalId\":135120,\"journal\":{\"name\":\"Proceedings of 6th Conference on Computing Education Practice\",\"volume\":null,\"pages\":null},\"PeriodicalIF\":0.0000,\"publicationDate\":\"2022-01-06\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"\",\"citationCount\":\"0\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"Proceedings of 6th Conference on Computing Education Practice\",\"FirstCategoryId\":\"1085\",\"ListUrlMain\":\"https://doi.org/10.1145/3498343.3498353\",\"RegionNum\":0,\"RegionCategory\":null,\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"\",\"JCRName\":\"\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"Proceedings of 6th Conference on Computing Education Practice","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1145/3498343.3498353","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 0
摘要
了解程序是如何执行的是程序员学习过程中的关键活动之一。初学者在学习编程的过程中会建立一个程序执行的心智模型。在这个阶段的任何误解都会导致一个不一致的心智模型的发展。如果不及时处理,像数据结构和编译器构造这样的高级科目的学习可能会受到影响。防止这种情况发生的方法之一是谨慎而明确地揭示程序执行的细节。为此,我们雇佣了Little Man Computer (LMC)。它的交互式可视化界面帮助他们内化软件如何与硬件交互以实现程序员的目标。在LMC编程上花了几次会议之后,我们转向了Scratch。Scratch是一种比LMC汇编语言高级得多的语言。因此,在介绍Scratch编程结构时,我们映射了这些指令的LMC等价物。该策略通过开发对程序执行模型的深入理解,帮助避免了一些误解。它还充当了引入其他概念的构建块,如状态、抽象、对高级语言的需求和编译器的角色等。我们在计算机科学导论模块中尝试了这种方法,大多数学生都没有或很少接触编程。在接下来的几个学期里,我们从学生和其他老师那里得到了积极的反馈。
LMC + Scratch: A recipe to construct a mental model of program execution
Understanding how programs execute is one of the critical activities in the learning journey of a programmer. A novice constructs a mental model of program execution while learning programming. Any misconceptions at this stage lead to the development of a discrepant mental model. If left untreated, learning in advanced subjects like data structures and compiler construction may suffer. One of the ways to prevent the situation is carefully and explicitly unveiling the details of program execution. We employed Little Man Computer (LMC) for this purpose. Its interactive visual interface helped them internalise how software interacted with the hardware to achieve the programmer’s objective. After spending a few sessions on the programming of LMC, we moved to Scratch. Scratch is a much higher-level language than the LMC assembly. So, while introducing Scratch programming constructs, we mapped the LMC equivalents of these instructions. The strategy helped evade several misconceptions by developing a deep understanding of the program execution model. It also served as a building block for introducing other concepts like state, abstraction, the need for higher-level languages and the role of compilers etc. We tried this approach in an Introduction to Computer Science module where most students had zero or very minimal exposure to programming. We received positive feedback from students and other fellow teachers teaching in the subsequent semesters.