编程网格:一个基于Online Judge的程序设计类课程教学辅助系统

2009-02-24 07:02罗英伟汪小林张正熠
计算机教育 2009年2期
关键词:虚拟机

罗英伟 汪小林 张正熠

文章编号:1672-5913(2009)02-0087-06

摘要:我院以传统的Online Judge系统为基础设计开发了针对在线程序设计实践和教学辅助的编程网格系统。本文首先介绍该系统的目标和总体功能结构,然后详细说明系统中的虚拟教学资源和教学活动,并阐述了系统在此过程中的教学辅助功能。

关键词:程序设计类课程;Online Judge;教学辅助;编程网格;虚拟机

中图分类号:G642

文献标识码:B

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功能开发,题目是所有教学活动开展的基础。所以,必须有良好的题目资源作为保障,才能使得系统其他教学活动顺利展开。

从教师出题来说,对于一道题目而言,包括题目本身以及题目附带资源和题目数据的更新。特别是题目和题目数据对于一道题目实现其全部价值来说是不可或缺的。所以,在一道题目中,我们将面对教师用户提供题目数据和题目附带资源的管理链接,提示帮助他们更全面的管理题目的资源。

一般而言,我们对于系统中的资源有3个方面的要求:(1)丰富,即系统中所拥有的资源比较多,能够满足师生的需要,吸引用户;(2)准确,即用户能够比较精确的定义描述一个资源,方便使用和检索,更进一步说是绝大部分用户能够对于一个资源的描述有相同的看法;(3)协调,即资源之间需要满足一定的关系,比如应当确保不要出现不同的教师出了相类似的几道题目,导致资源浪费。

从针对题目的角度出发,丰富方面需要我们提供更好的用户界面和流程来帮助用户出题;准确方面可以由标签(Tag)来完成。对于一道题目,它所表现的内涵,教师希望它所达到的教学训练目的等外延,都可以记录于Tag中,使得系统在检索、使用和进行教学辅助时都可以从中获得更好的支持;协调方面主要从题目的标题考虑,一个题目的标题大体上反映了这个题目的主要内容,在教师用户出题时,当用户写完“题目标题”属性之后,系统会即时从后台查找数据库中与此类似的题目并在网页上显示。如果系统中已有类似标题的题目,系统会提示给用户相应题目的标题和URL,由教师用户去判断是否据此终止出题过程。

而在终止之后,教师用户可以选择另一方案:协同出题。即当教师用户看到与自己所要出的相似的题目后,可以终止自己的出题过程,而选择在那个类似题目的页面上申请协同出题。这个申请会发往出题者信箱内,出题者可以选择接受或者拒绝。所谓协同出题,就是对于一道题目,可由多人一同进行更新修改。协同出题不仅可以用于此场景,任何教师用户对于一道题目产生兴趣之后都可以申请协同出题。

新出题目均默认为“测试”状态,其含义是此题的描述,特别是题目数据在测试当中,可能有些地方还需要修改。只有当出题者认为题目已经经过了测试正常无误(如果有协同出题者,则需要半数以上的协同出题人员同意才可以),则可以选择发布题目,并选择发布为公开状态或者隐藏状态。隐藏状态的题目集合作为一个秘密题库,可以供教师在布置考试的时候从中选择题目,确保考试的保密性。如果题目有协同出题者,那么在选择发布之后,系统将会把信息发送到所有协同出题者的信箱供他们确认同意或者否决,在每次的确认过程中,一旦发现超过半数同意,则将题目的状态置为相应的公开状态或者隐藏状态,完成题目的“发布”流程。

解题及查看解答。解题是PG的一个基础功能,普通用户只能解答“公开”状态的题目,而教师用户可以解答任何状态下的题目。在解题之后,系统会记录此次解题的结果存入解答对象中。解答的内容包括此次解题的状态结果、对于各题目数据的运行时间和内存大小,提交用户名,提交时间等等。用户可以查看解答历史,普通用户对于自己的解答可以查看其中的源码,对于别人的解答只可看到一般的结果信息——包括结果状态、提交者、提交时间等等。教师可以查看所有的解答详细信息。

除了这些单独的信息之外,普通用户还可以查看关于一道题目解答的统计信息,包括此题一共被解答了多少次,其中通过多少次,编译错误多少次,超时多少次等,及其这些状态占总数的百分比。

在PGM上,教师用户针对题目可以评论,目的在于促进题目资源更好的建设。

在PROGRAMMING上,教师用户针对解答也可以评论,目的是为了促进教学效果,是系统教学辅助话工作的一个方面。这些评论都将生成报告发信给被评论资源的拥有者,提醒他们注意。

3.2题集

有关题集教学活动的场景如图5所示。

针对3.1中所提出的丰富、准确、协调的三要求,题集也做了相应的设计处理以满足要求。在更新管理题集的过程中,系统积极为教师提供教学帮助。此间的一个问题就是教师在更新题集的时候无法知道系统中有多少题目,哪些题目能够比较切合满足此次题集的要求,反映此次题集的教学目的,可以作为题集的备选题目来加以考虑。普通的方法是教师考虑一些关键词进行搜索,或者教师新建一些自己所掌握知晓题目,但却并不知道系统中是否应有了合适的题目甚至是相同类似的题目而造成资源的重复和浪费。

从上述要求里,我们了解到,当教师明确了题集的目标和责任之后,他会找到一些可以恰当形容此次题集的词语,这些词语可以形容此次题集的目标,考察范围,知识点,所要求采用的算法等等。这些正可以在教师创建更新题集的时候写入题集的Tags属性中,表明此次题集所对应的标签。而系统则可以利用这些标签去检索对应的题目,供教师选择是否可以作为此题集的备选。所以,标签对于题集而言,不仅可以做到准确协调的功用,更可以促进教学活动的开展。

解题集是在解题的基础之上发展而来的。解题集相对于解题的好处是题集更具有针对性和组织性,用户在解题集的过程中,可以训练自己掌握某些方面知识的水平,进一步巩固或拓展自己的所学。针对用户在做题集过程中对题集的每一次提交解答,系统除了记录针对题目的解答信息之外,还会记录针对题集的解答信息,包括题集中各题解答最终状况,最后针对此题集的提交时间、提交者等等。教师可以查看所有学生关于此题集的解答统计信息,并根据学生所解答出的题集题目个数和最后提交时间来排序,以掌握学生的总体学习情况。学生也可以据此对于自己解答的结果和他人做一个比较。

3.3课程

有关课程教学活动的场景如图6所示。

课程是系统中最复杂的教学场景,也是最重要的教学场景,面向用户展示最多的教学场景。同时,课程的教学场景中往往也包含了题目、题集、文摘的教学场景,使得针对于课程的在线实践和教学辅助工作显得非常的庞杂。下面,我们从系统中一门虚拟课程开设上课的过程来对这个教学场景的相关工作作一论述。

(1) 开课及管理课程。作为PG中最重要的教学活动场所,课程是由教师来开设管理的。PG中的课程是类比于现实中的课程而设置了很多相关的变量,像课程的起止时间、课程助教、课程注册起止时间等等,教师通过这些属性的确定可以将一门课程完整的形象展现给系统这个虚拟学习环境中的用户。除了课程本身的属性之外,教师应当还需要为课程设定通知、章节、课件等相关对象,这样可以使得虚拟学习环境中的课程内容更加丰富完备,便于学生在学习过程中进行查找翻阅。

(2) 布置练习、作业、考试等并作辅导及统计。在课程教学活动中,这是最重要的一环。教师在讲授一门课程的过程中,根据教授内容和进度,在不同的时间点进行要求、目的、内容不同的“布置”,以期训练提高学生的水平并对教学成果做出评估。这些“布置”都是有时间限制的,而特别地,对于考试来说,还有IP限制和登录限制,这样就可以很好地防止作弊。在“布置”的过程中,教师会对题集中的每道题目给予适当的分数百分比——总分需要达到100——以便系统自动给分。在这个过程中,教师可以查看学生的解题源码和结果,对学生的解题做出评论及辅导,并可修改系统的给分结果。教师可以查看某次“布置”的统计信息,包括班级排名和提交情况等等;同时也可以根据多次“布置”的统计信息来对学生做出综合评定。这个过程,简单来说,就是教师选定几次“布置”,然后为每个“布置”设定分数百分比——总分依然需要为100,最后由系统计算得到结果,此结果也可由教师下载成电子表格格式存档。

(3) 选课。课程教学作为PG中最重要的教学活动,用户如果想参与进去,就应当选修他想学习的那门课程。与现实世界中类似,教师会为课程设定注册码,用户必须输入正确的注册码才能选修上课程。这个课程注册码可以看作是教师和学生关于某门课程的一个口令,方便教师通过学生们的选课。

(4) 参与课程教学活动。学生可以参与的课程教学活动很多。包括:阅读各种通知,了解课程的大纲、参考文献、要求等等;了解课程各章节内容;下载课程课件学习;从课程所提供的链接访问课程主页学习可能更多的内容。当然,在PG中,学生最重要的课程教学活动就是完成教师关于某门课程布置的练习作业考试。这些练习作业考试都是有时间限制的,学生必须在规定的时间段内完成。在完成这些“布置”之后,学生可以查看关于此次“布置”的统计信息,包括自己在班级的排名,班级关于此次“布置”题目解题结果的一些统计信息,还可以就某一问题向老师提问,等待老师的回答。

(5) 教师在班级的某一次练习、作业、考试中,选取比较优秀的学生解答,作为“推荐解答”或“推荐代码”介绍给全班同学。为了增强学生的主动性,学生可以就某门课程,或者某次题集,或者某道题目的解答发信询问老师,以期获得更具针对性的辅导。在课程、题集或者解答的页面上,会有相应的“答疑”链接,学生通过它向老师询问的同时,系统会自动将原始网页的URL记录下来附于信件一起发送给老师,使得教师可以根据“现场信息”给予更好的辅导。

3.4 文摘

文摘相关的教学场景比较简单清晰,逻辑也并不复杂。文摘是系统中的一个辅助信息,目的是为了帮助学生解题和在解题之余更好地理解题目中所蕴含的概念方法,从更高的理论角度来掌握这些信息。

3.5 标签

标签是由用户定制的,我们希望通过它能够全面详细精确地描述一种资源,同时通过标签之间的关系,我们可以在拥有这些标签的资源之间建立各种各样的关系,从而达到用户能够更精确的描述资源,而系统能够通过标签更准确的理解资源以及用户的请求,从而更“聪明”的为用户服务的目的。

有了标签模块之后,系统对于资源的掌握和反应更加“智能”,我们可以得到很多新的功能和应用。可以利用标签在用户新建一个题目、题集、文摘时指出相应类别乃至类似的同类型资源,供用户作为参考。譬如,在学生解一道题目的同时,旁边可以列出相关的文摘供学生参考,亦可列出相关的题集供学生进一步巩固拓展自己之用。

Tag更为重要的地方的是在教师更新某一题集时,可以根据教师为此次题集所设置的标签,系统获得这些标签之后,对于每一个标签都去检索其相关的题目,将得到的结果集合起来,并在页面上给予教师提示,教师可以利用这项功能去寻找可能与此题集相关的题目。这样就解决了一个十分重要的问题:为教师更新题集提供备选题目,减少教师的工作量,教学活动的盲目性以及教学资源的重复浪费。如果没有这个功能,教师在更新题集时,并不知道系统中有多少题目可能与他的这次题集有关联,可能需要教师对系统中的所有题目浏览一遍才会有所领悟。而有了这个功能,则教师只需要关注此次题集的目的,所要考察的知识点等信息,将这些列为题集的Tag,由系统根据这些Tag去寻找相关的题目,提高了信息的效率,起到事半功倍的效果。

标签之间的关系并不是并行的,它们之间可以根据相关性分析,而产生相关联的关系。从教学辅助的角度出发,我们需要在这些标签之间建立与教学活动有关的,能够为教学辅助提供支持的关系。这些关系包括:

(1) 同一性。即2个短语实际上描述的是同一回事。例如:递归和recursion。

(2) 关联性。即2个短语之间互有关联。例如语言基础中if和switch同属于条件语句关键词。

(3) 前驱后继关系。即a和b两个短语之间a为b前驱,反过来,当然b为a后继。所谓前驱和后继的语义,主要体现在知识点的前后继承掌握上。譬如在C语言中,数组是指针的基础,学生只有在学习了数组之后才能对指针有更好的认识和应用,所以可以在这里可以认为数组是指针的前驱,而指针是数组的后继。

根据上面所述的3种关系,我们为标签之间建立相应的关系形成所谓“知识图”结构。利用这个知识图结构,可以完成很多具有挑战性的功能。比如最直观的,教师可以通过这个知识图来辅助他教学,并作为课程出题的依据之一。同时,在学生解题的过程中,系统可以根据学生所作题集和题目的标签,给出帮助和建议,来辅助指导学生进行进一步的学习。现在所能设想的场景为:

一名学生在解题时(题集或单独的题目均可),系统利用该题集或者该题的标签,去系统资源中寻找和该题相关联的题目,并给出提示和推荐,由学生自己根据这些推荐来决定下一步的学习。这些推荐可以来自3个方面:

(1) 系统根据该题集或该题的标签寻找和它具有同一性和关联性的标签,然后找出这些标签的题目,并作为和该题“类似的题目”推荐给学生,帮助学生巩固该类别的相应的题目;

(2) 系统根据该题集或该题的标签寻找以它作为后继的标签,然后找出这些标签的题目,并作为做该题之前“需要巩固的知识”推荐给学生,帮助学生巩固基础;

(3) 系统根据该题集或该题的标签寻找以它作为前驱的标签,然后找出这些标签的题目,并作为做该题之后“可以深入学习的知识”推荐给学生,帮助学生深化所学知识。

3.6教学互动

教学互动的主要功能位于课程教学活动中,因为在这个环节中,教学互动有着明确的供体和受体。这个功能是通过系统中师生之间的问答来提供的,并且此功能和系统的站内信件子部件结合在一起,为师生提供了一对一的辅导功能。

具体说来,师生可以针对课程的某一个题集、题目甚至一个解答进行问答,这些问答过程会记录在双方的站内信件过程中。如果一门课程有助教,则学生的提问将会发送到相应的助教,但是教师可以查看、问责这一环节。

4结束语

PG的开发起源于北大ACM代表队的POJ(http://acm. pku.edu.cn/JudgeOnline)系统,力图成为一个对用户更友好,数据资源表现方式更丰富更适合教学的网站;在开发过程中受到了Moodle课程管理系统的影响,转而成为一个更加专业的,更深入教学过程并为教学提供服务的系统。在演化过程中逐步形成了系统的三大特点:分布式的结构、对教学资源的有效管理以及教学辅助的功能支持。

PG系统目前已经有了一个可以使用的版本(http:// programming.grids.cn),我们在北京大学“计算概论”、“算法程序设计与分析”等课程的教学上已经使用了该系统。为了提高服务器系统的使用效率以及整个系统的可管理性,同时也保证系统的可用性,我们将PG系统部署在虚拟机环境下,在实际应用中取得了良好的效果。实践证明,PG系统的是有成效的,受到了师生们的一致好评。同时,师生们针对各自在教学和学习过程中遇到的问题,提出了许多宝贵的意见,将有利于PG进一步的完善和发展。

PG是我们在程序设计类课程教学方面的一次比较成功的探索,我们相信系统可以为教师和学生的教学过程提供更好的帮助,并有望为其他从事相关工作的人士提供一个平台;同时,我们也会遵循我们的思想和理念,继续不断的改进系统,为计算机程序设计类课程的教学作出贡献。

参考文献

[1] http://ocw.mit.edu

[2] http://www.moodle.org

[3] PKU ACM JudgeOnline. http://acm.pku.edu.cn/JudgeOnline

[4] 李文新,郭炜. 北京大学程序在线评测系统及其应用[J]. 吉林大学学报(信息科学版),2005,23(增刊):170-177.

[5] 郭炜,李文新. “程序设计实习类课程如何准确考查学生学习情况”[J]. 吉林大学学报(信息科学版,2005,23(增刊):99-103.

猜你喜欢
虚拟机
基于VMware的计算机网络课程虚拟实验平台搭建
虚拟机技术在计算机安全技术实验教学中的应用
还原卡与虚拟机技术在计算机实验室中的使用对比陈治
虚拟机技术在计算机组装课堂中的应用
虚拟机服务器在教学实践中的探索研究
浅谈计算机系统虚拟化网络设置方案
任务驱动教学法在《网络应用服务管理》教学中的应用
虚拟机局域网组建技术应用初探
虚拟机在中职企业网搭建中的应用
虚拟机多平台服务器研究应用