分类筛选
分类筛选:

程序设计有关本科论文开题报告范文 与程序设计类课程在线评测教辅系统的设计和实现2019年度协办单位类硕士学位论文范文

版权:原创标记原创 主题:程序设计范文 类别:毕业论文 2024-04-01

《程序设计类课程在线评测教辅系统的设计和实现2019年度协办单位》

本文是程序设计类本科论文怎么写与协办单位和教辅和程序设计有关硕士学位论文范文。

摘 要:分析大学程序设计类课程的MOOC教学中存在的问题,介绍基于HUSTOJ平台的在线评测教辅系统设计和开发过程,并说明教学效果及优势.

关键词:MOOC教学;在线评测教辅系统;智能问答;成绩预警;抄袭检测

1大学程序设计类课程MOOC化教学中存在的问题

C++、Ja、Python等高级语言程序设计课程,是普通高校各专业的计算机基础课程.这类课程的培养目标是学习面向对象程序设计的思想和方法,掌握程序设计的流程和技巧,具备分析问题和利用计算机求解问题的能力.对于该类课程,学生只有通过大量实践练习才能提高编程水平和培养使用计算机解决问题的能力.

中国大学MOOC面向大众提供种类繁多的优质教学资源,其中也包括为数众多的程序设计类课程.笔者以该网站为例,说明现有的程序设计类课程的在线教学系统存在的问题.

1.1缺乏功能完善的在线评测教辅系统

大学程序设计类课程的授课内容不仅包含面向过程编程的基本数据类型、程序流程控制等知识点,还包含类和对象、继承和多态、异常处理、用户图形界面、多线程编程等众多面向对象编程的特性.目前中国大学MOOC网站的程序评测系统采用的是使用测试用例进行程序正确性判定的方法,该方法无法对包含这些面向对象特性的程序进行有效的判定[1],进而影响评测效果.

1.2班级管理混乱

目前中国大学MOOC网站教学管理模块并未提供“分班”管理功能,所有选择同一课程的学生都集中在同一个班级里,然而现实中,同一门课程往往由课程组内教师分别负责不同的班级,这种线上线下的差异就造成任课教师在该网站中管理自己班级的学生变得十分困难,无法快速方便查看授课班级内学生的相关信息.

1.3缺乏强有力的数据挖掘

虽然中国大学MOOC网站中储存了大量的学生学习数据,但是并未向教师提供任何数据挖掘的功能,如“成绩预警”“抄袭检测”等.数据挖掘技术可以对学生的学习数据进行整理分析,教师可以根据分析结果进行更有针对性的教学活动,这将大幅度提高课程的教学效果,最终提升课程的通过率.

2系统总体架构

基于HUSTOJ平台的在线评测教辅系统集程序在线评判、智能问答、成绩预警、抄袭检测、日常教学辅助等功能为一体.系统采用MTV(model-template-view)设计模型,分为数据层、应用层和表现层,如图1所示.

数据层是整个系统的数据资源保障,按照应用场景不同分为5类:在线评测数据、问答数据、成绩预测数据、作业代码数据和教辅模块数据.各类数据单元既可以独立支撑上层应用的数据需求,又可以相互联系在一起构成数据挖掘的数据集.

应用层是系统逻辑功能的实现,根据不同的需求分为在线评测模块、智能问答模块、成绩预警模块、抄袭检测模块和日常教辅模块,其中在线评测模块包含在线判题、题库管理和作业管理3个子功能;智能问答模块包含实时问答和异步问答两个子功能;成绩预警模块包含成绩预测和风险提示两个子功能;抄袭检测模块包含代码比对和作业分类两个子功能;日常教辅模块包含随堂测验和出勤管理两个子功能.各个模块从功能性上相互独立,可单独使用,又从逻辑上相互联系、相辅相成,贯穿整个教学活动.

表现层是系统最终呈现的形式,通过Web前端将应用功能展现给师生用户,用户正常登录后即可操作不同的模块,满足教师或者学生不同的用户需求.

3各模块功能设计

3.1在线评测模块

针对目前中国大学MOOC缺乏功能完善的在线评测教辅系统[2]的问题,我们基于HUSTOJ[3]平台进行了二次开发:将在线答题的教学环节分为普通作业、实验课和随堂测验3种不同类型;增加更多的测试题型,包括选择题、编程题、程序填空、程序改错以及看程序写结果;丰富判题评分策略,除了传统OJ编译运行学生提交的代码与测试样例对比的方法外,增加基于代码相似度的评分方法.

