首页 > 最新文献

Proceedings of the 2021 ACM SIGPLAN International Symposium on SPLASH-E最新文献

英文 中文
A stepper for a functional JavaScript sublanguage 函数式JavaScript子语言的步进程序
Pub Date : 2021-10-17 DOI: 10.1145/3484272.3484968
M. Henz, Thomas Tan, Zachary Chua, P. Jung, Yee-Jian Tan, Xinyi Zhang, Jingjing Zhao
The first two chapters of the introductory computer science textbook Structure and Interpretation of Computer Programs, JavaScript Adaptation (SICP JS), use a subset of JavaScript called Source §2. The book introduces the reduction-based “substitution model” as a first mental model for the evaluation of Source §2 programs. To support the learner in adopting this mental model, we built an algebraic stepper—a tool for visualizing the evaluation of Source §2 programs according to the model. As a sublanguage of JavaScript, Source §2 differs from other purely functional programming languages by using a statement-oriented syntax, with statement sequences, return statements, and block-scoped declarations. For the purpose of this tool description, we distill these distinguishing features—along with explicit recursion—into a Source §2 sublanguage that we call Source §0, and focus on a stepper for this language. We formalize the substitution model of Source §0 as a lambda-calculus-style reduction semantics that handles explicit recursion by term graph rewriting and faithfully implements the JavaScript specification, when restricted to that language. Our implementation of the stepper represents term graphs by persistent data structures that maximize sharing and enable random access to all steps. This work presents the first reduction-based semantics for a JavaScript sublanguage and the first algebraic stepper for a language with return statements and block-scoped declarations. The tool supports the learner with step-level explanations, redex highlighting, and function-level skipping and can also be used for teaching the applicative-order-reduction lambda calculus.
计算机科学入门教材《计算机程序的结构与解释》(Structure and Interpretation of computer Programs, SICP JS)的前两章使用了JavaScript的一个子集Source§2。本书介绍了基于简化的“替代模型”作为评估源§2程序的第一个心智模型。为了支持学习者采用这种心理模型,我们建立了一个代数步进-一个根据模型可视化Source§2程序评估的工具。作为JavaScript的一个子语言,Source§2不同于其他纯函数式编程语言,它使用了面向语句的语法,包括语句序列、返回语句和块作用域声明。出于本工具描述的目的,我们将这些显著的特征——连同显式递归——提取到Source§2子语言中,我们称之为Source§0,并将重点放在该语言的步进上。我们将Source§0的替换模型形式化为lambda-calculus-style约简语义,该语义通过项图重写处理显式递归,并忠实地实现JavaScript规范,当受该语言限制时。我们的步进实现通过持久的数据结构来表示术语图,这些数据结构可以最大限度地共享并允许对所有步进进行随机访问。这项工作为JavaScript子语言提供了第一个基于约简的语义,并为具有返回语句和块作用域声明的语言提供了第一个代数步进。该工具支持学习者的步骤级解释,索引突出显示和函数级跳过,也可以用于教学应用序约λ演算。
{"title":"A stepper for a functional JavaScript sublanguage","authors":"M. Henz, Thomas Tan, Zachary Chua, P. Jung, Yee-Jian Tan, Xinyi Zhang, Jingjing Zhao","doi":"10.1145/3484272.3484968","DOIUrl":"https://doi.org/10.1145/3484272.3484968","url":null,"abstract":"The first two chapters of the introductory computer science textbook Structure and Interpretation of Computer Programs, JavaScript Adaptation (SICP JS), use a subset of JavaScript called Source §2. The book introduces the reduction-based “substitution model” as a first mental model for the evaluation of Source §2 programs. To support the learner in adopting this mental model, we built an algebraic stepper—a tool for visualizing the evaluation of Source §2 programs according to the model. As a sublanguage of JavaScript, Source §2 differs from other purely functional programming languages by using a statement-oriented syntax, with statement sequences, return statements, and block-scoped declarations. For the purpose of this tool description, we distill these distinguishing features—along with explicit recursion—into a Source §2 sublanguage that we call Source §0, and focus on a stepper for this language. We formalize the substitution model of Source §0 as a lambda-calculus-style reduction semantics that handles explicit recursion by term graph rewriting and faithfully implements the JavaScript specification, when restricted to that language. Our implementation of the stepper represents term graphs by persistent data structures that maximize sharing and enable random access to all steps. This work presents the first reduction-based semantics for a JavaScript sublanguage and the first algebraic stepper for a language with return statements and block-scoped declarations. The tool supports the learner with step-level explanations, redex highlighting, and function-level skipping and can also be used for teaching the applicative-order-reduction lambda calculus.","PeriodicalId":159099,"journal":{"name":"Proceedings of the 2021 ACM SIGPLAN International Symposium on SPLASH-E","volume":"235 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2021-10-17","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122452105","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 4
The efficacy of online office hours: an experience report 在线办公时间的功效:一份体验报告
Pub Date : 2021-10-17 DOI: 10.1145/3484272.3484966
Braxton Hall, Noa Heyl, E. Baniassad, M. Allen, Reid Holmes
To facilitate assisting students while online during the COVID 19 pandemic, we transitioned to online office hours. These were managed by an automated queue which kept track of who was waiting in office hours, and for how long. We combined data about office hour usage with students' project commit and grade history. These data afforded us a unique look at the efficacy of office hours that the usual, casual drop-in style office hours, did not allow. Amongst other findings, we saw that while individual office hours visits did increase student grades, more visits during the term was negatively correlated with the final project outcome.
为了方便在COVID - 19大流行期间在线帮助学生,我们已过渡到在线办公时间。这些都是由一个自动队列管理的,它记录着谁在办公时间等待,以及等待了多长时间。我们将办公时间的使用数据与学生的项目提交和成绩历史结合起来。这些数据让我们对办公时间的效率有了一个独特的看法,这是通常的随意的办公时间所不允许的。在其他发现中,我们发现,虽然个人办公时间的访问确实提高了学生的成绩,但在学期中访问的次数与最终的项目成果呈负相关。
{"title":"The efficacy of online office hours: an experience report","authors":"Braxton Hall, Noa Heyl, E. Baniassad, M. Allen, Reid Holmes","doi":"10.1145/3484272.3484966","DOIUrl":"https://doi.org/10.1145/3484272.3484966","url":null,"abstract":"To facilitate assisting students while online during the COVID 19 pandemic, we transitioned to online office hours. These were managed by an automated queue which kept track of who was waiting in office hours, and for how long. We combined data about office hour usage with students' project commit and grade history. These data afforded us a unique look at the efficacy of office hours that the usual, casual drop-in style office hours, did not allow. Amongst other findings, we saw that while individual office hours visits did increase student grades, more visits during the term was negatively correlated with the final project outcome.","PeriodicalId":159099,"journal":{"name":"Proceedings of the 2021 ACM SIGPLAN International Symposium on SPLASH-E","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2021-10-17","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130389178","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 2
Machine learning pedagogy to support the research community 支持研究界的机器学习教学法
Pub Date : 2021-10-17 DOI: 10.1145/3484272.3484964
K. Dick, Daniel G. Kyrollos, J. Green
Machine learning methods are increasingly leveraged in disparate domains of research. Herein, we describe our curriculum design to introduce undergraduate students to applied research through a series of course assignments and a competition among peers to inspire other educators. We describe the overall course structure and detail how the assignments were tailored to a selected open research question while developing student understanding of machine learning. We outline the lessons learned from this new undergraduate curriculum design and describe how it may be adapted to similar courses. For the selected COVID19-related course-long problem of predicting which drugs might interact with specific proteins, we leveraged state-of-the-art tools for representing drug and protein sequences. We challenged students to develop unique solutions competitive with a current state-of-the-art model using reproducible Notebooks and cloud-based computing resources with the expectation that top-ranking solutions would be used to predict novel druggable targets within the SARS-CoV-2 proteome to possibly treat COVID19 patients. We motivate this curriculum design based on related competition frameworks that have led to notable research advancements and contributed to machine learning pedagogy. From our experience, the top student solutions were ultimately combined using a stacked classifier to create a publishable solution representing an actual research contribution. We highly recommend introducing undergraduate students to open research applications early in their program to encourage them to consider pursuing a career in research.
机器学习方法越来越多地应用于不同的研究领域。在此,我们描述了我们的课程设计,通过一系列的课程作业和同龄人之间的竞争来引导本科生进行应用研究,以激励其他教育者。我们描述了整个课程结构,并详细说明了作业是如何针对选定的开放式研究问题进行定制的,同时培养学生对机器学习的理解。我们概述了从这种新的本科课程设计中吸取的经验教训,并描述了如何将其适用于类似的课程。对于预测哪些药物可能与特定蛋白质相互作用这一选定的与covid - 19相关的课程问题,我们利用最先进的工具来表示药物和蛋白质序列。我们要求学生使用可复制的笔记本电脑和基于云的计算资源开发与当前最先进模型竞争的独特解决方案,并期望使用顶级解决方案来预测SARS-CoV-2蛋白质组内的新药物靶点,从而可能治疗covid - 19患者。我们基于相关的竞赛框架来激励课程设计,这些框架已经导致了显著的研究进展,并为机器学习教学法做出了贡献。根据我们的经验,最优秀的学生解决方案最终使用堆叠分类器组合在一起,以创建代表实际研究贡献的可发布解决方案。我们强烈建议本科生在他们的课程早期就开放研究申请,以鼓励他们考虑从事研究工作。
{"title":"Machine learning pedagogy to support the research community","authors":"K. Dick, Daniel G. Kyrollos, J. Green","doi":"10.1145/3484272.3484964","DOIUrl":"https://doi.org/10.1145/3484272.3484964","url":null,"abstract":"Machine learning methods are increasingly leveraged in disparate domains of research. Herein, we describe our curriculum design to introduce undergraduate students to applied research through a series of course assignments and a competition among peers to inspire other educators. We describe the overall course structure and detail how the assignments were tailored to a selected open research question while developing student understanding of machine learning. We outline the lessons learned from this new undergraduate curriculum design and describe how it may be adapted to similar courses. For the selected COVID19-related course-long problem of predicting which drugs might interact with specific proteins, we leveraged state-of-the-art tools for representing drug and protein sequences. We challenged students to develop unique solutions competitive with a current state-of-the-art model using reproducible Notebooks and cloud-based computing resources with the expectation that top-ranking solutions would be used to predict novel druggable targets within the SARS-CoV-2 proteome to possibly treat COVID19 patients. We motivate this curriculum design based on related competition frameworks that have led to notable research advancements and contributed to machine learning pedagogy. From our experience, the top student solutions were ultimately combined using a stacked classifier to create a publishable solution representing an actual research contribution. We highly recommend introducing undergraduate students to open research applications early in their program to encourage them to consider pursuing a career in research.","PeriodicalId":159099,"journal":{"name":"Proceedings of the 2021 ACM SIGPLAN International Symposium on SPLASH-E","volume":"253 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2021-10-17","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"134302338","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 3
Teachable moments in functional audio processing 功能性音频处理中的教学时刻
Pub Date : 2021-10-17 DOI: 10.1145/3484272.3484967
M. Henz, Shang-Hui Koh, Samyukta Sounderraman
The atomic entity of digital audio processing systems is a digital audio signal, i.e. a sequence of sound samples that represent the amplitude of a sound wave at discrete time intervals. Such signals are transformed additively, by combining them into more complex signals, and subtractively, by subjecting them to digital filters. In order to cover digital audio processing in a classroom from first principles, we need to form collections of samples in streams or arrays, and define operations on these collections in accordance with the constraints of digitization. In this work, we pursue an alternative approach, where the atomic entity is a continuous wave function. We present additive synthesis operations, including wave envelopes and musical abstractions in a purely functional setting. The final continuous wave function is digitized in order to make the sound audible. We report our experiences with what we call functional audio processing as an example domain for teaching functional programming to first-year students, where simplicity and conceptual elegance outweighs the inherent limitation to additive synthesis. We describe a sequence of teachable moments that highlight the potential of functional audio processing at an early stage in the learning process, before streams or arrays are introduced.
数字音频处理系统的原子实体是数字音频信号,即以离散时间间隔表示声波振幅的声音样本序列。通过将这些信号组合成更复杂的信号,对它们进行加性转换,并通过对它们进行数字滤波器进行减法转换。为了从第一性原理开始涵盖课堂中的数字音频处理,我们需要在流或数组中形成样本集合,并根据数字化的约束定义对这些集合的操作。在这项工作中,我们追求另一种方法,其中原子实体是连续波函数。我们提出了加法合成操作,包括波包络和音乐抽象在纯功能设置。最后的连续波函数被数字化,以使声音可听。我们将所谓的功能性音频处理作为向一年级学生教授函数式编程的示例领域,报告我们的经验,其中简单性和概念上的优雅胜过附加合成的固有限制。我们描述了一系列可教时刻,这些时刻强调了在学习过程的早期阶段,在引入流或数组之前,功能性音频处理的潜力。
{"title":"Teachable moments in functional audio processing","authors":"M. Henz, Shang-Hui Koh, Samyukta Sounderraman","doi":"10.1145/3484272.3484967","DOIUrl":"https://doi.org/10.1145/3484272.3484967","url":null,"abstract":"The atomic entity of digital audio processing systems is a digital audio signal, i.e. a sequence of sound samples that represent the amplitude of a sound wave at discrete time intervals. Such signals are transformed additively, by combining them into more complex signals, and subtractively, by subjecting them to digital filters. In order to cover digital audio processing in a classroom from first principles, we need to form collections of samples in streams or arrays, and define operations on these collections in accordance with the constraints of digitization. In this work, we pursue an alternative approach, where the atomic entity is a continuous wave function. We present additive synthesis operations, including wave envelopes and musical abstractions in a purely functional setting. The final continuous wave function is digitized in order to make the sound audible. We report our experiences with what we call functional audio processing as an example domain for teaching functional programming to first-year students, where simplicity and conceptual elegance outweighs the inherent limitation to additive synthesis. We describe a sequence of teachable moments that highlight the potential of functional audio processing at an early stage in the learning process, before streams or arrays are introduced.","PeriodicalId":159099,"journal":{"name":"Proceedings of the 2021 ACM SIGPLAN International Symposium on SPLASH-E","volume":"76 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2021-10-17","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124885174","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 2
Ruggedizing CS1 robotics: tools and approaches for online teaching 加固CS1机器人:在线教学的工具和方法
Pub Date : 2021-10-17 DOI: 10.1145/3484272.3484969
Boyd Anderson, M. Henz, Hao-Wei Tee
First-year students benefit from robotics-based programming exercises by learning how to use sensors to gain information on the (changing) world surrounding the robot, how to model this information using data structures, and how to design algorithms for performing meaningful activities. Robotics-based exercises are naturally experiential and team-based and provide among the most memorable teachable moments of first-year programming courses. We summarize the pedagogical challenges that robotics-based exercises face, even under ideal circumstances, and how a university responded to these challenges. We report on the additional challenges faced in late 2020 at the same university as a result of the COVID pandemic, and how the course staff addressed these challenges using programming language implementation and network tools. The crucial components were (1) a custom-built web-based development environment with collaborative features including a built-in compiler, (2) a portable virtual machine, (3) collaborative editing, (4) open source protocols, and (5) peer-to-peer teleconferencing software. We report on the lessons learnt and how to further improve the resilience of robotics-based programming exercises.
一年级学生通过学习如何使用传感器获取机器人周围(不断变化的)世界的信息,如何使用数据结构对这些信息进行建模,以及如何为执行有意义的活动设计算法,从而受益于基于机器人的编程练习。基于机器人的练习自然是基于体验和团队的,并提供了第一年编程课程中最难忘的教学时刻之一。我们总结了即使在理想情况下,基于机器人的练习所面临的教学挑战,以及大学如何应对这些挑战。我们报告了2020年底在同一所大学因COVID大流行而面临的额外挑战,以及课程工作人员如何使用编程语言实现和网络工具应对这些挑战。关键的组成部分是:(1)定制的基于web的开发环境,具有协作特性,包括内置编译器,(2)便携式虚拟机,(3)协作编辑,(4)开源协议,(5)点对点远程会议软件。我们报告了经验教训,以及如何进一步提高基于机器人的编程练习的弹性。
{"title":"Ruggedizing CS1 robotics: tools and approaches for online teaching","authors":"Boyd Anderson, M. Henz, Hao-Wei Tee","doi":"10.1145/3484272.3484969","DOIUrl":"https://doi.org/10.1145/3484272.3484969","url":null,"abstract":"First-year students benefit from robotics-based programming exercises by learning how to use sensors to gain information on the (changing) world surrounding the robot, how to model this information using data structures, and how to design algorithms for performing meaningful activities. Robotics-based exercises are naturally experiential and team-based and provide among the most memorable teachable moments of first-year programming courses. We summarize the pedagogical challenges that robotics-based exercises face, even under ideal circumstances, and how a university responded to these challenges. We report on the additional challenges faced in late 2020 at the same university as a result of the COVID pandemic, and how the course staff addressed these challenges using programming language implementation and network tools. The crucial components were (1) a custom-built web-based development environment with collaborative features including a built-in compiler, (2) a portable virtual machine, (3) collaborative editing, (4) open source protocols, and (5) peer-to-peer teleconferencing software. We report on the lessons learnt and how to further improve the resilience of robotics-based programming exercises.","PeriodicalId":159099,"journal":{"name":"Proceedings of the 2021 ACM SIGPLAN International Symposium on SPLASH-E","volume":"54 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2021-10-17","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132625698","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 3
Teaching DevOps: a tale of two universities DevOps教学:两所大学的故事
Pub Date : 2021-10-17 DOI: 10.1145/3484272.3484962
R. Hobeck, I. Weber, L. Bass, Hasan Yasar
DevOps is a set of practices in software engineering that is in high demand by industry. It is a dynamic field which constantly adds new methods and tools. Teaching DevOps prepares today’s computer science students for best-practices in a working environment but challenges university lecturers to provide central concepts while staying up-to-date with current trends. In this paper we report and reflect on our experiences teaching DevOps at two universities (in the USA and Germany) in an inverted classroom format. We describe how we set-up the courses, provide a brief analysis of data we collected, and share our lessons learned.
DevOps是软件工程中的一组实践,在行业中需求量很大。这是一个动态的领域,不断增加新的方法和工具。教授DevOps为当今计算机科学专业的学生准备了工作环境中的最佳实践,但同时也挑战了大学讲师在提供核心概念的同时要跟上当前的趋势。在这篇文章中,我们报告并反思了我们在两所大学(美国和德国)以颠倒课堂的形式教授DevOps的经验。我们描述了我们如何设置课程,对我们收集的数据进行了简要分析,并分享了我们的经验教训。
{"title":"Teaching DevOps: a tale of two universities","authors":"R. Hobeck, I. Weber, L. Bass, Hasan Yasar","doi":"10.1145/3484272.3484962","DOIUrl":"https://doi.org/10.1145/3484272.3484962","url":null,"abstract":"DevOps is a set of practices in software engineering that is in high demand by industry. It is a dynamic field which constantly adds new methods and tools. Teaching DevOps prepares today’s computer science students for best-practices in a working environment but challenges university lecturers to provide central concepts while staying up-to-date with current trends. In this paper we report and reflect on our experiences teaching DevOps at two universities (in the USA and Germany) in an inverted classroom format. We describe how we set-up the courses, provide a brief analysis of data we collected, and share our lessons learned.","PeriodicalId":159099,"journal":{"name":"Proceedings of the 2021 ACM SIGPLAN International Symposium on SPLASH-E","volume":"4 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2021-10-17","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126931073","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 6
Shrinking JavaScript for CS1 为CS1收缩JavaScript
Pub Date : 2021-10-17 DOI: 10.1145/3484272.3484970
Boyd Anderson, M. Henz, Kok-Lim Low, Daryl Tan
In teaching and learning programming at first-year-university level, simple languages with small feature sets are preferable over industry-strength languages with extensive feature sets, to reduce the learners' cognitive load. At the same time, there is increasing pressure to familiarise students with mainstream languages early in their learning journey, and these languages accumulate features as years go by. In response to these competing requirements, we developed Source, a collection of JavaScript sublanguages with feature sets just expressive enough to introduce first-year computer science students to the elements of computation. These languages are supported by a web-based programming environment custom-built for learning at beginner's level, which provides transpiler, interpreter, virtual machine, and algebraic-stepper-based implementations of the languages, and includes tracing, debugging, visualization, type-inference, and smart-editor features. This paper motivates the choice of JavaScript as starting point and describes the syntax and semantics of the Source languages compared to their parent language, and their implementations in the system. We report our experiences in developing and improving the languages and implementations over a period of three years, teaching a total of 1561 computer science first-year students at a university.
在大学一年级的编程教学中,具有小功能集的简单语言比具有广泛功能集的行业语言更受欢迎,以减少学习者的认知负荷。与此同时,在学生的学习过程中,让他们尽早熟悉主流语言的压力越来越大,随着时间的推移,这些语言的特征也在不断积累。为了应对这些相互竞争的需求,我们开发了Source,这是一组JavaScript子语言,其特性集的表达能力足以向计算机科学一年级的学生介绍计算的元素。这些语言由一个基于web的编程环境支持,该环境是为初学者定制的,它提供了这些语言的转译器、解释器、虚拟机和基于代数步进的实现,并包括跟踪、调试、可视化、类型推断和智能编辑器功能。本文的动机是选择JavaScript作为起点,并描述了源语言与父语言的语法和语义,以及它们在系统中的实现。我们报告了我们在三年的时间里开发和改进语言和实现的经验,在一所大学教授了1561名计算机科学一年级学生。
{"title":"Shrinking JavaScript for CS1","authors":"Boyd Anderson, M. Henz, Kok-Lim Low, Daryl Tan","doi":"10.1145/3484272.3484970","DOIUrl":"https://doi.org/10.1145/3484272.3484970","url":null,"abstract":"In teaching and learning programming at first-year-university level, simple languages with small feature sets are preferable over industry-strength languages with extensive feature sets, to reduce the learners' cognitive load. At the same time, there is increasing pressure to familiarise students with mainstream languages early in their learning journey, and these languages accumulate features as years go by. In response to these competing requirements, we developed Source, a collection of JavaScript sublanguages with feature sets just expressive enough to introduce first-year computer science students to the elements of computation. These languages are supported by a web-based programming environment custom-built for learning at beginner's level, which provides transpiler, interpreter, virtual machine, and algebraic-stepper-based implementations of the languages, and includes tracing, debugging, visualization, type-inference, and smart-editor features. This paper motivates the choice of JavaScript as starting point and describes the syntax and semantics of the Source languages compared to their parent language, and their implementations in the system. We report our experiences in developing and improving the languages and implementations over a period of three years, teaching a total of 1561 computer science first-year students at a university.","PeriodicalId":159099,"journal":{"name":"Proceedings of the 2021 ACM SIGPLAN International Symposium on SPLASH-E","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2021-10-17","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114543185","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 3
PaCon: a symbolic analysis approach for tactic-oriented clustering of programming submissions PaCon:用于面向策略的编程提交聚类的符号分析方法
Pub Date : 2021-10-17 DOI: 10.1145/3484272.3484963
Yingjie Fu, Jonathan Osei-Owusu, Angello Astorga, Zirui Neil Zhao, Wei Zhang, Tao Xie
Enrollment in programming courses increasingly surges. To maintain the quality of education in programming courses, instructors need ways to understand the performance of students and give feedback accordingly at scale. For example, it is important for instructors to identify different problem-solving ways (named as tactics in this paper) used in programming submissions. However, because there exist many abstraction levels of tactics and high implementation diversity of the same tactic, it is challenging and time-consuming for instructors to manually tackle the task of tactic identification. Toward this task, we propose PaCon, a symbolic analysis approach for clustering functionally correct programming submissions to provide a way of identifying tactics. In particular, PaCon clusters submissions according to path conditions, a semantic feature of programs. Because of the focus on program semantics, PaCon does not struggle with the issue of an excessive number of clusters caused by subtle syntactic differences between submissions. Our experimental results on real-world data sets show that PaCon can produce a reasonable number of clusters each of which effectively groups together those submissions with high syntax diversity while sharing equivalent path-condition-based semantics, providing a promising way toward identifying tactics.
编程课程的注册人数日益激增。为了保持编程课程的教学质量,教师需要了解学生的表现并给予相应的反馈。例如,对于讲师来说,识别在编程提交中使用的不同解决问题的方法(在本文中称为策略)是很重要的。然而,由于战术存在许多抽象层次,并且同一战术的实现多样性很大,因此教师手动处理战术识别任务既具有挑战性又耗时。为了完成这项任务,我们提出了PaCon,一种用于聚类功能正确的编程提交的符号分析方法,以提供一种识别策略的方法。特别是,PaCon根据路径条件聚集提交,这是程序的语义特征。由于专注于程序语义,PaCon不会与提交之间细微的语法差异所导致的集群数量过多的问题作斗争。我们在真实世界数据集上的实验结果表明,PaCon可以产生合理数量的聚类,每个聚类都有效地将那些具有高语法多样性的提交分组在一起,同时共享等效的基于路径条件的语义,为识别策略提供了一种有希望的方法。
{"title":"PaCon: a symbolic analysis approach for tactic-oriented clustering of programming submissions","authors":"Yingjie Fu, Jonathan Osei-Owusu, Angello Astorga, Zirui Neil Zhao, Wei Zhang, Tao Xie","doi":"10.1145/3484272.3484963","DOIUrl":"https://doi.org/10.1145/3484272.3484963","url":null,"abstract":"Enrollment in programming courses increasingly surges. To maintain the quality of education in programming courses, instructors need ways to understand the performance of students and give feedback accordingly at scale. For example, it is important for instructors to identify different problem-solving ways (named as tactics in this paper) used in programming submissions. However, because there exist many abstraction levels of tactics and high implementation diversity of the same tactic, it is challenging and time-consuming for instructors to manually tackle the task of tactic identification. Toward this task, we propose PaCon, a symbolic analysis approach for clustering functionally correct programming submissions to provide a way of identifying tactics. In particular, PaCon clusters submissions according to path conditions, a semantic feature of programs. Because of the focus on program semantics, PaCon does not struggle with the issue of an excessive number of clusters caused by subtle syntactic differences between submissions. Our experimental results on real-world data sets show that PaCon can produce a reasonable number of clusters each of which effectively groups together those submissions with high syntax diversity while sharing equivalent path-condition-based semantics, providing a promising way toward identifying tactics.","PeriodicalId":159099,"journal":{"name":"Proceedings of the 2021 ACM SIGPLAN International Symposium on SPLASH-E","volume":"11 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2021-10-17","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127013080","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 2
“You have said too much”: Java-like verbosity anti-patterns in Python codebases “你说得太多了”:Python代码库中类似java的冗长反模式
Pub Date : 2021-10-17 DOI: 10.1145/3484272.3484960
Yuzhi Ma, E. Tilevich
As a popular language for teaching introductory programming, Java can profoundly influence beginner programmers with its coding style and idioms. Despite its many advantages, the paradigmatic coding style in Java is often described as verbose. As a result, when writing code in more concise languages, such programmers tend to emulate the familiar Java coding idioms, thus neglecting to take advantage of the more succinct counterparts in those languages. As a result of such verbosity, not only the overall code quality suffers, but the verbose non-idiomatic patterns also render code hard to understand and maintain. In this paper, we study the incidences of Java-like verbosity as they occur in Python codebases. We present a collection of Java-Like Verbosity Anti-patterns and our pilot study of their presence in representative open-source Python codebases. We discuss our findings as a call for action to computing educators, particularly those who work with introductory students. We need novel pedagogical interventions that encourage budding programmers to write concise idiomatic code in any language.
作为一种流行的编程入门语言,Java可以用它的编码风格和习惯对初级程序员产生深远的影响。尽管Java中的范式编码风格有许多优点,但它经常被描述为冗长。因此,当用更简洁的语言编写代码时,这样的程序员倾向于模仿熟悉的Java编码习惯,从而忽略了利用这些语言中更简洁的对应物。由于这种冗长,不仅整体代码质量受到影响,而且冗长的非惯用模式也使代码难以理解和维护。在本文中,我们研究了Python代码库中类似java的冗长的发生率。我们提供了一系列类似java的冗长反模式,并对它们在代表性开源Python代码库中的存在进行了初步研究。我们讨论我们的发现,作为对计算机教育工作者的行动呼吁,特别是那些与入门级学生一起工作的人。我们需要新颖的教学干预,鼓励崭露头角的程序员用任何语言编写简洁的习惯代码。
{"title":"“You have said too much”: Java-like verbosity anti-patterns in Python codebases","authors":"Yuzhi Ma, E. Tilevich","doi":"10.1145/3484272.3484960","DOIUrl":"https://doi.org/10.1145/3484272.3484960","url":null,"abstract":"As a popular language for teaching introductory programming, Java can profoundly influence beginner programmers with its coding style and idioms. Despite its many advantages, the paradigmatic coding style in Java is often described as verbose. As a result, when writing code in more concise languages, such programmers tend to emulate the familiar Java coding idioms, thus neglecting to take advantage of the more succinct counterparts in those languages. As a result of such verbosity, not only the overall code quality suffers, but the verbose non-idiomatic patterns also render code hard to understand and maintain. In this paper, we study the incidences of Java-like verbosity as they occur in Python codebases. We present a collection of Java-Like Verbosity Anti-patterns and our pilot study of their presence in representative open-source Python codebases. We discuss our findings as a call for action to computing educators, particularly those who work with introductory students. We need novel pedagogical interventions that encourage budding programmers to write concise idiomatic code in any language.","PeriodicalId":159099,"journal":{"name":"Proceedings of the 2021 ACM SIGPLAN International Symposium on SPLASH-E","volume":"76 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2021-10-17","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124986476","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 1
The common coder’s scratch programming idioms and their impact on project remixing 常见的编程习惯及其对项目混音的影响
Pub Date : 2021-10-17 DOI: 10.1145/3484272.3484959
Xingyu Long, Peeratham Techapalokul, E. Tilevich
As Scratch has become one of the most popular educational programming languages, understanding its common programming idioms can benefit both computing educators and learners. This understanding can fine-tune the curricular development to help learners master the fundamentals of writing idiomatic code in their programming pursuits. Unfortunately, the research community's understanding of what constitutes idiomatic Scratch code has been limited. To help bridge this knowledge gap, we systematically identified idioms as based on canonical source code, presented in widely available educational materials. We implemented a tool that automatically detects these idioms to assess their prevalence within a large dataset of over 70K Scratch projects in different experience backgrounds and project categories. Since communal learning and the practice of remixing are one of the cornerstones of the Scratch programming community, we studied the relationship between common programming idioms and remixes. Having analyzed the original projects and their remixes, we observed that different idioms may associate with dissimilar types of code changes. Code changes in remixes are desirable, as they require a meaningful programming effort that spurs the learning process. The ability to substantially change a project in its remixes hinges on the project's code being easy to understand and modify. Our findings suggest that the presence of certain common idioms can indeed positively impact the degree of code changes in remixes. Our findings can help form a foundation of what comprises common Scratch programming idioms, thus benefiting both introductory computing education and Scratch programming tools.
由于Scratch已经成为最流行的教育编程语言之一,理解它的常见编程习惯对计算机教育者和学习者都有好处。这种理解可以微调课程开发,帮助学习者在编程追求中掌握编写习惯代码的基础知识。不幸的是,研究团体对于什么构成了惯用的Scratch代码的理解是有限的。为了帮助弥合这一知识差距,我们系统地确定了基于规范源代码的习惯用法,这些规范源代码在广泛可用的教育材料中提供。我们实现了一个工具,可以自动检测这些习语,以评估它们在70K多个不同经验背景和项目类别的Scratch项目的大数据集中的流行程度。由于公共学习和重新混合的实践是Scratch编程社区的基石之一,我们研究了常见的编程习惯用法和重新混合之间的关系。在分析了原始项目及其混合后,我们发现不同的习惯用法可能与不同类型的代码更改相关联。混音中的代码更改是可取的,因为它们需要有意义的编程工作,从而刺激学习过程。在其混音中对项目进行实质性更改的能力取决于项目代码是否易于理解和修改。我们的研究结果表明,某些常见习语的存在确实会对混音中的代码变化程度产生积极影响。我们的发现可以帮助形成一个基础,包括常见的Scratch编程习惯,从而有利于入门计算教育和Scratch编程工具。
{"title":"The common coder’s scratch programming idioms and their impact on project remixing","authors":"Xingyu Long, Peeratham Techapalokul, E. Tilevich","doi":"10.1145/3484272.3484959","DOIUrl":"https://doi.org/10.1145/3484272.3484959","url":null,"abstract":"As Scratch has become one of the most popular educational programming languages, understanding its common programming idioms can benefit both computing educators and learners. This understanding can fine-tune the curricular development to help learners master the fundamentals of writing idiomatic code in their programming pursuits. Unfortunately, the research community's understanding of what constitutes idiomatic Scratch code has been limited. To help bridge this knowledge gap, we systematically identified idioms as based on canonical source code, presented in widely available educational materials. We implemented a tool that automatically detects these idioms to assess their prevalence within a large dataset of over 70K Scratch projects in different experience backgrounds and project categories. Since communal learning and the practice of remixing are one of the cornerstones of the Scratch programming community, we studied the relationship between common programming idioms and remixes. Having analyzed the original projects and their remixes, we observed that different idioms may associate with dissimilar types of code changes. Code changes in remixes are desirable, as they require a meaningful programming effort that spurs the learning process. The ability to substantially change a project in its remixes hinges on the project's code being easy to understand and modify. Our findings suggest that the presence of certain common idioms can indeed positively impact the degree of code changes in remixes. Our findings can help form a foundation of what comprises common Scratch programming idioms, thus benefiting both introductory computing education and Scratch programming tools.","PeriodicalId":159099,"journal":{"name":"Proceedings of the 2021 ACM SIGPLAN International Symposium on SPLASH-E","volume":"84 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2021-10-17","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130818344","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
期刊
Proceedings of the 2021 ACM SIGPLAN International Symposium on SPLASH-E
全部 Acc. Chem. Res. ACS Applied Bio Materials ACS Appl. Electron. Mater. ACS Appl. Energy Mater. ACS Appl. Mater. Interfaces ACS Appl. Nano Mater. ACS Appl. Polym. Mater. ACS BIOMATER-SCI ENG ACS Catal. ACS Cent. Sci. ACS Chem. Biol. ACS Chemical Health & Safety ACS Chem. Neurosci. ACS Comb. Sci. ACS Earth Space Chem. ACS Energy Lett. ACS Infect. Dis. ACS Macro Lett. ACS Mater. Lett. ACS Med. Chem. Lett. ACS Nano ACS Omega ACS Photonics ACS Sens. ACS Sustainable Chem. Eng. ACS Synth. Biol. Anal. Chem. BIOCHEMISTRY-US Bioconjugate Chem. BIOMACROMOLECULES Chem. Res. Toxicol. Chem. Rev. Chem. Mater. CRYST GROWTH DES ENERG FUEL Environ. Sci. Technol. Environ. Sci. Technol. Lett. Eur. J. Inorg. Chem. IND ENG CHEM RES Inorg. Chem. J. Agric. Food. Chem. J. Chem. Eng. Data J. Chem. Educ. J. Chem. Inf. Model. J. Chem. Theory Comput. J. Med. Chem. J. Nat. Prod. J PROTEOME RES J. Am. Chem. Soc. LANGMUIR MACROMOLECULES Mol. Pharmaceutics Nano Lett. Org. Lett. ORG PROCESS RES DEV ORGANOMETALLICS J. Org. Chem. J. Phys. Chem. J. Phys. Chem. A J. Phys. Chem. B J. Phys. Chem. C J. Phys. Chem. Lett. Analyst Anal. Methods Biomater. Sci. Catal. Sci. Technol. Chem. Commun. Chem. Soc. Rev. CHEM EDUC RES PRACT CRYSTENGCOMM Dalton Trans. Energy Environ. Sci. ENVIRON SCI-NANO ENVIRON SCI-PROC IMP ENVIRON SCI-WAT RES Faraday Discuss. Food Funct. Green Chem. Inorg. Chem. Front. Integr. Biol. J. Anal. At. Spectrom. J. Mater. Chem. A J. Mater. Chem. B J. Mater. Chem. C Lab Chip Mater. Chem. Front. Mater. Horiz. MEDCHEMCOMM Metallomics Mol. Biosyst. Mol. Syst. Des. Eng. Nanoscale Nanoscale Horiz. Nat. Prod. Rep. New J. Chem. Org. Biomol. Chem. Org. Chem. Front. PHOTOCH PHOTOBIO SCI PCCP Polym. Chem.
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
0
微信
客服QQ
Book学术公众号 扫码关注我们
反馈
×
意见反馈
请填写您的意见或建议
请填写您的手机或邮箱
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
现在去查看 取消
×
提示
确定
Book学术官方微信
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1