英语原文共 4 页,剩余内容已隐藏,支付完成后下载完整资料
摘 要:
我院以传统的Online Judge系统为基础设计开发了针对在线程序设计实践和教学辅助的编程网格系统。本文首先介绍该系统的目标和总体功能结构,然后详细说明系统中的虚拟教学资源和教学活动,并阐述了系统在此过程中的教学辅助功能。
1引言
随着计算机和互联网技术的发展,网络教育与计算机辅助教学引发了一场深刻的教育模式和教育观念的变革。一方面计算机技术减轻了教育者的工作量,提供了更丰富的教育表现形式,并可在教育资源和教育对象之间建立联系;另一方面互联网技术使得更为广泛的群体可以远程接受到更高质量的教育。在这方面,人们已经有了不少的工作成就,MIT的开放课件系统OCW[1]和Moodle课程管理系统[2]即是其中的两个。
在面向程序设计类课程的教学辅助方面,以PKU ACM JudgeOnline[3]为代表的Online Judge系统能够对用户提交的程序进行“黑盒判定”来自动生成判题结果。但从另一方面来说,传统的Online Judge系统针对的是解题训练,并不针对课程教学辅助的场景[4]。为了弥补这一不足,为程序设计类课程提供一定程度的网络教学辅助,我们基于Online Judge功能,开发了一个针对程序设计类课程的教学辅助系统——编程网格系统(Programming Grid,PG)。
PG利用Online Judge的功能提供了程序设计类课程对学生编程能力的锻炼,通过将现实中的教学中的资源、场景、活动引入系统,在虚拟教学活动中提供教学辅助功能,为使用该系统的师生展现了一个虚拟的程序设计类课程的编程训练、教学辅助、教学互动的平台。同时,为了方便各学校或者组织加入到此系统并充分利用其中的资源和功能,PG采用了分布式的系统结构,为系统未来的部署和发展奠定了很好的基础。
2PG系统概述
PG面向的是程序设计类课程及其师生,以及网络上的编程爱好者和计算机相关课程的自学者。对于PG来说,主要的用户包括:一般用户、学生用户、教师用户以及管理员。显然,学生和教师用户是系统中主要活动的发起者与参与者。
PG以Online Judge为基础功能,为用户解决编程问题提供自动判别能力,同时针对程序设计类课程,引入了题目、题集、文摘、课程等教学资源,以这些教学资源为核心形成了众多的虚拟教学场景,利用这些虚拟教学场景中的教学活动为系统中的师生用户提供教学辅助,特别在这些教学活动中增加了师生之间教学互动的功能,为教学中的一对一辅导提供一定的支持。下面几节就分别概述一下系统的这几个方面。
2.1Online Judge
Online Judge系统的最大特点是可以对用户提交的程序“在线判定”其对错。在Online Judge系统中,用户可以在线提交程序多种语言(如C、C )源代码,系统对源代码进行编译和运行,并通过预先设计的输入/输出测试数据来检验程序源代码的正确性,并对代码生成的程序质量做一定的监控——譬如对程序运行时所使用的内存大小或运行时间进行限制。
目前,这一功能的实现方式主要是“黑盒判定”。对于每一个算法,我们知道,它有0个到多个输入,1个到多个输出,并且具有穷性、确定性和可行性等特征,而每一个算法都是解决一类问题。Online Judge系统上有很多的编程题目,对于每一道题目,都存储了关于此题的多个输入输出对,这些输入输出对已经经过验证符合题意要求。当用户提交一道题目的源码之后,系统会把这个源码放入系统中编译运行,并针对题目的每一个输入输出对比较用户程序的输入输出。最后系统会根据结果返回给用户一个状态:通过(Accepted)、答案错误(Wrong Answer)、超时(Time Limit Exceed)、超内存(Memory Limit Exceed)、运行时错误(Runtime Error)、编译错误(Compile Error),并同时返回程序使用的内存、运行时间等数据信息。
Online Judge功能对于程序设计类课程的教学来说十分有用,它可以代替教师对学生的程序正确性和一定程度上的效率作出判断并自动给出结果,减轻了教师的工作量,教师可以在此基础之上从更高的角度对学生学习效果和课程教学成果作出评估[4][5]。
2.2虚拟教学资源和场景
一般Online Judge系统针对的是编程训练,更多看重的是用户的解题数、解题质量和解题效率,并不关注在程序设计类课程教学过程中所可能有的教学活动和教学辅助。PG以Online Judge系统为基础,但表现形式更为活泼多样,并提供与程序设计类课程相对应的虚拟教学资源和场景,帮助虚拟教学活动的展开。本节中我们介绍一下PG中所引入的虚拟教学资源和教学场景,第3节中将详细说明以这些教学资源和场景为中心,系统所提供的教学辅助功能,这是PG的特色所在。
PG中所包含的主要教学资源对象如图1所示。
既然系统以Online Judge为基础,那么PG中首先不可或缺的教学资源自然就是题目对象Problem。PG中的每道题目有它自己的描述,用户可以针对每道题目提交自己的源码,由Online Judge子系统来判定。PG中的题目都是由教师用户更新维护的,并提供给系统的每一个用户使用。题目有一个重要的属性就是“题目数据”。在2.1节中我们已经了解到Online Judge的基本实现原理是利用了算法的输入输出特性,题目数据就是预存的关于一道题目所描述问题的正确输入输出对,在用户提交源码时,系统就是根据它们来判定用户源码所编译生成的程序是否满足题意。
与题目相关的资源对象还有解答对象Solution。所谓解答,就是PG所记录的用户针对一道题目的某一次提交结果,它的属性包括这次提交的结果、提交者、提交时间、程序运行时间、程序运行所用内存大小等等。通过解答对象,为用户——主要是学生的每次解题保留了历史记录,一方面便于教师针对指导,另一方面也方便学生自己自学复习。
PG针对题目和解答设置了相关的评论对象Comment。对于这些评论,系统做了严格的权限限制:只有教师(包括助教)才可以对题目和解答作出评论,这是为了促进教学辅导的开展——教师对于题目作出评论,可以方便出题者修改题目中的错误,促进更高质量题目的产生;教师对于解答作出评论,可以与此解答的学生进行互动,产生更好的教学辅导效果。
利用PG中的题目和在线评测的功能,可以让用户很好地训练自己的编程能力,评价自己对于学习内容的掌握程度。但是,单纯的题目对象,对于提高学生的学习效果并不是最有效的。在学习时,用户可以采取多种方法选择题目。譬如可以按修改时间排序选择最新更新的题目,或者利用某个关键词检索一类题目,或者利用某些关键词分别检索出一些题目等等。但是,无论采取用户采取哪种方法来检索题目,对于教学来说,都是盲目且不理想的。也就是说,在仅仅有题目的概念下,系统所拥有的资源不过就是一个线性的题目集合。
所以,为了达到更好的教学效果,我们将现实中的练习、作业、考试等概念平移到系统中,并设计了题集ProblemList这样一个对象来更好地管理和组织题目。题集是由教师用户根据一定的教学目的组织成的一些题目的有序集合,是练习、作业、考试等的一个抽象概念。在引入这样一个概念后,一些面向某种教学目的教学方案就在PG这个虚拟世界中有了承载体,教师可以创建这样的承载体以体现他的教学目标并布置给学生,而学生则可以利用这个承载体来更加系统地检验自己的某一方面的学习成果。
关于题集的另一个重要对象是题集解答对象ProblemListSolution。在PG中,题目解答对象Solution应该是数据量增长最为快速的一个对象,任何用户的每一次提交都会生成一个新的Solution对象,所以,从Solution对象集合中快速寻找出所需要的对象就成为了系统需要解决的一个重要功能。在面向题集的时候,对于题集中的题目的提交,详细的信息都会记录到Solution对象中。在用户查看一个题集的相应解答结果时,系统就需要去Solution对象中寻找提交了该题集题目的对象,这个相对于一般的寻找某道题目的Solution对象是一个比较耗费资源的过程。从性能的角度考虑,同时也为了系统更好地对题集对象的管理,系统设置了ProblemListSolution对象,它存储了某一个用户针对某道题集的综合的提交结果。
至此,在PG中,题目是基础,题集是从管理题目的角度出发,为了更好地表现和完成某一个教学目的而设计出来的。但是,这些对于课程教学辅导来说是不够的。很自然的,我们将现实中的课程引入到系统中来,这才算完成了针对课程教学辅导的虚拟教学资源的主体建设。
PG的目标针对的是程序设计类课程,在引入课程这个对象之后,才可以说是覆盖了程序设计类课程教学的大部分过程。只有引入了课程对象,系统中的题目、题集等对象才能够更有效地被组织管理起来,在课程的整体要求和目的下,对教学发挥更大也更具组织规划性的作用。综合言之,课程是PG中最基本的表现形式和教学辅助模式。
课程相关的对象很多,这是由它的地位和复杂性决定的。这些对象包括资源、通知、学生、授课老师、助教,当然,对于PG的功能来说,最为重要的是从题集对象引申的练习、作业、考试等课程题集对象。这些对象将是系统教学活动最主要的开展场所,这一点将在第3节中详细说明。
PG的另一类特殊的教学资源是文摘。所谓文摘,就是一篇关于某个主题的文章,可能是关于某个技术,也可能是关于学习方法的PG来源于Online Judge,所以实际上,它是以解题为中心的一个系统,通过解题以及反馈来帮助师生达到教学目的。而文摘的出现则是系统为了进一步拓展以解题为中心的功能,同时希望从理论的角度巩固学生所学而设计的一类辅助的资源,它的目的是为了给学生一些课外的参考资料,扩大学生的认知范围和知识面,拓展学生学习的深度;同时,在以课程为主题的PG中,文摘的出现,可以配合题目题集等资源,在学生通过解题检验自己学习水平的时候通过相应知识点理论的巩固来进一步加深自己的学习效果。文摘在系统中可以与题目、题集、课程等其他资源相结合来达到这样的教学目的。
综上所述,PG的实现逻辑模块图如图2所示。
2.3分布式系统结构
PG的分布式结构是要使得系统具有良好的性能,可以承受更多的访问量。分布式结构最大的好处就是可以使得更多的院校或者组织可以根据自己的需求来搭建部署环境,只需要一定的步骤,就可以加入PG,获得其中的全部资源和功能。一方面方便了各种学校和组织的加入,另一方面也拓展了系统的安装部署。
对于PG来说,它包含了两类不同的节点:PGM和PROGRAMMING,见图3。
1. PGM:管理出题平台。PGM是PROGRAMMING GRID MANAGER的简称。PGM相当于一个“基本教学资源”的储备和管理平台。在PGM上的“基本教学资源”包括题目、题集、文摘等,这些资源,都是课程的基础。课程作为系统中最重要的教学场景,它的教学活动离不开对题目、题集、文摘的利用。PGM的功能就是供教师创建更新管理这些基本资源的,它关注于教学活动课程之前的“备课”阶段。
2. PROGRAMMING:课程教学辅助平台。对于PROGRAMMING 平台来说,它的任务一方面是在资源上(题目、题集、文摘等)与PGM同步,确保自己平台上的资源是最新的、准确的,另一方面PROGRAMMING更重要的任务是以课程为脉络,所有资源——利用前面同步功能所获得——以课程为骨架构建,为师生提供一个课程教学的虚拟环境。
PGM面向的用户主要是教师,关注于教学活动中的课程教学资源的准备环节,目的是为教师提供一个教学资源的管理环境,为课程等其他教学活动的开展提供丰富可靠的资源保证;PROGRAMMING面向教师和学生,关注于教学活动中的课程环节,利用PGM提供的基本教学资源,以课程为组织线索,目的是构建一个针对程序设计类课程的虚拟化网络课程环境,是系统中教学辅助的主要场所,是系统最终价值和用途的体现。
PG中的数据同步模块保证了PGM和PROGRAMMING在题目、题集、文摘等教学资源上的一致性。这样,任何学校和组织只需要安装部署好PROGRAMMING节点,那么他们可以通过系统的数据同步功能得到PGM上的所有资源,同时获得PG的全部功能,对于各学校和组织来说十分方便。
3系统的教学辅助
3.1题目
针对题目相关的教学活动包括:
1. 出题。这是题目的创建过程,题目只有被创建出来之后才能为教学所发挥作用。
2. 解题。这是编程网格的基础功能
3. 统计。在解题过程中,系统会记录下各种信息,并且会对解题情况的各种记录做统计并由此为教学辅导提供帮助。
题目教学活动的场景如图4所示。
在题目这个教学场景中,有题目、题目附带资源、题目数据、解答、题目评论和解答评论多达6个相关的资源对象。这6个对象涵盖了此教学场景从出题、解题到统计的所有过程。
PG基于Online Judge功能开发,题目是所有教学活动开展的基础。所以,必须有良好的题目资源作为保障,才能使得系统其他教学活动顺利展开。
从教师出题来说,对于一道题目而言,包括题目本身以及题目附带资源和题目数据的更新。特别是题目和题目数据对于一道题目实现其全部价值来说是不可或缺的。所以,在一道题目中,我们将面对教师用户提供题目数据和题目附带资源的管理链接,提示帮助他们更全面的管理题目的资源。
一般而言,我们对于系统中
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[141320],资料为PDF文档或Word文档,PDF文档可免费转换为Word
课题毕业论文、外文翻译、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。