3.1.1角色设置

作为完善的在线作业评测系统,传统OJ简单的用户角色划分已经不能满足实际教学的需要,因此,为了更加方便地管理课程中的相关资源,该模块中设置课程负责人、任课教师、学生3种用户角色,不同角色对应着不同的操作权限和使用功能,如图2所示.

1)课程负责人.

指某个课程的建立者,该角色可以管理课程的各类电子资源(包括在线视频、电子课件、课后阅读材料等)、管理课程的知识点划分、建立公共作业以及添加任课教师账号到课程组.系统中,各课程组相互独立、互不干扰,即属于某一课程组的任课教师只能管理、使用和修改本课程组的资源而没有权限使用其他课程组的课程资源.

2)任课教师.

任课教师对于学生的学习行为,起着引导和敦促的作用,拥有的权限包括题库的管理(仅限于管理自己添加的题目资源)、私有作业的管理以及普通的教学过程管理.

(1)题库管理:提供对各类型题目的增加、修改、删除、查询操作.

(2)私有作业管理:包括组织管理自己建立的私有作业,私有作业既可以是任课教师自己创建的,又可以从课程负责人创建的公共作业中复制而来;定时发布作业到自己管理的班级,随时查看和分析学生的作业数据.

(3)教学过程管理:该功能允许任课教师创建授课班级并批量导入学生账号,很好地填补了中国大学MOOC缺乏班级管理功能的空白,为批量化管理学生数据提供了极大的便利.

3)学生.

学生用户主要使用完成作业、查看作业发布情况和评测结果、下载教学资料等功能.

3.1.2编程题判分策略

现有平台中的编程题判分策略主要是将待测程序的输出结果与预先设置的测试用例进行字符串文本匹配.该策略无法适应当前主流程序设计语言的面向对象特性,如无法判定带有图形用户界面的程序、包含多线程特性的程序及包含文件读取特性的程序的正确性.为了解决上述问题,制定本模块的判分策略如下.

(1)将用户提交的程序输入至HUSTOJ的自动判分环境中,等待HUSTOJ使用传统判分策略对其进行判分.

(2)读取使用HUSTOJ传统判分后得到的结果,如果本题被判为满分,则将提交来的正确程序与数据库中的已有正确版本进行相似性比对,保存相似度不足80%的正确程序版本至数据库中,判题结束.如果本题经过传统判分后未得到满分,则进入第3步.

(3)读取包含待测程序的作业信息,如果作业中不允许使用程序相似度算法进行判分,则直接返回使用传统判分方法得到的判分结果,判题结束.如果作业中允许使用程序相似度算法进行判分,则进入第4步.

(4)将待测程序与数据库中相同题目的所有正确版本程序进行程序相似度计算(取值范围为0~1),取相似度最高的结果为计算结果,并将相似度×本题总分的值与使用传统判分策略得到的判分结果进行对比,取两者中较高的分值作为该题目的最后得分,保存至作业数据中,判题结束.

3.2智能问答模块

3.2.1异步问答

异步问答是对在线评测功能的补充,对应于实际教学过程的答疑环节.在学习、完成作业的过程中遇到的问题可直接在该模块中进行提问,任意角色的用户都可以对相关问题进行回答.论坛式的异步问答模块[4]39,不仅突破传统答疑的时空限制,而且能够充分调动学生的学习积极性,引导学生发现新问题,鼓励学生相互分享知识与经验.这种针对特定人群和特定领域的问答模块,相较于泛领域的问答,可以提供更加专业、更具针对性、更全面的答案,目的就是更好地帮助学生解决在学习过程中遇到的问题.

异步问答模块从功能划分上看可以分为系统功能模块、用户功能模块和管理员功能模块.系统功能模块主要包含一般性事务处理,如消息通知、问题与答案推送等;用户功能模块是异步问答的主体,主要满足用户实现问答的基本需求,如提问、回答、评论、点赞、收藏等;管理员功能模块主要包含对问答模块中的数据进行监管,如删除无效的问题、回答等.

3.2.2问答机器人

为了解决异步问答的时效性问题,系统设计并实现了在线问答机器人[4]32,这种针对程序设计类课程的问答机器人功能可以提供常见问题的精准答案,不仅可以提高用户问答的学习效率,还可以提高优质答案的复用率,节约教师的工作精力.

问答机器人具体算法流程如下:①根据异步问答模块中的数据,构建包含有效问答对的知识库;②提取用户输入的合法问题;③基于双数组Trie树生成输入问题的分词图[5];④基于动态规划法搜索概率最大路径,提取学生用户输入问题的关键字;⑤从知识库中搜索与关键字最匹配的答案并展示.若搜索失败,继续第6步;⑥将用户问题存入异步问答数据库,等待相关用户回答.若该问题得到其他用户的回答,则系统将回答内容以邮件和站内消息的方式通知提问用户.

3.3成绩预警模块

为了解决学生不能及时了解自身学习状况的问题,进一步挖掘利用学生在使用系统过程中产生的行为特征数据,设计开发基于朴素贝叶斯[6]的成绩预警模块.该模块利用学生日常使用系统时产生的行为特征数据,最大可能地评估并预测学生的学习状况,并及时向教师汇报存在不及格风险的学生信息.这种及时的成绩预警不仅可以为教师提供教学参考,制订具有针对性的教学计划,还能让教师提醒学生端正学习态度和帮助学生优化学习方法.

该模块的具体实现方法如下:①将在线作业完成次数、在线作业分数、在线提问次数、在线回答次数、课堂出勤率、随堂测验分数作为学生的特征属性,综合评价上述特征属性将学生分为不及格、及格、中等、良好、优秀5个级别;②从以往学生用户的学习数据中挑选构建训练样本;③依据训练样本训练朴素贝叶斯分类器,训练过程如图3所示;④应用训练好的分类器对正在使用系统的学生进行分类;⑤依据分类结果,对分类结果在不及格中的学生用户进行风险提示.

3.4抄袭检测模块

在线评测带来极大便利的同时,也使得作业抄袭变得比以往更加容易[7].为了遏制这种现象,保证教学效果,系统设计实现了代码抄袭检测模块,对同一班级中不同学生作业中的程序代码进行相似度检测,按照相似性将这些作业进行分类,任课教师可以根据分类结果警告存在抄袭行为的学生.

该模块的具体实现方法如下:①对作业程序进行标准化处理,包括去除代码中的注释、规整代码格式、统一函数名和变量名等;②将标准化程序中每一行代码的关键语句进行拼接,生成该程序的特征值;③将待判定程序的特征值与系统中已提交程序的特征值进行相似度比对,依据比对结果将代码相似度较高的作业进行聚类操作,同时将新提交程序的特征值存入数据库;④将作业聚类结果发送给任课教师,供教师参考.

3.5日常教辅模块

为了提高教学工作的效率,系统设计开发了诸如基于地理位置的学生出勤、随堂测验等教学辅助功能模块,以方便将传统教学事务进行数字化管理.

4安全性设计

为了给广大师生提供高效稳定的服务,安全性设计尤为重要,一方面为了保护众多用户的,另一方面为了保障服务器资源不被盗用.

4.1在线评测模块恶意程序防御

服务器编译运行用户提交的程序,可能有危害系统安全的行为[2],这些恶意程序可能是编程者不成熟的编程水平造成的,也有可能是人为故意攻击引起的.目前,在线评测攻击[8]主要分为两种方式:编译时攻击和运行时攻击.

编译时攻击的特点包括:①编译超时,让评测进程卡死在编译阶段;②输出巨大文件;③头文件包含攻击行为.

运行时攻击的特点包括:①运行系统指令,如执行system(“shutdownnow”),立刻关闭服务器;②无休止fork,耗尽服务器系统资源;③利用脚本短时间内频繁提交.

针对以上问题,系统采用的解决方案有设置编译时间限制;设置可执行文件大小限制;设置文件的读写权限,限制用户程序读取系统核心文件;采用沙盒运行评测程序,将用户提交的程序与系统环境隔离;提交作业代码时引入人机验证机制,防止利用机器人程序高频率提交代码.

4.2跨站请求伪造防御

跨站请求伪造(cross-siterequestforgery),是一种限制用户在当前已登录的Web应用程序上执行非本意操作的攻击方法.为了避免此类危险,系统采用的解决方案为在首次响应某个客户端的请求时,在服务器端生成随机Token,将该Token保存在客户端Cookie中,之后的客户端POST请求必须带上这个Token,服务器验证Token的合法性再进行下一步操作,服务器将直接拒绝无法通过合法性检查的请求.

4.3SQL防注入保护

为避免SQL注入攻击,系统将用户在网站界面输入的所有内容均视为危险内容,不直接将使用用户输入的内容嵌入SQL语句中进行执行.使用Django框架中的Queryset对象可以将SQL语句在内部进行转义,保证只能由系统内合法程序执行对数据库的操作.

5教学效果及优势

5.1使用情况及教学效果

目前,在线评测教辅系统正在南京邮电大学全校范围内使用,已经使用系统的课程包括Python语言程序设计、Ja程序语言设计、C语言程序设计以及C++面向对象程序设计.题库模块中包含编程题数据200余条、选择题数据400余条,公共作业模版40余套.校内师生用户已达8000余人,自2016年9月上线至今,已记录43000余条各类教学活动数据.

系统不仅为学校学生提供专业、便捷的计算机编程学习和交流平台,还为教师提供便捷的教学过程管理和教学资源管理平台,通过及时向任课教师发送教学效果反馈,有效地提高了程序设计类课程中教与学的效率.

5.2优势

5.2.1易于部署、维护、管理

整个系统建立在通用Web平台上,可以简单、快捷地搭建运行环境,编写自动化安装脚本,实现通过简单命令完成环境搭建.使用后台管理模块,可管理各级用户权限和监管数据库内的已有数据.系统中的日志记录模块,详细地记录系统运行的状态,为排除系统故障提供有力的支持.

5.2.2节约人力成本

在线完成各种编程练习,不仅节约纸张资源和教学活动中消耗的教师人力资源,而且可以全天候为学生提供必不可少的实践练习机会.与传统作业方式相比,在线学习参与者可以随时提交并运行程序代码,并立刻得到程序正确性的反馈.通过上述自动化的教学手段,学生能够更好地掌握学习节奏,提升学习效果.

5.2.3提高教与学的效率

通过使用系统,教师可便捷地组织作业、发布作业、进行课堂点名、随堂测验以及查看班级内学生的学习状况,及时提醒存在不及格风险的学生;学生也可以方便地在系统中完成作业并即时得到作业结果,还可以在线上与教师进行专业领域的交流以学习更多的扩展知识.系统上线的一年多来,任课教师的教学过程管理效率有了大幅度的提升,学生的学习效率也得到提高.据任课教师反馈,在程序设计类课程的教学中引入本系统之后,学生的学习成绩有了明显的提高.

6结语

程序设计类课程的MOOC建设是高校计算机学科MOOC教学的重点内容,基于HUSTOJ平台的在线评测教辅系统提供了形式多样的在线编程实践教学方法、完备便捷的教学过程管理功能以及实时高效的师生交流平台,实践证明其有效提高了传统教学和MOOC教学的教学活动效率.针对现代社会对个性化教育的强烈需求,系统还有一些可以改进的方面,如通过分析学习者的在线学习数据,找出学习者所掌握知识点的薄弱环节,推送包含该知识点的相关学习资源供学习者进行自主学习等.

参考文献:

[1]刘利.基于OJ平台的“程序设计基础”实践教学方法[J].电脑知识与技术,2015(21):104-105.

[2]肖红玉,贺辉,陈红顺,等.在线评测教学辅助系统设计[J].计算机技术与发展,2017(11):141-145.

[3]张浩斌.基于开放式云平台的开源在线评测系统设计与实现[J].计算机科学,2012,39(增刊11):339-343.

[4]张波.网络答疑系统的设计与实现[D].长春:吉林大学,2006.

[5]杨文川,刘健,于淼.基于双数组Trie树的中文分词词典算法优化研究[J].计算机工程与科学,2013,35(9):127-131.

[6]贺鸣,孙建军,成颖.基于朴素贝叶斯的文本分类研究综述[J].情报科学,2016,34(7):147-154.

[7]张莉,周祖林.代码相似性检测在程序设计教学中的应用[J].计算机教育,2009(13):116-118.

[8]陈丹伟,唐平,周书桃.基于沙盒技术的恶意程序检测模型[J].计算机科学,2012,39(增刊6):12-14.

(编辑:宋文婷)

程序设计论文参考资料:

毕业论文设计

毕业设计日志

毕业设计

设计投稿

机械设计和制造期刊

毕业设计说明书

归纳上文:这是大学硕士与程序设计本科程序设计毕业论文开题报告范文和相关优秀学术职称论文参考文献资料,关于免费教你怎么写协办单位和教辅和程序设计方面论文范文。

和你相关的