首页 > 最新文献

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

英文 中文
Towards answering “Am I on the right track?” automatically using program synthesis 在回答“我走对了吗?”自动使用程序合成
Pub Date : 2019-10-25 DOI: 10.1145/3358711.3361626
Molly Q. Feldman, Yiting Wang, William E. Byrd, François Guimbretière, Erik Andersen
Students learning to program often need help completing assignments and understanding why their code does not work as they expect it to. One common place where they seek such help is at teaching assistant office hours. We found that teaching assistants in introductory programming (CS1) courses frequently answer some variant of the question ``Am I on the Right Track?''. The goal of this work is to develop an automated tool that provides similar feedback for students in real-time from within an IDE as they are writing their program. Existing automated tools lack the generality that we seek, often assuming a single approach to a problem, using hand-coded error models, or applying sample fixes from other students. In this paper, we explore the use of program synthesis to provide less constrained automated answers to ``Am I on the Right Track'' (AIORT) questions. We describe an observational study of TA-student interactions that supports targeting AIORT questions, as well as the development of and design considerations behind a prototype integrated development environment (IDE). The IDE uses an existing program synthesis engine to determine if a student is on the right track and we present pilot user studies of its use.
学习编程的学生经常需要帮助来完成作业,并理解为什么他们的代码不能像他们期望的那样工作。他们寻求帮助的一个常见的地方是在助教的办公时间。我们发现,在程序设计入门(CS1)课程中,助教经常回答这样的问题:“我走对了吗?”这项工作的目标是开发一个自动化的工具,在学生编写程序时,在IDE中实时为他们提供类似的反馈。现有的自动化工具缺乏我们所寻求的通用性,通常假设一个问题的单一方法,使用手工编码的错误模型,或者应用其他学生的样本修复。在本文中,我们探索使用程序合成来为“我是否在正确的轨道上”(AIORT)问题提供较少约束的自动答案。我们描述了一项支持针对AIORT问题的ta学生互动的观察性研究,以及原型集成开发环境(IDE)背后的开发和设计考虑。IDE使用现有的程序合成引擎来确定学生是否在正确的轨道上,我们提供了其使用的试点用户研究。
{"title":"Towards answering “Am I on the right track?” automatically using program synthesis","authors":"Molly Q. Feldman, Yiting Wang, William E. Byrd, François Guimbretière, Erik Andersen","doi":"10.1145/3358711.3361626","DOIUrl":"https://doi.org/10.1145/3358711.3361626","url":null,"abstract":"Students learning to program often need help completing assignments and understanding why their code does not work as they expect it to. One common place where they seek such help is at teaching assistant office hours. We found that teaching assistants in introductory programming (CS1) courses frequently answer some variant of the question ``Am I on the Right Track?''. The goal of this work is to develop an automated tool that provides similar feedback for students in real-time from within an IDE as they are writing their program. Existing automated tools lack the generality that we seek, often assuming a single approach to a problem, using hand-coded error models, or applying sample fixes from other students. In this paper, we explore the use of program synthesis to provide less constrained automated answers to ``Am I on the Right Track'' (AIORT) questions. We describe an observational study of TA-student interactions that supports targeting AIORT questions, as well as the development of and design considerations behind a prototype integrated development environment (IDE). The IDE uses an existing program synthesis engine to determine if a student is on the right track and we present pilot user studies of its use.","PeriodicalId":190350,"journal":{"name":"Proceedings of the 2019 ACM SIGPLAN Symposium on SPLASH-E","volume":"59 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-10-25","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121434565","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}
引用次数: 8
Theia: automatically generating correct program state visualizations 自动生成正确的程序状态可视化
Pub Date : 2019-10-25 DOI: 10.1145/3358711.3361625
Josh Pollock, Jared Roesch, Doug Woos, Zachary Tatlock
Program state visualizations (PSVs) help programmers understand hidden program state like objects, references, and closures. Unfortunately, existing PSV tools do not support custom language semantics, which educators often use to introduce programming languages gradually. They also fail to visualize key pieces of program state, which can lead to incorrect and confusing visualizations. Theia, a generic PSV framework, uses formal abstract machine definitions to produce complete, continuous, and consistent (CCC) PSVs. To produce CCC visualizations with Theia, an educator only needs to specify an abstract machine and optionally customize the resulting web page, allowing her to visualize custom language semantics without developing a language-specific tool.
程序状态可视化(psv)帮助程序员理解隐藏的程序状态,如对象、引用和闭包。不幸的是,现有的PSV工具不支持自定义语言语义,而教育者经常使用自定义语言语义来逐步引入编程语言。它们也不能可视化程序状态的关键部分,这可能导致不正确和令人困惑的可视化。Theia是一个通用的PSV框架,它使用正式的抽象机器定义来生成完整的、连续的和一致的(CCC) PSV。要使用Theia生成CCC可视化,教育者只需要指定一个抽象机器,并可选择自定义结果网页,允许她可视化自定义语言语义,而无需开发特定于语言的工具。
{"title":"Theia: automatically generating correct program state visualizations","authors":"Josh Pollock, Jared Roesch, Doug Woos, Zachary Tatlock","doi":"10.1145/3358711.3361625","DOIUrl":"https://doi.org/10.1145/3358711.3361625","url":null,"abstract":"Program state visualizations (PSVs) help programmers understand hidden program state like objects, references, and closures. Unfortunately, existing PSV tools do not support custom language semantics, which educators often use to introduce programming languages gradually. They also fail to visualize key pieces of program state, which can lead to incorrect and confusing visualizations. Theia, a generic PSV framework, uses formal abstract machine definitions to produce complete, continuous, and consistent (CCC) PSVs. To produce CCC visualizations with Theia, an educator only needs to specify an abstract machine and optionally customize the resulting web page, allowing her to visualize custom language semantics without developing a language-specific tool.","PeriodicalId":190350,"journal":{"name":"Proceedings of the 2019 ACM SIGPLAN Symposium on SPLASH-E","volume":"13 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-10-25","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116845404","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
Microsoft MakeCode: embedded programming for education, in blocks and TypeScript 微软MakeCode:用于教育的嵌入式编程,block和TypeScript
Pub Date : 2019-10-25 DOI: 10.1145/3358711.3361630
T. Ball, Abhijith Chatra, J. D. Halleux, Steve Hodges, Michal Moskal, Jacqueline Russell
Microsoft MakeCode (https://www.makecode.com) is a platform and accompanying web app for simplifying the programming of microcontroller-based devices in the classroom. For each device, MakeCode provides a customized end-to-end experience in the web browser consisting of code editors, device simulator, debugger, compiler to machine code, and linker to a pre-compiled C++ runtime, as well as a documentation and tutorial system. We present an overview of MakeCode and detail the major design decisions behind the platform.
微软MakeCode (https://www.makecode.com)是一个平台和配套的web应用程序,用于简化基于微控制器的设备在课堂上的编程。对于每个设备,MakeCode在web浏览器中提供定制的端到端体验,包括代码编辑器,设备模拟器,调试器,机器码编译器,预编译的c++运行时链接器,以及文档和教程系统。我们概述了MakeCode,并详细介绍了该平台背后的主要设计决策。
{"title":"Microsoft MakeCode: embedded programming for education, in blocks and TypeScript","authors":"T. Ball, Abhijith Chatra, J. D. Halleux, Steve Hodges, Michal Moskal, Jacqueline Russell","doi":"10.1145/3358711.3361630","DOIUrl":"https://doi.org/10.1145/3358711.3361630","url":null,"abstract":"Microsoft MakeCode (https://www.makecode.com) is a platform and accompanying web app for simplifying the programming of microcontroller-based devices in the classroom. For each device, MakeCode provides a customized end-to-end experience in the web browser consisting of code editors, device simulator, debugger, compiler to machine code, and linker to a pre-compiled C++ runtime, as well as a documentation and tutorial system. We present an overview of MakeCode and detail the major design decisions behind the platform.","PeriodicalId":190350,"journal":{"name":"Proceedings of the 2019 ACM SIGPLAN Symposium on SPLASH-E","volume":"76 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-10-25","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121658237","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}
引用次数: 21
Experiences in bridging from functional to object-oriented programming 有从函数式编程过渡到面向对象编程的经验
Pub Date : 2019-10-25 DOI: 10.1145/3358711.3361628
Igor Moreno Santos, Matthias Hauswirth, Nathaniel Nystrom
Understanding how students' prior knowledge affects their learning of new concepts is essential for effective teaching. The same learning activity, or the same explanation, may have very different effects on students with different prior knowledge. In the context of teaching programming, prior knowledge includes the programming languages students studied in prior courses. In this experience report we describe our observations in teaching object-oriented programming in Java to students who previously learned functional programming in Racket's student languages. We highlight four concrete problems we encountered in teaching the second course in this sequence. We detected and addressed these problems primarily thanks to a teaching assistant who assisted in both of the courses. This experience made us realize the importance of explicitly bridging between languages in introductory programming course sequences. It also showed that the sharing of teaching staff across courses can be an effective way to detect aspects that need bridging.
了解学生的先验知识如何影响他们对新概念的学习是有效教学的关键。同样的学习活动,或者同样的解释,可能对具有不同先验知识的学生产生非常不同的影响。在编程教学中,先验知识包括学生在先验课程中学习过的编程语言。在这份经验报告中,我们描述了我们在向以前用Racket的学生语言学习函数式编程的学生教授Java面向对象编程时的观察。我们重点介绍了我们在这个顺序的第二门课程的教学中遇到的四个具体问题。我们发现并解决了这些问题,主要要感谢一位在这两门课程中都提供帮助的助教。这一经历使我们意识到在编程入门课程序列中明确地在语言之间架起桥梁的重要性。它还表明,跨课程的教学人员共享是发现需要弥合的方面的有效方法。
{"title":"Experiences in bridging from functional to object-oriented programming","authors":"Igor Moreno Santos, Matthias Hauswirth, Nathaniel Nystrom","doi":"10.1145/3358711.3361628","DOIUrl":"https://doi.org/10.1145/3358711.3361628","url":null,"abstract":"Understanding how students' prior knowledge affects their learning of new concepts is essential for effective teaching. The same learning activity, or the same explanation, may have very different effects on students with different prior knowledge. In the context of teaching programming, prior knowledge includes the programming languages students studied in prior courses. In this experience report we describe our observations in teaching object-oriented programming in Java to students who previously learned functional programming in Racket's student languages. We highlight four concrete problems we encountered in teaching the second course in this sequence. We detected and addressed these problems primarily thanks to a teaching assistant who assisted in both of the courses. This experience made us realize the importance of explicitly bridging between languages in introductory programming course sequences. It also showed that the sharing of teaching staff across courses can be an effective way to detect aspects that need bridging.","PeriodicalId":190350,"journal":{"name":"Proceedings of the 2019 ACM SIGPLAN Symposium on SPLASH-E","volume":"18 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-10-25","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125046814","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
Evaluating ProDirect manipulation in hour of code 在一个小时的代码中评估ProDirect操作
Pub Date : 2019-10-25 DOI: 10.1145/3358711.3361623
Quan Do, Kiersten Campbell, Emmie Hine, Dzung X. Pham, Alex S. Taylor, I. Howley, Daniel W. Barowy
We examine whether augmenting traditional coding environments with ProDirect manipulation improves several learning measures. ProDirect manipulation is a novel user interaction model that provides a bidirectional link between code and outputs. Instead of reasoning abstractly about the output a program might produce, users instead directly manipulate outputs (e.g., using a keyboard and mouse). Program text is then updated to reflect the change. We report the effects on learning using a ProDirect manipulation environment versus a standard development environment for more than one hundred middle school students. To conduct the study, we built SWELL, a programming language with ProDirect manipulation features. We conclude that within the context of an Hour-of-Code course, ProDirect manipulation does not offer a significant advantage. We also make several observations regarding the way students interact with SWELL, which may inform future language design for this age group.
我们研究了用ProDirect操作来增强传统的编码环境是否能改善一些学习措施。ProDirect操作是一种新颖的用户交互模型,它提供了代码和输出之间的双向链接。用户不再抽象地推理程序可能产生的输出,而是直接操作输出(例如,使用键盘和鼠标)。然后更新程序文本以反映更改。我们报告了使用ProDirect操作环境与标准开发环境对一百多名中学生学习的影响。为了进行这项研究,我们构建了SWELL,这是一种具有ProDirect操作功能的编程语言。我们得出的结论是,在一小时代码课程的背景下,ProDirect操作并没有提供显着的优势。我们还对学生与SWELL互动的方式进行了一些观察,这可能会为这个年龄组的未来语言设计提供信息。
{"title":"Evaluating ProDirect manipulation in hour of code","authors":"Quan Do, Kiersten Campbell, Emmie Hine, Dzung X. Pham, Alex S. Taylor, I. Howley, Daniel W. Barowy","doi":"10.1145/3358711.3361623","DOIUrl":"https://doi.org/10.1145/3358711.3361623","url":null,"abstract":"We examine whether augmenting traditional coding environments with ProDirect manipulation improves several learning measures. ProDirect manipulation is a novel user interaction model that provides a bidirectional link between code and outputs. Instead of reasoning abstractly about the output a program might produce, users instead directly manipulate outputs (e.g., using a keyboard and mouse). Program text is then updated to reflect the change. We report the effects on learning using a ProDirect manipulation environment versus a standard development environment for more than one hundred middle school students. To conduct the study, we built SWELL, a programming language with ProDirect manipulation features. We conclude that within the context of an Hour-of-Code course, ProDirect manipulation does not offer a significant advantage. We also make several observations regarding the way students interact with SWELL, which may inform future language design for this age group.","PeriodicalId":190350,"journal":{"name":"Proceedings of the 2019 ACM SIGPLAN Symposium on SPLASH-E","volume":"6 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-10-25","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125405111","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
Parallelism in practice: experiences teaching concurrency and parallelism in an undergraduate OS course 实践中的并行性:在本科操作系统课程中教授并行性和并行性的经验
Pub Date : 2019-10-25 DOI: 10.1145/3358711.3361624
Charlie Curtsinger
Parallelism and concurrency are important topics that, according to ACM guidelines, should be part of every undergraduate computer science education. At Grinnell College, these concepts are covered in CSC 213, the operating systems course. In this course, students complete a series of four labs on concurrency to learn the basics of threads and data-parallel computation, how to deal with concurrency errors, and how to write efficient, scalable parallel code. This paper describes these labs and our experience using them for three sections of CSC 213.
根据ACM的指导方针,并行性和并发性是重要的主题,应该是每个本科计算机科学教育的一部分。在格林内尔学院,这些概念涵盖在CSC 213,即操作系统课程中。在本课程中,学生将完成一系列关于并发的四个实验,以学习线程和数据并行计算的基础知识,如何处理并发错误,以及如何编写高效、可扩展的并行代码。本文描述了这些实验室和我们在CSC 213的三个部分中使用它们的经验。
{"title":"Parallelism in practice: experiences teaching concurrency and parallelism in an undergraduate OS course","authors":"Charlie Curtsinger","doi":"10.1145/3358711.3361624","DOIUrl":"https://doi.org/10.1145/3358711.3361624","url":null,"abstract":"Parallelism and concurrency are important topics that, according to ACM guidelines, should be part of every undergraduate computer science education. At Grinnell College, these concepts are covered in CSC 213, the operating systems course. In this course, students complete a series of four labs on concurrency to learn the basics of threads and data-parallel computation, how to deal with concurrency errors, and how to write efficient, scalable parallel code. This paper describes these labs and our experience using them for three sections of CSC 213.","PeriodicalId":190350,"journal":{"name":"Proceedings of the 2019 ACM SIGPLAN Symposium on SPLASH-E","volume":"9 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-10-25","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"134506799","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
Lambdulus: teaching lambda calculus practically 实用的lambda微积分教学
Pub Date : 2019-10-25 DOI: 10.1145/3358711.3361629
Jan Sliacky, Petr Maj
λ calculus is a great formal introduction to functional programming. However, its abstract nature poses a challenge for many students as they struggle both with the unfamiliarity of functional programming and with the high abstraction and minimalism of λ calculus. As a result, functional programming classes are often delayed to older students who are hoped to be better prepared for appreciating its qualities, as was the case at the authors’ university as well. 3 years ago, as part of a redesigned curriculum around programming languages education, we have decided to introduce students to various programming paradigms much sooner than before. In doing so, we faced the problem of explaining very theoretical foundational concepts to very young students in a very short time. We have monitored the achievements and shortcomings of the new course over the past years and as a result of our findings have developed Lambdulus, an interactive and visual evaluator of λ calculus expressions that encourages students to explore the mechanisms of λ calculus by treating it not as a theoretical concept, but as a programming language in its own right.
λ微积分是函数式编程的一个很好的正式介绍。然而,它的抽象性质给许多学生带来了挑战,因为他们既不熟悉函数式编程,又不熟悉λ微积分的高度抽象和极简主义。因此,函数式编程课程经常被推迟到年龄较大的学生,他们希望更好地准备欣赏它的品质,就像作者所在大学的情况一样。3年前,作为重新设计的编程语言教育课程的一部分,我们决定比以前更快地向学生介绍各种编程范式。在这样做的过程中,我们面临着在很短的时间内向非常年轻的学生解释非常理论性的基础概念的问题。在过去的几年里,我们已经监测了新课程的成就和缺点,并且由于我们的发现,我们开发了Lambdulus,这是一个交互式和可视化的λ微积分表达式评估器,鼓励学生探索λ微积分的机制,而不是将其视为一个理论概念,而是作为一种独立的编程语言。
{"title":"Lambdulus: teaching lambda calculus practically","authors":"Jan Sliacky, Petr Maj","doi":"10.1145/3358711.3361629","DOIUrl":"https://doi.org/10.1145/3358711.3361629","url":null,"abstract":"λ calculus is a great formal introduction to functional programming. However, its abstract nature poses a challenge for many students as they struggle both with the unfamiliarity of functional programming and with the high abstraction and minimalism of λ calculus. As a result, functional programming classes are often delayed to older students who are hoped to be better prepared for appreciating its qualities, as was the case at the authors’ university as well. 3 years ago, as part of a redesigned curriculum around programming languages education, we have decided to introduce students to various programming paradigms much sooner than before. In doing so, we faced the problem of explaining very theoretical foundational concepts to very young students in a very short time. We have monitored the achievements and shortcomings of the new course over the past years and as a result of our findings have developed Lambdulus, an interactive and visual evaluator of λ calculus expressions that encourages students to explore the mechanisms of λ calculus by treating it not as a theoretical concept, but as a programming language in its own right.","PeriodicalId":190350,"journal":{"name":"Proceedings of the 2019 ACM SIGPLAN Symposium on SPLASH-E","volume":"7 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-10-25","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126925177","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
ChocoPy: a programming language for compilers courses ChocoPy:一门编程语言的编译器课程
Pub Date : 2019-10-25 DOI: 10.1145/3358711.3361627
Rohan Padhye, Koushik Sen, P. Hilfinger
ChocoPy is a programming language designed for teaching an undergraduate course on programming languages and compilers. ChocoPy is a restricted subset of Python 3.6, using static type annotations to enforce compile-time type safety. ChocoPy is fully specified using formal grammar, typing rules, and operational semantics. Valid ChocoPy programs can be executed in a standard Python interpreter, producing results consistent with ChocoPy semantics. A major component of CS164 at UC Berkeley is the project: students develop a full compiler for ChocoPy, targeting RISC-V, in about twelve weeks. In other exercises, students extend the syntax, type system, and formal semantics to support additional features of Python. In this paper, we outline (1) the motivations for creating the ChocoPy project, (2) salient features of the language, (3) the resources provided to students to develop their compiler, (4) some insights gained from teaching two semesters of ChocoPy-based courses by different instructors. Our assignment resources are available for re-use by other instructors and institutions.
ChocoPy是一种编程语言,设计用于教授编程语言和编译器的本科课程。ChocoPy是Python 3.6的一个受限制的子集,它使用静态类型注释来强制执行编译时类型安全。ChocoPy是使用正式语法、类型规则和操作语义完全指定的。有效的ChocoPy程序可以在标准的Python解释器中执行,产生与ChocoPy语义一致的结果。加州大学伯克利分校CS164的一个主要组成部分是这个项目:学生们在大约12周的时间里为ChocoPy开发一个完整的编译器,目标是RISC-V。在其他练习中,学生扩展语法、类型系统和形式语义,以支持Python的其他特性。在本文中,我们概述了(1)创建ChocoPy项目的动机,(2)该语言的显著特征,(3)为学生开发编译器提供的资源,(4)不同教师在两个学期的ChocoPy基础课程教学中获得的一些见解。我们的作业资源可供其他教师和机构重新使用。
{"title":"ChocoPy: a programming language for compilers courses","authors":"Rohan Padhye, Koushik Sen, P. Hilfinger","doi":"10.1145/3358711.3361627","DOIUrl":"https://doi.org/10.1145/3358711.3361627","url":null,"abstract":"ChocoPy is a programming language designed for teaching an undergraduate course on programming languages and compilers. ChocoPy is a restricted subset of Python 3.6, using static type annotations to enforce compile-time type safety. ChocoPy is fully specified using formal grammar, typing rules, and operational semantics. Valid ChocoPy programs can be executed in a standard Python interpreter, producing results consistent with ChocoPy semantics. A major component of CS164 at UC Berkeley is the project: students develop a full compiler for ChocoPy, targeting RISC-V, in about twelve weeks. In other exercises, students extend the syntax, type system, and formal semantics to support additional features of Python. In this paper, we outline (1) the motivations for creating the ChocoPy project, (2) salient features of the language, (3) the resources provided to students to develop their compiler, (4) some insights gained from teaching two semesters of ChocoPy-based courses by different instructors. Our assignment resources are available for re-use by other instructors and institutions.","PeriodicalId":190350,"journal":{"name":"Proceedings of the 2019 ACM SIGPLAN Symposium on SPLASH-E","volume":"38 4","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-10-25","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132360604","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}
引用次数: 11
期刊
Proceedings of the 2019 ACM SIGPLAN 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