CN114693482B - 在线编程实验与开源项目贡献转化方法和装置 - Google Patents
在线编程实验与开源项目贡献转化方法和装置 Download PDFInfo
- Publication number
- CN114693482B CN114693482B CN202210390210.0A CN202210390210A CN114693482B CN 114693482 B CN114693482 B CN 114693482B CN 202210390210 A CN202210390210 A CN 202210390210A CN 114693482 B CN114693482 B CN 114693482B
- Authority
- CN
- China
- Prior art keywords
- open source
- issue
- online programming
- programming experiment
- source project
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000002474 experimental method Methods 0.000 title claims abstract description 143
- 238000000034 method Methods 0.000 title claims abstract description 35
- 238000006243 chemical reaction Methods 0.000 title claims description 26
- 238000012549 training Methods 0.000 claims description 22
- 238000012360 testing method Methods 0.000 claims description 8
- 238000007477 logistic regression Methods 0.000 claims description 6
- 238000012216 screening Methods 0.000 claims description 4
- 238000000605 extraction Methods 0.000 claims description 2
- 238000011161 development Methods 0.000 abstract description 17
- 230000001737 promoting effect Effects 0.000 abstract description 4
- 238000005516 engineering process Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013145 classification model Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 239000002689 soil Substances 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000011426 transformation method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q50/00—Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
- G06Q50/10—Services
- G06Q50/20—Education
- G06Q50/205—Education administration or guidance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/04—Forecasting or optimisation specially adapted for administrative or management purposes, e.g. linear programming or "cutting stock problem"
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09B—EDUCATIONAL OR DEMONSTRATION APPLIANCES; APPLIANCES FOR TEACHING, OR COMMUNICATING WITH, THE BLIND, DEAF OR MUTE; MODELS; PLANETARIA; GLOBES; MAPS; DIAGRAMS
- G09B19/00—Teaching not covered by other main groups of this subclass
- G09B19/0053—Computers, e.g. programming
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Strategic Management (AREA)
- General Physics & Mathematics (AREA)
- Educational Administration (AREA)
- Educational Technology (AREA)
- Tourism & Hospitality (AREA)
- Economics (AREA)
- Human Resources & Organizations (AREA)
- Entrepreneurship & Innovation (AREA)
- Software Systems (AREA)
- General Business, Economics & Management (AREA)
- Marketing (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Game Theory and Decision Science (AREA)
- Primary Health Care (AREA)
- Operations Research (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Development Economics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明涉及软件工程领域,公开了一种在线编程实验与开源项目贡献转化方法和装置,本发明通过获取目标开源项目并根据所述目标开源项目创建在线编程实验代码仓库;新建开源项目仓库并将所述开源项目仓库与所述在线编程实验代码仓库进行关联;提取所述目标开源项目Issue信息,根据所述Issue信息创建在线编程实验关卡任务;将所述在线编程实验关卡任务推送至所述在线编程实验代码仓库中;在所述在线编程实验代码仓库中获取PR并提交至所述开源项目仓库;在检测到学习者发送的学习完成指令时,推送所述目标开源项目Issue信息,实现了将复杂的开源项目开发任务转换为在线编程实验任务,从而吸引大规模学生参与并提交代码贡献,促进开源项目的发展。
Description
技术领域
本申请涉及软件工程领域,特别是涉及一种在线编程实验与开源项目贡献转化方法和装置。
背景技术
自20世纪90年代以来,国际开源运动蓬勃兴起,诞生了一大批如Linux、Git等改变世界的优秀开源项目,为软件产业发展注入了新的活力和带来了巨大的发展机遇。我国的开源运动起源较晚,虽然近年来开源产业发展迅速,涌现出了一批优秀开源项目如SpringCloud Alibaba,但发展水平和发展规模与国际开源产业还存在一定差距。开源社区作为开源运动赖以生存的土壤,其维持是依靠开源软件开发人员参与并做出贡献。我国虽已成为软件开发人员数量大国,但其中了解开源、具备开源开发技能、熟悉开源开发流程、参与开源项目的人才还相对较少。据2020年GitHub数据统计,GitHub学生用户中有32%为美国学生,而中国学生仅占2%。因此要促进我国开源项目的发展,就需要吸引大规模具备专业技能的开发者参与到开源项目中。
编程实践项目类课程在计算机相关专业中非常重要。随着计算机科学技术的发展与“硬件软化”技术在计算机领域的应用,基于在线项目的实践学习方式逐渐大众化。目前,诸多实践教学平台都采用了“理论课程—项目实践”一体化教学体系,提供了实践项目环节,例如educoder、牛客网等。这类实践教学平台吸引了大批学生的参与并产生了大量项目成果,然而这些项目通常与实际项目有较大差异,这些课程项目产生的代码难以产生其他实际效益,无法有效利用这些成果;除此之外,学生参与完课程项目实践后缺乏机会进一步学习实践,导致学习难以深入和难以应用于实际开发中,不利于我国培养具备工程能力的科技人才。我国开源项目参与度不高及开源人才不足的问题和实践教学平台实践项目参与度高但项目“不接地气”和难以利用的问题,如何将在线编程实验与开源项目代码贡献衔接和转化,充分利用实践教学平台中学生的能力与技术,吸引大规模学生参与并提交代码贡献,成为了一个亟待解决的技术问题。
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
发明内容
本发明的主要目的在于提供了一种在线编程实验与开源项目贡献转化方法和装置,旨在解决现有技术无法将复杂的开源项目开发任务转换为在线编程实验任务,从而吸引大规模学生参与并提交代码贡献,促进开源项目的发展的技术问题。
为实现上述目的,本发明提供了一种在线编程实验与开源项目贡献转化方法,所述方法包括:
获取目标开源项目并根据所述目标开源项目创建在线编程实验代码仓库;
新建开源项目仓库并将所述开源项目仓库与所述在线编程实验代码仓库进行关联;
提取所述目标开源项目Issue信息,根据所述Issue信息创建在线编程实验关卡任务;
将所述在线编程实验关卡任务推送至所述在线编程实验代码仓库中;
在所述在线编程实验代码仓库中获取PR并提交至所述开源项目仓库;
在检测到学习者发送的学习完成指令时,推送所述目标开源项目Issue信息。
可选地,所述获取目标开源项目并根据所述目标开源项目创建在线编程实验代码仓库的步骤,包括:
获取目标开源项目并根据所述目标开源项目创建在线编程实验,为所述在线编程实验配置对应的指导和说明;
根据所述在线编程实验创建在线编程实验代码仓库。
可选地,所述提取所述目标开源项目Issue信息,根据所述Issue信息创建在线编程实验关卡任务的步骤,包括:
提取所述目标开源项目Issue信息;
根据所述Issue信息构建训练数据集;
根据所述训练数据集获取元组数据列表L,并根据所述元组数据列表L结合逻辑回归算法构建预测模型M;
将所述Issue输入至所述预测模型M中以进行难度预测;
根据所述难度预测结果创建在线编程实验关卡任务。
可选地,所述提取所述目标开源项目Issue信息的步骤,包括:
根据目标开源项目中的主题筛选GitHub中开源项目,并提取star r≥10的项目,通过GitHub REST API获取项目中的Issue;
使用GitHub API提取并处理Issue信息,其中Issue属性信息包括:Issue所属的项目信息:repository_url,full_name,owner,description,languages,events、Issue元信息:user_id,state,locked,milestone,created_at,update_at,closed_at,reactions_count,reactions_confused,reactions_eyes,reactions_heart以及Issue内容信息包括:title,events,comments,body,title,reactions;
将每条Issue的信息组织成一个属性元组Ta。
可选地,所述根据所述Issue信息构建训练数据集的步骤,包括:
根据所述Issue属性信息以及Issue内容信息判断当前Issue难度;
若Issue中reactions_confused数量超过预设阈值,则判定难度高并用1表示;
若否,则判定难度低并用0表示;
根据判定结果整合元组和标签以获得训练数据集。
可选地,所述在所述在线编程实验代码仓库中获取PR并提交至所述开源项目仓库的步骤之前,还包括:
在接收到在线编程实验代码仓库中的PR之后,触发对应的自动测试工作流;
判断是否通过自动测试;
若通过,则执行在所述在线编程实验代码仓库中获取PR并提交至所述开源项目仓库的步骤。
可选地,所述在检测到学习者发送的学习完成指令时,推送所述目标开源项目Issue信息的步骤,包括:
在检测到学习者发送的学习完成指令时,获取当前学习者的学习结果;
根据所述学习结果判断所述当前学习者是否合格;
若否,则推送所述目标开源项目Issue信息并提示是否需要进一步学习。
此外,为实现上述目的,本发明还提出一种在线编程实验与开源项目贡献转化装置,所述装置包括:
项目获取模块,用于获取目标开源项目并根据所述目标开源项目创建在线编程实验代码仓库;
项目关联模块,用于新建开源项目仓库并将所述开源项目仓库与所述在线编程实验代码仓库进行关联;
信息提取模块,用于提取所述目标开源项目Issue信息,根据所述Issue信息创建在线编程实验关卡任务;
关卡推送模块,用于将所述在线编程实验关卡任务推送至所述在线编程实验代码仓库中;
PR提交模块,用于在所述在线编程实验代码仓库中获取PR并提交至所述开源项目仓库;
学习结果模块,用于在检测到学习者发送的学习完成指令时,推送所述目标开源项目Issue信息。
此外,为实现上述目的,本发明还提出一种介质,所述介质上存储有在线编程实验与开源项目贡献转化程序,所述在线编程实验与开源项目贡献转化程序被处理器执行时实现如上文所述的在线编程实验与开源项目贡献转化方法的步骤。
本发明通过获取目标开源项目并根据所述目标开源项目创建在线编程实验代码仓库;新建开源项目仓库并将所述开源项目仓库与所述在线编程实验代码仓库进行关联;提取所述目标开源项目Issue信息,根据所述Issue信息创建在线编程实验关卡任务;将所述在线编程实验关卡任务推送至所述在线编程实验代码仓库中;在所述在线编程实验代码仓库中获取PR并提交至所述开源项目仓库;在检测到学习者发送的学习完成指令时,推送所述目标开源项目Issue信息,实现了将复杂的开源项目开发任务转换为在线编程实验任务,从而吸引大规模学生参与并提交代码贡献,促进开源项目的发展。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的在线编程实验与开源项目贡献转化设备的结构示意图;
图2为本发明在线编程实验与开源项目贡献转化方法第一实施例的流程示意图。
具体实施方式
应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
参照图1,图1为本发明实施例方案涉及的硬件运行环境的在线编程实验与开源项目贡献转化设备结构示意图。
如图1所示,该在线编程实验与开源项目贡献转化设备可以包括:处理器1001,例如中央处理器(Central Processing Unit,CPU),通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真(Wireless-Fidelity,WI-FI)接口)。存储器1005可以是高速的随机存取存储器(Random Access Memory,RAM)存储器,也可以是稳定的非易失性存储器(Non-VolatileMemory,NVM),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的结构并不构成对在线编程实验与开源项目贡献转化设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种存储介质的存储器1005中可以包括操作系统、数据存储模块、网络通信模块、用户接口模块以及在线编程实验与开源项目贡献转化程序。
在图1所示的在线编程实验与开源项目贡献转化设备中,网络接口1004主要用于与网络服务器进行数据通信;用户接口1003主要用于与用户进行数据交互;本发明在线编程实验与开源项目贡献转化设备中的处理器1001、存储器1005可以设置在在线编程实验与开源项目贡献转化设备中,所述在线编程实验与开源项目贡献转化设备通过处理器1001调用存储器1005中存储的在线编程实验与开源项目贡献转化程序,并执行本发明实施例提供的在线编程实验与开源项目贡献转化方法。
本发明实施例提供了一种在线编程实验与开源项目贡献转化方法,参照图2,图2为本发明在线编程实验与开源项目贡献转化方法第一实施例的流程示意图。
本实施例中,所述在线编程实验与开源项目贡献转化方法包括以下步骤:
步骤S10:获取目标开源项目并根据所述目标开源项目创建在线编程实验代码仓库。
需要说明的是,本实施例的技术方案包括以下步骤:步骤1、基于已有开源项目创建在线编程实验代码仓库;步骤2、关联开源项目仓库与在线编程实验代码仓库;步骤3、提取开源项目Issue信息,根据Issue属性信息及内容信息构建Issue难度分类模型,进而根据Issue的难度关联在线编程实验关卡任务;步骤4、推送学习者关卡任务代码至在线编程实验代码仓库;步骤5、在在线编程实验代码仓库自动创建PR并提交至开源项目;步骤6、完成在线编程实验后推送学习者相关的开源项目Issue。
可以理解的是,步骤1中所述的具体执行以下步骤:步骤11、根据已有的开源项目创建相关在线编程实验,该在线编程实验应提供相应的指导与说明;步骤12、为步骤11中的在线编程实验创建代码版本仓库。
需要说明的是,步骤3中所述的具体执行以下步骤:步骤31、训练数据采集:搜集及整理Issue相关因素;步骤32、训练数据标注;基于步骤31中的数据构建训练数据集;步骤33、模型训练:基于步骤32得到的元组数据列表L,结合逻辑回归算法构建预测模型M;步骤34、结果预测:根据步骤32得到的预测模型M,搜集待预测Issue信息,进行难度预测;步骤35、根据Issue难度的不同,关联开源项目Issue与在线编程实验关卡任务,有两种在线编程实验关卡任务的组织形式:对于难度较低,学生有预备知识或技术的Issue,在线编程实验关卡任务的内容为关联的开源项目Issue;对于难度较高,学生无相关预备知识或技术的Issue,在线编程实验关卡任务的内容完成该Issue所需的相关知识及技术的学习。
在具体实施中,步骤311、选择训练所需Issue。根据待发布编程实验的主题筛选GitHub中开源项目,提取其中star≥10的项目,通过GitHub REST API获取项目中的Issue;步骤312、搜集Issue相关信息:使用GitHub API提取并处理Issue的相关信息。本专利考虑了Issue属性信息及Issue内容信息。Issue属性信息包括:Issue所属的项目信息:repository_url,full_name,owner,description,languages,events;Issue元信息:user_id,state,locked,milestone,created_at,update_at,closed_at,reactions_count,reactions_confused,reactions_eyes,reactions_heart。Issue内容信息包括:title,events,comments,body,title,reactions。步骤313、整合信息。将每条Issue的信息组织成一个属性元组Ta;步骤321、根据步骤31中Issue属性信息及Issue内容信息,通过人工标注将Issue进行难度分类。将难度较低(如reactions_confused数量少)或Issue及项目文档完整详实的项目划分为低难度Issue类别,用0表示;将难度较高(如reactions_confused数量多)或Issue及项目文档简略的项目划分为高难度Issue类别,用1表示;
可以理解的是,步骤322、整合信息。将步骤31中得到的元组与标签整合成新的元组L,构成训练数据。
在具体实施中,步骤331、模型训练。根据步骤32得到的训练数据,结合逻辑回归算法构建预测模型M[https://www.jianshu.com/p/ed084d1f7241]。步骤341、获取预测数据,根据GitHub API获取当前Issue的各类信息;步骤342、根据步骤31,整合该Issue的属性,形成预测所需数据元组Ti;步骤343、模型预测:将数据元组Ti输入步骤33得到的预测模型M,输出预测结果(当前Issue的内容是否可以直接作为实验关卡内容)。
需要说明的是,步骤4中所述的具体执行以下步骤:步骤41、学习者完成任务关卡后,提交任务关卡代码至实践教学平台;步骤42、使用Webhook等技术自动推送学习者关卡任务代码至在线编程实验代码仓库。
需要说明的是,步骤5中所述的具体执行以下步骤:步骤51、针对步骤31中直接关联开源项目Issue的在线编程使用关卡任务,当任务关卡代码被提交至在线编程实验代码仓库后,触发对应的自动测试工作流;步骤52、若通过自动化测试工作流,在在线编程实验代码仓库自动创建PR并提交至相关联的开源项目。
在具体实施中,步骤6中所述的具体执行以下步骤:步骤61、针对步骤31中在线编程实验关卡任务的学习内容为完成开源项目Issue所需的相关知识及技术,学生完成该关卡任务后,实践教学平台推送相关联的开源项目Issue给学生,学生可根据兴趣和需要选择是否进一步为该开源项目做贡献。
进一步地,获取目标开源项目并根据所述目标开源项目创建在线编程实验代码仓库的步骤,包括:获取目标开源项目并根据所述目标开源项目创建在线编程实验,为所述在线编程实验配置对应的指导和说明;根据所述在线编程实验创建在线编程实验代码仓库。
步骤S20:新建开源项目仓库并将所述开源项目仓库与所述在线编程实验代码仓库进行关联。
步骤S30:提取所述目标开源项目Issue信息,根据所述Issue信息创建在线编程实验关卡任务。
进一步地,所述提取所述目标开源项目Issue信息,根据所述Issue信息创建在线编程实验关卡任务的步骤,包括:提取所述目标开源项目Issue信息;根据所述Issue信息构建训练数据集;根据所述训练数据集获取元组数据列表L,并根据所述元组数据列表L结合逻辑回归算法构建预测模型M;将所述Issue输入至所述预测模型M中以进行难度预测;根据所述难度预测结果创建在线编程实验关卡任务。
进一步地,所述提取所述目标开源项目Issue信息的步骤,包括:根据目标开源项目中的主题筛选GitHub中开源项目,并提取star r≥10的项目,通过GitHub REST API获取项目中的Issue;使用GitHub API提取并处理Issue信息,其中Issue属性信息包括:Issue所属的项目信息:repository_url,full_name,owner,description,languages,events、Issue元信息:user_id,state,locked,milestone,created_at,update_at,closed_at,reactions_count,reactions_confused,reactions_eyes,reactions_heart以及Issue内容信息包括:title,events,comments,body,title,reactions;将每条Issue的信息组织成一个属性元组Ta。
进一步地,所述根据所述Issue信息构建训练数据集的步骤,包括:根据所述Issue属性信息以及Issue内容信息判断当前Issue难度;若Issue中reactions_confused数量超过预设阈值,则判定难度高并用1表示;若否,则判定难度低并用0表示;根据判定结果整合元组和标签以获得训练数据集。
步骤S40:将所述在线编程实验关卡任务推送至所述在线编程实验代码仓库中。
步骤S50:在所述在线编程实验代码仓库中获取PR并提交至所述开源项目仓库。
进一步地,所述在所述在线编程实验代码仓库中获取PR并提交至所述开源项目仓库的步骤之前,还包括:在接收到在线编程实验代码仓库中的PR之后,触发对应的自动测试工作流;判断是否通过自动测试;若通过,则执行在所述在线编程实验代码仓库中获取PR并提交至所述开源项目仓库的步骤。
步骤S60:在检测到学习者发送的学习完成指令时,推送所述目标开源项目Issue信息。
进一步地,所述在检测到学习者发送的学习完成指令时,推送所述目标开源项目Issue信息的步骤,包括:在检测到学习者发送的学习完成指令时,获取当前学习者的学习结果;根据所述学习结果判断所述当前学习者是否合格;若否,则推送所述目标开源项目Issue信息并提示是否需要进一步学习。
本实施例通过获取目标开源项目并根据所述目标开源项目创建在线编程实验代码仓库;新建开源项目仓库并将所述开源项目仓库与所述在线编程实验代码仓库进行关联;提取所述目标开源项目Issue信息,根据所述Issue信息创建在线编程实验关卡任务;将所述在线编程实验关卡任务推送至所述在线编程实验代码仓库中;在所述在线编程实验代码仓库中获取PR并提交至所述开源项目仓库;在检测到学习者发送的学习完成指令时,推送所述目标开源项目Issue信息,实现了将复杂的开源项目开发任务转换为在线编程实验任务,从而吸引大规模学生参与并提交代码贡献,促进开源项目的发展。
此外,本发明实施例还提出一种介质,所述介质上存储有在线编程实验与开源项目贡献转化程序,所述在线编程实验与开源项目贡献转化程序被处理器执行时实现如上文所述的在线编程实验与开源项目贡献转化方法的步骤。
本发明在线编程实验与开源项目贡献转化装置的实施例或具体实现方式可参照上述各方法实施例,此处不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如只读存储器/随机存取存储器、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (9)
1.一种在线编程实验与开源项目贡献转化方法,其特征在于,所述方
法包括:
获取目标开源项目并根据所述目标开源项目创建在线编程实验代码仓库;
新建开源项目仓库并将所述开源项目仓库与所述在线编程实验代码仓库进行关联;
提取所述目标开源项目Issue信息,根据所述Issue信息创建在线编程实验关卡任务;所述提取所述目标开源项目Issue信息,根据所述Issue信息创建在线编程实验关卡任务的步骤,包括:提取所述目标开源项目Issue信息;根据所述Issue信息构建训练数据集;根据所述训练数据集获取元组数据列表L,并根据所述元组数据列表L结合逻辑回归算法构建预测模型M;将所述Issue输入至所述预测模型M中以进行难度预测;根据所述难度预测结果创建在线编程实验关卡任务;
根据Issue难度不同,关联开源项目Issue与在线编程实验关卡任务,对难度低的Issue,在线编程实验关卡任务的内容为关联的开源项目Issue;对难度高的Issue,在线编程实验关卡任务的内容为完成该Issue所需的相关知识的学习;
将所述在线编程实验关卡任务推送至所述在线编程实验代码仓库中;
在所述在线编程实验代码仓库中获取PR并提交至所述开源项目仓库;
在检测到学习者发送的学习完成指令时,推送所述目标开源项目Issue信息。
2.如权利要求1所述的方法,其特征在于,所述获取目标开源项目并根据所述目标开源项目创建在线编程实验代码仓库的步骤,包括:
获取目标开源项目并根据所述目标开源项目创建在线编程实验,为所述在线编程实验配置对应的指导和说明;
根据所述在线编程实验创建在线编程实验代码仓库。
3.如权利要求1所述的方法,其特征在于,所述提取所述目标开源项目Issue信息的步骤,包括:
根据目标开源项目中的主题筛选GitHub中开源项目,并提取star r≥10的项目,通过GitHub REST API获取项目中的Issue;
使用GitHub API提取并处理Issue信息,其中Issue属性信息包括:Issue所属的项目信息:repository_url,full_name,owner,description, languages,events、Issue元信息:user_id ,state ,locked ,milestone,
created_at ,update_at ,closed_at ,reactions_count ,reactions_confused ,reactions_eyes ,reactions_heart以及Issue内容信息包括:
title ,events ,comments ,body,reactions;
将每条Issue的信息组织成一个属性元组Ta。
4.如权利要求1所述的方法,其特征在于,所述根据所述Issue信息构建训练数据集的步骤,包括:
根据所述Issue属性信息以及Issue内容信息判断当前Issue难度;
若Issue中reactions_confused数量超过预设阈值,则判定难度高并用1表示;
若否,则判定难度低并用0表示;
根据判定结果整合元组和标签以获得训练数据集。
5.如权利要求1所述的方法,其特征在于,所述在所述在线编程实验代码仓库中获取PR并提交至所述开源项目仓库的步骤之前,还包括:
在接收到在线编程实验代码仓库中的PR之后,触发对应的自动测试工作流;
判断是否通过自动测试;
若通过,则执行在所述在线编程实验代码仓库中获取PR并提交至所述开源项目仓库的步骤。
6.如权利要求1至5任一项所述的方法,其特征在于,所述在检测到学习者发送的学习完成指令时,推送所述目标开源项目Issue信息的步骤,包括:
在检测到学习者发送的学习完成指令时,获取当前学习者的学习结果;
根据所述学习结果判断所述当前学习者是否合格;
若否,则推送所述目标开源项目Issue信息并提示是否需要进一步学习。
7.一种在线编程实验与开源项目贡献转化装置,其特征在于,所述装置包括:
项目获取模块,用于获取目标开源项目并根据所述目标开源项目创建在线编程实验代码仓库;
项目关联模块,用于新建开源项目仓库并将所述开源项目仓库与所述在线编程实验代码仓库进行关联;
信息提取模块,用于提取所述目标开源项目Issue信息,根据所述Issue信息创建在线编程实验关卡任务;提取所述目标开源项目Issue信息;根据所述Issue信息构建训练数据集;根据所述训练数据集获取元组数据列表L,并根据所述元组数据列表L结合逻辑回归算法构建预测模型M;将所述Issue输入至所述预测模型M中以进行难度预测;根据所述难度预测结果创建在线编程实验关卡任务;根据Issue难度不同,关联开源项目Issue与在线编程实验关卡任务,对难度低的Issue,在线编程实验关卡任务的内容为关联的开源项目Issue;对难度高的Issue,在线编程实验关卡任务的内容为完成该Issue所需的相关知识的学习;
关卡推送模块,用于将所述在线编程实验关卡任务推送至所述在线编程实验代码仓库中;
PR提交模块,用于在所述在线编程实验代码仓库中获取PR并提交至所述开源项目仓库;
学习结果模块,用于在检测到学习者发送的学习完成指令时,推送所述目标开源项目Issue信息。
8.一种在线编程实验与开源项目贡献转化设备,其特征在于,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的在线编程实验与开源项目贡献转化程序,所述在线编程实验与开源项目贡献转化程序配置为实现如权利要求1至6中任一项所述的在线编程实验与开源项目贡献转化方法的步骤。
9.一种介质,其特征在于,所述介质上存储有在线编程实验与开源项目贡献转化程序,所述在线编程实验与开源项目贡献转化程序被处理器执行时实现如权利要求1至6任一项所述的在线编程实验与开源项目贡献转化方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210390210.0A CN114693482B (zh) | 2022-04-14 | 2022-04-14 | 在线编程实验与开源项目贡献转化方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210390210.0A CN114693482B (zh) | 2022-04-14 | 2022-04-14 | 在线编程实验与开源项目贡献转化方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114693482A CN114693482A (zh) | 2022-07-01 |
CN114693482B true CN114693482B (zh) | 2024-04-16 |
Family
ID=82142827
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210390210.0A Active CN114693482B (zh) | 2022-04-14 | 2022-04-14 | 在线编程实验与开源项目贡献转化方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114693482B (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106548670A (zh) * | 2016-08-17 | 2017-03-29 | 清华大学 | 在线教学平台及在线教学方法 |
CN107808278A (zh) * | 2017-10-11 | 2018-03-16 | 河海大学 | 一种基于稀疏自编码器的Github开源项目推荐方法 |
CN109636691A (zh) * | 2018-12-18 | 2019-04-16 | 南京邮电大学 | 一种基于docker的在线实验教学平台及实现方法 |
CN208873380U (zh) * | 2018-04-25 | 2019-05-17 | 深圳市恒创锦思科技发展有限公司 | 一种中小学教学用机器人组配系统 |
CN110750762A (zh) * | 2019-10-21 | 2020-02-04 | 中国人民解放军国防科技大学 | 基于区块链的开源软件确权方法及其系统 |
CN111382988A (zh) * | 2018-12-28 | 2020-07-07 | 浙江大学 | 一种针对开源项目的事件处理方法及装置 |
CN111949800A (zh) * | 2020-07-06 | 2020-11-17 | 北京大学 | 一种开源项目知识图谱的建立方法和系统 |
CN112559682A (zh) * | 2020-12-03 | 2021-03-26 | 上海海事大学 | 基于GitHub软件仓库数据集的开源项目个性化检索推荐方法 |
KR20210068178A (ko) * | 2019-11-29 | 2021-06-09 | 곽효진 | 학습자를 위한 머신러닝과 인공지능을 학습 할 수 있는 stem 코딩 교육용 플랫폼 |
CN113094613A (zh) * | 2021-04-28 | 2021-07-09 | 上海商汤智能科技有限公司 | 在线编程系统、在线编程方法及相关产品 |
CN113778446A (zh) * | 2021-09-15 | 2021-12-10 | 航天新通科技有限公司 | 一种低代码应用开发平台 |
-
2022
- 2022-04-14 CN CN202210390210.0A patent/CN114693482B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106548670A (zh) * | 2016-08-17 | 2017-03-29 | 清华大学 | 在线教学平台及在线教学方法 |
CN107808278A (zh) * | 2017-10-11 | 2018-03-16 | 河海大学 | 一种基于稀疏自编码器的Github开源项目推荐方法 |
CN208873380U (zh) * | 2018-04-25 | 2019-05-17 | 深圳市恒创锦思科技发展有限公司 | 一种中小学教学用机器人组配系统 |
CN109636691A (zh) * | 2018-12-18 | 2019-04-16 | 南京邮电大学 | 一种基于docker的在线实验教学平台及实现方法 |
CN111382988A (zh) * | 2018-12-28 | 2020-07-07 | 浙江大学 | 一种针对开源项目的事件处理方法及装置 |
CN110750762A (zh) * | 2019-10-21 | 2020-02-04 | 中国人民解放军国防科技大学 | 基于区块链的开源软件确权方法及其系统 |
KR20210068178A (ko) * | 2019-11-29 | 2021-06-09 | 곽효진 | 학습자를 위한 머신러닝과 인공지능을 학습 할 수 있는 stem 코딩 교육용 플랫폼 |
CN111949800A (zh) * | 2020-07-06 | 2020-11-17 | 北京大学 | 一种开源项目知识图谱的建立方法和系统 |
CN112559682A (zh) * | 2020-12-03 | 2021-03-26 | 上海海事大学 | 基于GitHub软件仓库数据集的开源项目个性化检索推荐方法 |
CN113094613A (zh) * | 2021-04-28 | 2021-07-09 | 上海商汤智能科技有限公司 | 在线编程系统、在线编程方法及相关产品 |
CN113778446A (zh) * | 2021-09-15 | 2021-12-10 | 航天新通科技有限公司 | 一种低代码应用开发平台 |
Also Published As
Publication number | Publication date |
---|---|
CN114693482A (zh) | 2022-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Mao et al. | A survey of the use of crowdsourcing in software engineering | |
CN107291902B (zh) | 一种基于混合分类技术的大众贡献审阅自动标注方法 | |
CN107562836B (zh) | 基于主题模型和机器学习的回答者推荐方法 | |
CN108985293A (zh) | 一种基于深度学习的图像自动化标注方法及系统 | |
CN109074642A (zh) | 机器学习装置 | |
CN110413786B (zh) | 基于网页文本分类的数据处理方法、智能终端及存储介质 | |
CN113656805B (zh) | 一种面向多源漏洞信息的事件图谱自动构建方法及系统 | |
CN111400471A (zh) | 问题推荐方法、系统、电子设备和存储介质 | |
CN110929119A (zh) | 数据标注方法、装置、设备及计算机存储介质 | |
Wang | What motivate software engineers to refactor source code? evidences from professional developers | |
CN110310012B (zh) | 数据分析方法、装置、设备及计算机可读存储介质 | |
CN110929169A (zh) | 基于改进Canopy聚类协同过滤算法的职位推荐方法 | |
CN114693482B (zh) | 在线编程实验与开源项目贡献转化方法和装置 | |
Menke et al. | Introduction to artificial intelligence and deep learning using interactive electronic programming notebooks | |
Van Nguyen | Drivers of innovation towards sustainable construction: A study in a developing country | |
CN110442858B (zh) | 一种问句实体识别方法、装置、计算机设备及存储介质 | |
CN117236624A (zh) | 一种基于动态图的Issue修复者推荐方法与装置 | |
US20210165835A1 (en) | Computer driven question identification and understanding within a commerical tender document for automated bid processing for rapid bid submission and win rate enhancement | |
Rudiarto et al. | Design of Bajaj Transportation Rental Application System With First Come First Served Algorithm | |
JP2017194808A (ja) | 行動特性分析装置及び行動特性分析システム | |
CN112328812B (zh) | 基于自调参数的领域知识抽取方法与系统、电子设备 | |
Zhang et al. | Intelligent analysis for software data: research and applications | |
Borer et al. | Writing a massively multi‐authored paper: Overcoming barriers to meaningful authorship for all | |
Koseler et al. | Realization of a Machine Learning Domain Specific Modeling Language: A Baseball Analytics Case Study. | |
CN109522203B (zh) | 一种软件产品的评测方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |