由于大量学生参加了大规模开放的在线课程(MOOC),因此越来越多的自动化程序维修技术集中在入门编程任务(IPA)上。这样的技术利用了以前的正确学生实施,以向学生提供自动化,全面和个性化的反馈。本文介绍了C-Pack-IPA,这是针对25种不同IPA提交的学生课程的公开基准。C-Pack-IPA包含语义上正确的,语义上不正确且语法上不正确的程序以及每个IPA的测试套件。因此,C-Pack-IPA可用于帮助评估新颖语义的发展以及句法,自动化程序修复框架,重点是向新手程序员提供反馈。
translated by 谷歌翻译
由于大量学生参加了大规模开放的在线课程(MOOC),因此越来越多的自动化程序维修技术集中在入门编程任务(IPA)上。这种最先进的技术使用程序聚类来利用以前的正确学生实现来修复给定的新不正确提交。通常,这些维修技术使用聚类方法,因为分析了所有可用的正确学生提交以维修程序是不可行的。聚类方法使用基于几个功能的程序表示,例如抽象语法树(AST),语法,控制流和数据流。但是,在表示语义上相似的程序时,这些功能有时会变得脆弱。本文提出了InvaastCluster,这是一种用于程序群集的新方法,它利用了在几个程序执行中观察到的动态生成的程序不变性,以群群群集在语义上等效的IPA。我们的主要目的是通过其不变性及其结构通过其匿名抽象语法树来找到程序的语义结合及其结构的组合。 InvaastCluster的评估表明,在聚集一组不同的正确IPA时,建议的程序表示法优于基于语法的表示。此外,我们将InvaastCluster集成到基于最新的聚类的程序维修工具中,并在一组IPA上进行评估。我们的结果表明,InvaastCluster通过在较短的时间内修复大量学生的程序来使用基于聚类的程序维修工具使用时的当前最新设备。
translated by 谷歌翻译
The introductory programming sequence has been the focus of much research in computing education. The recent advent of several viable and freely-available AI-driven code generation tools present several immediate opportunities and challenges in this domain. In this position paper we argue that the community needs to act quickly in deciding what possible opportunities can and should be leveraged and how, while also working on how to overcome or otherwise mitigate the possible challenges. Assuming that the effectiveness and proliferation of these tools will continue to progress rapidly, without quick, deliberate, and concerted efforts, educators will lose advantage in helping shape what opportunities come to be, and what challenges will endure. With this paper we aim to seed this discussion within the computing education community.
translated by 谷歌翻译
源代码存储库由大型代码库组成,通常包含容易发生的程序。软件的复杂性日益增加导致时间和识别这些缺陷的时间和成本急剧上升。存在各种方法可以自动生成错误代码的修复程序。但是,由于特定错误的可能解决方案的组合空间很大,因此没有很多工具和数据集可以有效地评估生成的代码。在这项工作中,我们介绍了FixeVal,这是一个基准,其中包括竞争性编程问题及其各自修复程序的基准。我们引入了丰富的测试套件,以评估和评估模型生成程序修复的正确性。我们将两种在编程语言上鉴定的变压器语言模型视为我们的基准,并使用基于匹配和基于执行的评估指标对其进行比较。我们的实验表明,基于匹配的指标不能准确反映模型生成的程序修复,而基于执行的方法通过专门为该解决方案设计的所有情况和场景评估程序。因此,我们认为FixeVal提供了朝着实际自动错误修复和模型生成的代码评估的步骤。
translated by 谷歌翻译
本文探讨了大语言模型的自然语言生成能力,并应用于编程课程中常见的两种学习资源类型。使用OpenAI Codex作为大语言模型,我们创建编程练习(包括示例解决方案和测试用例)和代码说明,从定性和定量上评估这些练习。我们的结果表明,大多数自动生成的内容既新颖又明智,在某些情况下可以按原样使用。在创建练习时,我们发现仅通过提供关键字作为模型输入来影响编程概念和它们所包含的上下文主题非常容易。我们的分析表明,大规模生成机器学习模型是指导者的工具,尽管仍然需要进行一些监督以确保生成的内容的质量在传递给学生之前。我们进一步讨论了OpenAI Codex和类似工具对入门编程教育的含义,并强调了未来的研究流,这些研究流有可能提高教师和学生的教育体验质量。
translated by 谷歌翻译
当代编码教育往往为学生提供开发具有用户交互和复杂动态系统的计划的任务,例如基于鼠标的游戏。在教学上引人注目的同时,没有现代的自主方法来提供反馈。值得注意的是,通过传统的单元测试,互动计划不可能等级。在本文中,我们正规化为互动计划提供反馈作为分类马尔可夫决策过程(MDP)的任务的挑战。每个学生的程序都完全指定了一个MDP,其中代理需要在合理的概括下运行和决定,如果输入MDP的动态和奖励模型应该被分类为正确或损坏。我们证明,通过在代理和自回归模型之间设计合作目标,我们可以使用代理从输入MDP采样差分轨迹,允许分类器确定成员资格:播放到等级。我们的方法使自动反馈系统能够进行交互式代码分配。我们将711,274个匿名学生提交的数据集发布到单个分配的单个分配,以支持未来的研究。
translated by 谷歌翻译
随着人工智能(AI)技术在社会中变得越来越强大和突出,他们的滥用就是日益关注的问题。在教育环境中,学生可以使用AI技术来欺骗作业和考试。在本文中,我们探讨了变形金刚是否可以用于求解介绍级的编程作业,同时绕过常用的AI工具来检测软件部分之间的相似性。我们发现使用GPT-J [Wang和Komatsuzaki,2021]的学生可以完成入门级的编程作业,而无需触发Moss的怀疑[Aiken,2000],这是一种广泛使用的软件相似性和窃探测工具。尽管事实上GPT-J没有接受有关问题的培训,也没有提供任何示例可供工作。我们进一步发现,GPT-J编写的代码在结构上是多种多样的,缺乏任何特定的告诉未来的pla窃检测技术可能会用来尝试识别算法生成的代码。最后,我们讨论了大语言模型的道德和教育含义以及未来研究的方向。
translated by 谷歌翻译
自动程序合成是软件工程中的持久梦想。最近,Open AI和Microsoft提出了一种有希望的深度学习(DL)解决方案,称为Copilot,作为工业产品。尽管一些研究评估了副驾驶解决方案的正确性并报告其问题,但需要进行更多的经验评估,以了解开发人员如何有效地受益。在本文中,我们研究了两项不同的编程任务中副标士的功能:(1)为基本算法问题生成(和复制)正确,有效的解决方案,(2)将副副副总裁与人类程序员的建议解决方案与一组人的建议解决方案进行比较编程任务。对于前者,我们评估副铜在解决计算机科学中选定的基本问题(例如对基本数据结构的基本问题)中的性能和功能。在后者中,使用人提供的解决方案的编程问题数据集。结果表明,Copilot能够为几乎所有基本算法问题提供解决方案,但是,某些解决方案是越野车且不可复制的。此外,Copilot在组合多种方法来生成解决方案方面存在一些困难。将副驾驶员与人类进行比较,我们的结果表明,人类溶液的正确比率大于副本的正确比率,​​而副铜产生的越野车解决方案需要更少的努力来维修。尽管本研究和以前的研究中的强调,副柯洛特(Copilot)作为开发人员特别是在高级编程任务中的助手表现出局限性,但它可以为基本编程任务生成初步解决方案。
translated by 谷歌翻译
NLTK, the Natural Language Toolkit, is a suite of open source program modules, tutorials and problem sets, providing ready-to-use computational linguistics courseware. NLTK covers symbolic and statistical natural language processing, and is interfaced to annotated corpora. Students augment and replace existing components, learn structured programming by example, and manipulate sophisticated models from the outset.
translated by 谷歌翻译
知识追踪(KT)模型是一种流行的方法,可以通过以前的尝试来预测学生在实践问题上的未来表现。尽管在KT中进行了许多创新,但大多数模型在内,包括最先进的Deep KT(DKT)主要利用每个学生的响应是正确或不正确的,忽略了其内容。在这项工作中,我们提出了基于代码的深知识跟踪(Code-DKT),该模型使用注意机制自动提取并选择特定领域的代码功能来扩展DKT。我们比较了Code-DKT对贝叶斯和深度知识跟踪(BKT和DKT)的有效性,该数据集中有50名学生试图解决5个介绍性编程作业的学生。我们的结果表明,Code-DKT在5个任务中始终优于DKT的AUC 3.07-4.00%AUC,与DKT相对于其他最先进的域中总KT模型的改进是可比的。最后,我们通过一组案例研究来分析特定问题的性能,以证明何时以及如何改善代码DKT的预测。
translated by 谷歌翻译
机器学习的最新进展显着改善了对源代码数据的理解,并在许多下游任务上取得了良好的表现。像GitHub这样的开源存储库使用丰富的未标记代码数据启用此过程。但是,缺乏高质量标记的数据在很大程度上阻碍了几个相关任务的进度,例如程序翻译,摘要,合成和代码搜索。本文介绍了XLCOST,跨语言代码摘要数据集,这是一种用于跨语言代码智能的新基准数据集。我们的数据集包含来自8种语言(7种常用编程语言和英语)的细粒并行数据,并支持10个跨语性代码任务。据我们所知,就规模和语言数量而言,它是源代码的最大并行数据集。我们还为每个任务提供了几种最先进的基线模型的性能。我们认为,这个新数据集可能是研究界的宝贵资产,并促进了跨语法代码智能的新方法的开发和验证。
translated by 谷歌翻译
在这项工作中,我们向阿姆斯特丹大学的人工智能(_MACE-AI)的技术,研究生,保密性和透明度的技术,审查,保密性和透明度的设置,它通过再现性的镜头教导了概念。该课程的焦点是基于从顶级AI会议的现有事实-AI算法的基础项目,并撰写关于他们的经历的报告。在课程的第一次迭代中,我们创建了一个具有来自组项目的代码实现的开源存储库。在第二次迭代中,我们鼓励学生将他们的小组项目提交给机器学习再现性挑战,这导致了我们课程所接受的9个报告。我们反映了我们在两个学年课程教学的经验,其中一年恰逢全球大流行,并通过研究生级AI计划的可重复性提出了教学局面的指导。我们希望这可以成为教师在未来在其大学建立类似课程的有用资源。
translated by 谷歌翻译
Accurately predicting their future performance can ensure students successful graduation, and help them save both time and money. However, achieving such predictions faces two challenges, mainly due to the diversity of students' background and the necessity of continuously tracking their evolving progress. The goal of this work is to create a system able to automatically detect students in difficulty, for instance predicting if they are likely to fail a course. We compare a naive approach widely used in the literature, which uses attributes available in the data set (like the grades), with a personalized approach we called Personalized Student Attribute Inference (PSAI). With our model, we create personalized attributes to capture the specific background of each student. Both approaches are compared using machine learning algorithms like decision trees, support vector machine or neural networks.
translated by 谷歌翻译
Despite recent success in large language model (LLM) reasoning, LLMs still struggle with hierarchical multi-step reasoning like generating complex programs. In these cases, humans often start with a high-level algorithmic design and implement each part gradually. We introduce Parsel, a framework enabling automatic implementation and validation of complex algorithms with code LLMs, based on hierarchical function descriptions in natural language. Parsel can be used across domains requiring hierarchical reasoning, e.g. code synthesis, theorem proving, and robotic planning. We demonstrate Parsel's capabilities by using it to generate complex programs that cannot currently be automatically implemented from one description and backtranslating Python programs in the APPS dataset. Beyond modeling capabilities, Parsel allows problem-solving with high-level algorithmic designs, benefiting both students and professional programmers.
translated by 谷歌翻译
最近,神经技术已用于自动生成源代码。这些方法在有望获得声明语言的同时,在命令式语言的数据集上的性能差得多。由于通常将声明性语言嵌入了现实世界软件开发中的命令式语言(即Turducken式编程)中,因此声明语言的有希望的结果几乎不会导致手动软件开发工作大幅减少。在本文中,我们定义了一项新的代码生成任务:鉴于自然语言评论,此任务旨在用嵌入式声明语言以基本命令性语言生成程序。据我们所知,这是第一个Turducken风格的代码生成任务。对于此任务,我们将Lyra:Python中的数据集提出了嵌入式SQL。该数据集包含来自现实世界项目的2,000个精心注释的数据库操作程序。每个程序都与中文评论和英文评论配对。在我们的实验中,我们采用了变压器,伯特风格和GPT风格的模型作为基础。在最佳环境中,GPT风格模型的生成性能比其他模型更好,在使用中文和英语评论时,AST精确匹配的精度分别为24%和25.5%。因此,我们认为Lyra为代码生成提供了新的挑战。但是,克服这一挑战可能会大大提高代码生成技术在现实世界软件开发中的适用性。
translated by 谷歌翻译
编写代码时,大多数程序员会犯错误。这些错误中的一些很小,几乎不需要对原始程序进行编辑 - 最近称为最后一个英里错误的错误。这些错误打破了经验丰富的开发人员的流程,并且可以使新手程序员陷入困境。针对此类错误的现有自动化维修技术是特定于域的,并且不容易延续到新域。转移符号方法需要实质性的工程和神经方法需要数据和重新培训。我们介绍RING,这是一种多语言维修引擎,该引擎由经过代码训练的大型语言模型(例如Codex)提供动力。这样的多语言引擎可以为编程援助提供一个翻转的模型,该模型与传统的代码建议技术相比,程序员编写代码和AI援助建议修复。从程序员手动修复错误的方式中汲取灵感,我们表明,基于迅速的策略将修复作为本地化,转换和候选排名概念化,可以成功地在多个域中成功维修程序,但努力最少。我们通过评估6个不同的域并将性能与域特异性维修引擎进行比较,为这种多语言维修引擎提供了第一个结果。我们表明,环可以超过这些域中3个域中的特定于域特异性修复引擎。我们还确定了使用LLMC进行多语言维修的未来研究方向。
translated by 谷歌翻译
预先训练的大语言模型(LLM)(例如OpenAI Codex)通过从非正式自然语言(NL)意图中生成自然代码来自动化编码的重要方面。但是,生成的代码无法满足用户意图的任何正确性保证。实际上,很难定义正确性的概念,因为自然语言可能是模棱两可的,并且缺乏正式的语义。在本文中,我们通过提出测试驱动的用户形式化(TDUIF)的工作流程来解决以上问题的第一步,该工作流利用轻量级用户的反馈共同将用户的意图正式化为测试(部分规范) ),(b)生成符合正式用户意图的代码。要对算法进行可扩展的大规模自动化评估,而无需循环中的用户,我们描述了如何使用参考解决方案模拟用户与高保真性的互动。我们还描述并实施了几种算法组件(包括突变和排名一组测试)的替代实现,这些实现可用于有效解决TDUIF问题。我们已经开发了一个系统的Ticoder,该系统实现了多种解决方案来进行TDUIF,并将其对MBPP学术代码生成基准测试的相对有效性进行了比较。在MBPP上使用OpenAI Codex LLM的结果很有希望:我们的最佳算法将通行证@1代码生成准确度指标从48.39%提高到单个用户查询,最高为85.48%,最多可达55.48%,最多可提供5个用户查询。其次,我们可以生成与用户意图在1.69个用户查询中的非平凡功能单位测试,该数据集为90.40%的示例,用于此数据集。
translated by 谷歌翻译
由于Covid-19的大流行,许多大学课程不得不突然转变以实现远程教学。在嵌入式系统和微控制器上调整课程是非常具有挑战性的,因为与真实硬件的互动是它们不可或缺的一部分。我们首先将我们的经验与教学嵌入式系统的四个基本替代方案进行比较:1)在学校与硬件进行交互,2)远程访问硬件,3)向学生借给学生进行家庭工作和4)虚拟化硬件。之后,我们详细评估了我们从传统的离线户外硬件编程课程到使用实验室中存在的真实硬件的快速过渡的经验。事实证明,这种不寻常的远程硬件访问方法是教授嵌入式系统的完全可行的替代方法,从而实现了相对较低的过渡。我们的设置基于现有的解决方案和稳定的开放技术,而无需使用需要高维护的定制应用程序。我们评估了学生和老师的经验,并评估了未来课程的凝结外卖。特定的环境设置可在线获得,作为他人的灵感。
translated by 谷歌翻译
The Codex model has demonstrated extraordinary competence in synthesizing code from natural language problem descriptions. However, in order to reveal unknown failure modes and hidden biases, such large-scale models must be systematically subjected to multiple and diverse evaluation studies. In this work, we evaluate the code synthesis capabilities of the Codex model based on a set of 115 Python problem statements from a popular competitive programming portal: HackerRank. Our evaluation shows that Codex is indeed proficient in Python, solving 96% of the problems in a zero-shot setting, and 100% of the problems in a few-shot setting. However, Codex exhibits clear signs of generating memorized code based on our evaluation. This is alarming, especially since the adoption and use of such models could directly impact how code is written and produced in the foreseeable future. With this in mind, we further discuss and highlight some of the prominent risks associated with large-scale models of source code. Finally, we propose a framework for code-synthesis evaluation using variations of problem statements based on mutations.
translated by 谷歌翻译
在这项工作中,我们提出了一个新颖的观点,以解决贴片正确性评估的问题:正确的贴片实现了“答案”对越野车行为提出的问题的变化。具体而言,我们将贴片正确性评估变成一个问题回答问题。为了解决这个问题,我们的直觉是,自然语言处理可以提供必要的表示和模型来评估错误(问题)和补丁(答案)之间的语义相关性。具体而言,我们认为是输入错误报告以及生成的补丁的自然语言描述。我们的方法,Quatrain,首先考虑了最先进的消息生成模型,以生成与每个生成的补丁相关的相关输入。然后,我们利用神经网络体系结构来学习错误报告和提交消息之间的语义相关性。针对三个错误数据集生成的9135个补丁的大数据集(缺陷4J,Bugs.s.s.jar和Bears)的实验表明,Quatrain可以在预测补丁的正确性时达到0.886的AUC,并在过滤62%的62%错误的补丁时召回93%正确的补丁。我们的实验结果进一步证明了投入质量对预测性能的影响。我们进一步执行实验,以强调该模型确实了解了错误报告与预测的代码更改描述之间的关系。最后,我们与先前的工作进行比较,并讨论我们方法的好处。
translated by 谷歌翻译