Teaching Computer Programming using Deep Recursive Neural Networks
使用深度递归神经网络教授计算机编程
基本信息
- 批准号:424460920
- 负责人:
- 金额:--
- 依托单位:
- 依托单位国家:德国
- 项目类别:Research Fellowships
- 财政年份:2019
- 资助国家:德国
- 起止时间:2018-12-31 至 2019-12-31
- 项目状态:已结题
- 来源:
- 关键词:
项目摘要
Programming is a key skill required in science, technology, engineering, mathematics, and multiple other fields. However, learning to program is challenging and learners have particular difficulties in practical exercises. To support students in such practical application exercises, individualized instruction would be helpful. Unfortunately, providing fine-grained and individualized instruction exceeds the resources of human instructors, especially in massive open on-line courses with tens of thousands of participants. Therefore, we require an automatized mechanism to support students in practical programming tasks.In this project we propose to address this challenge by developing a novel neural network architecture which can encode a student's current program as a vector, predict how this vector should change to get closer to a correct solution along a path that a capable student would take, and decode the changed vector back into a program that represents how the student should proceed. By contrasting the student's current program with their predicted next state, we can generate hints which help the student to solve the task.In both encoding and decoding, we intend to incorporate domain knowledge in the form of a grammar of the programming language at hand. Thus, we reduce the space of programs to those which are syntactically correct, which simplifies encoding and decoding and enhances the utility of our hints to students. Additionally, our proposed encoder-decoder architecture could extend the boundaries of current representation learning research to tree-structured data, such as RNA secondary structures in biology, chemical molecules, or syntax trees of natural language, thus enabling to apply successful deep learning models to entirely new kinds of data.
编程是科学,技术,工程,数学和其他多个领域所需的关键技能。然而,学习编程是具有挑战性的,学习者在实际练习中有特别的困难。为了支持学生在这样的实际应用练习,个性化的指导将是有益的。不幸的是,提供细粒度和个性化的指导超出了人类教师的资源,特别是在有成千上万参与者的大型开放式在线课程中。因此,我们需要一个自动化的机制来支持学生在实际的编程任务。在这个项目中,我们提出通过开发一个新的神经网络架构来解决这个挑战,该架构可以将学生的当前程序编码为向量,预测这个向量应该如何改变,以沿着一个有能力的学生会采取的路径沿着正确的解决方案,并将改变的矢量解码回表示学生应该如何进行的程序。通过将学生当前的程序与他们预测的下一个状态进行对比,我们可以生成帮助学生解决任务的提示。在编码和解码过程中,我们打算将领域知识以手头编程语言的语法形式结合起来。因此,我们减少了空间的程序,那些是语法正确的,这简化了编码和解码,并提高了我们的提示学生的效用。此外,我们提出的编码器-解码器架构可以将当前表示学习研究的边界扩展到树结构数据,例如生物学中的RNA二级结构、化学分子或自然语言的语法树,从而能够将成功的深度学习模型应用于全新类型的数据。
项目成果
期刊论文数量(1)
专著数量(0)
科研奖励数量(0)
会议论文数量(0)
专利数量(0)
ast2vec: Utilizing Recursive Neural Encodings of Python Programs
- DOI:10.5281/zenodo.5634224
- 发表时间:2021-03
- 期刊:
- 影响因子:0
- 作者:Benjamin Paassen;Jessica McBroom;Bryn Jeffries;I. Koprinska;K. Yacef
- 通讯作者:Benjamin Paassen;Jessica McBroom;Bryn Jeffries;I. Koprinska;K. Yacef
{{
item.title }}
{{ item.translation_title }}
- DOI:
{{ item.doi }} - 发表时间:
{{ item.publish_year }} - 期刊:
- 影响因子:{{ item.factor }}
- 作者:
{{ item.authors }} - 通讯作者:
{{ item.author }}
数据更新时间:{{ journalArticles.updateTime }}
{{ item.title }}
- 作者:
{{ item.author }}
数据更新时间:{{ monograph.updateTime }}
{{ item.title }}
- 作者:
{{ item.author }}
数据更新时间:{{ sciAawards.updateTime }}
{{ item.title }}
- 作者:
{{ item.author }}
数据更新时间:{{ conferencePapers.updateTime }}
{{ item.title }}
- 作者:
{{ item.author }}
数据更新时间:{{ patent.updateTime }}
Dr. Benjamin Paaßen其他文献
Dr. Benjamin Paaßen的其他文献
{{
item.title }}
{{ item.translation_title }}
- DOI:
{{ item.doi }} - 发表时间:
{{ item.publish_year }} - 期刊:
- 影响因子:{{ item.factor }}
- 作者:
{{ item.authors }} - 通讯作者:
{{ item.author }}
相似国自然基金
基于多重计算全息片(Computer-generated Hologram,CGH)的光学非球面干涉绝对检验方法研究
- 批准号:62375132
- 批准年份:2023
- 资助金额:54.00 万元
- 项目类别:面上项目
Journal of Computer Science and Technology
- 批准号:61224001
- 批准年份:2012
- 资助金额:20.0 万元
- 项目类别:专项基金项目
Journal of Computer Science and Technology
- 批准号:61040017
- 批准年份:2010
- 资助金额:4.0 万元
- 项目类别:专项基金项目
相似海外基金
An Educational Tool for Teaching and Learning Concurrent Computer Programming Techniques
用于教授和学习并行计算机编程技术的教育工具
- 批准号:
2215359 - 财政年份:2022
- 资助金额:
-- - 项目类别:
Standard Grant
An Educational Tool for Teaching and Learning Concurrent Computer Programming Techniques
用于教授和学习并行计算机编程技术的教育工具
- 批准号:
2215193 - 财政年份:2022
- 资助金额:
-- - 项目类别:
Standard Grant
Proposal and development a training method and teaching materials before starting learning computer programming
在开始学习计算机编程之前提出并制定培训方法和教材
- 批准号:
24653271 - 财政年份:2012
- 资助金额:
-- - 项目类别:
Grant-in-Aid for Challenging Exploratory Research
A study of time-series log analysis on embedded computer programming teaching support system specialized for practical student experiment
针对学生实践实验的嵌入式计算机编程教学支持系统时序日志分析研究
- 批准号:
21500951 - 财政年份:2009
- 资助金额:
-- - 项目类别:
Grant-in-Aid for Scientific Research (C)
Effective Teaching Educational Method of Computer Programming Education in Universal Access Stage of Higher Education
高等教育普及阶段计算机编程教育的有效教学方法
- 批准号:
18500745 - 财政年份:2006
- 资助金额:
-- - 项目类别:
Grant-in-Aid for Scientific Research (C)
Teaching Multithreaded Programming to Computer Science Undergraduates
向计算机科学本科生教授多线程编程
- 批准号:
9752244 - 财政年份:1998
- 资助金额:
-- - 项目类别:
Standard Grant
The Innovative use of Software in Teaching Computer Programming
软件在计算机编程教学中的创新运用
- 批准号:
9354598 - 财政年份:1994
- 资助金额:
-- - 项目类别:
Standard Grant
Visual Programming Labs for Teaching Computer Science Concepts to Undergraduates
用于向本科生教授计算机科学概念的可视化编程实验室
- 批准号:
9354708 - 财政年份:1994
- 资助金额:
-- - 项目类别:
Standard Grant
An Integrated Approach to Teaching the Languages of Programming and Mathematics in the Computer Science Curriculum
计算机科学课程中编程语言和数学教学的综合方法
- 批准号:
9254109 - 财政年份:1993
- 资助金额:
-- - 项目类别:
Standard Grant
Teaching Computer Organization and Assembly Language Programming With Microcomputers
使用微型计算机教授计算机组织和汇编语言编程
- 批准号:
8000802 - 财政年份:1980
- 资助金额:
-- - 项目类别:
Standard Grant