于露
摘要:对于编程(程序设计、算法学习)类课程的教学,训练是一个非常重要的环节。基于此,借鉴一些在线测评平台,根据学生的学情和特点,开发了Online Judge平台,旨在打造一个集教、学、练、赛于一体的交互式学习社区:师生提供内容,组建教学共同体;学生“闯关”,激发自主学习力;系统及时反馈,强化过程性评价;学生同场竞技,提升实战能力。在实际使用中感到,还应该对OJ平台进行优化提升:广泛搜集高质量题目,进一步扩充题库;结合实际使用情况,解决新问题,满足新需求。
关键词:在线评测平台中学编程教学闯关比赛
目前,国内不少省份信息技术课程的教材都发生了一些改动,提高了程序设计以及算法内容的比重。Python是一种计算机程序设计语言,它具有简洁性、易读性以及可扩展性等特点。2017年,我校针对初二年级,设置了Python校本课程,并开发了相应的教材。在实践过程中,我们发现,对于编程(程序设计、算法学习)类课程的教学,训练是一个非常重要的环节——学生在实际编写代码的过程中,可以深化对知识点的理解,同时提高计算机能力,提升计算思维。基于此,我校借鉴了一些在线评测平台,根据学生的学情和特点,开发了Online Judge(以下简称“OJ”)平台,旨在打造一个集教、学、练、赛于一体的交互式学习社区。
一、教——师生提供内容,组建教学共同体
在OJ平台上,教师并不是唯一的课程提供方——教师在平台建设初期完成课程体系的构建以及基础性内容的填充,学生在使用过程中不断地丰富着教学内容。
以“Python基础入门”内容为例,我校开发的教材包含“输入、输出”“算术运算和赋值语句”“关系、逻辑运算与选择语句”“for循环语句”“while循环语句”“列表list”“dict字典”“自定义函数”8个章节,基本可满足学生一个学期信息技术课程的学习需求。每个章节包含知识点、例题和作业3个部分:知识点的讲解采用文本与视频相结合的方式,将每一节的知识点以文本形式呈现,同时将文本内容的讲解录像保存,方便学生反复观看学习;例题的讲解与分析同样录像保存;作业部分采用在线评测与反馈的形式。OJ平台支持矢量技术录屏,视频录制效果清晰,体积小、上传快,浏览时不卡顿。
我们会邀请一些在信息技术学科上有兴趣和能力(如参与过信息学竞赛)的学生帮助扩充题库,并在解题过程中完成题目类型标签的添加。学生若想练习某一类型的题目,则可在题库中搜索相应标签找到题目(如图1)。
学生人数众多、思路各异,在解题过程中会呈现出不同的方法,因此,我们开放了学生上传解题过程的功能,让学生可以像老师讲解例题一样给同学讲解习题的编程思路。在实践过程中我们发现,学生非常乐意录制题解视频,让更多的用户看到自己的思路,这对于他们而言是一种荣誉,更是一种激励。
另外,每道题目下方的讨论区可以实现学生与教师、学生与学生之间的互动交流。教师无法实时解答的问题,很多时候都可以通过学生之间的交流得到解决。
二、学——学生“闯关”,激发自主学习力
OJ平台设置了关卡模块(功能的设计参考了“洛谷”平台),供学有余力的学生自学使用。关卡分为入门、普及、提高、省选、全国赛、USACO六个层次水平,每个层次水平根据所需知识点细分为更多的关卡。
以“Python基础入门”为例,OJ平台设置了“顺序结构”“选择分支结构”“循环”“数组”等十个关卡。每个关卡题目数量不等,通过总题数的80%即可通关;有的关卡需要通过之前的关卡方可解锁。根据上述规则,学生可以像玩闯关游戏一样,不断地在“升级打怪”中完成难度遞增的题目,即进行闯关式学习。
实践证明,闯关式学习能更大程度地激发学生的学习动力。首先,对于Python课程的学习,学生之间的差异较大,若采用完全相同的教学内容,会出现一部分学生接受困难而另一部分学生觉得过于简单的状况。因此,自定步调的学习路径——闯关式学习应“需”而生,实现了学习进程的自由化。需要说明的是,这种“自定步调”并没有脱离学生的学习规律,关卡的设置其实已经帮助学生规划好了知识点学习顺序——高阶算法的学习必须以掌握基础算法为基础,从而保证学生在逐步提升水平的同时扎实地掌握每一个知识点。其次,闯关式学习借鉴了游戏的设计原理:在成功突破某个关卡之后会获得相应的卡片奖励,增加等级排名提升、勋章累积等游戏元素等。所有在OJ平台上学习的学生构成了一个群体,每一个个体都渴望在这个群体中获得更高的分数与排名,这使得学习变成了学生积极主动地去完成的事情。
三、练——系统及时反馈,强化过程性评价
OJ平台采用黑盒测试法对学生提交的解题情况进行大数据评测,一道题的评测大概在2秒内就可完成,几乎不会出现卡顿的情况。另外,对于同一道题,学生可反复提交、反复评测,以得到最优的结果。
OJ平台记录了每一位学生每一次作业、考试每一道题的做题情况,为实现过程性评价提供了可能。从课程评分的角度来说,根据学生一个学期的做题情况给出的分数一定比根据学生一次考试的做题情况给出的分数更加全面、更加具有说服力,对学生的学习有很好的引导作用。同时,教师可对学生练习情况的数据进行分析,结合学生最终的编程水平,设计贴合学生学情的测试卷。
从课程改进的角度来说,深入分析学生的学习路径,可以帮助教师分析总结编程类课程学生能力水平的变化情况,知晓学生可能存在的难点与瓶颈,从而进一步调整教学设计以及授课的重难点。
四、赛——学生同场竞技,提升实战能力
中学阶段对于学生编程水平的界定多以比赛的方式进行。国内外各大在线评测平台均有类似于比赛的功能,用户在一些平台(如Codeforces)上的排名已经成为一些高校或者公司录取时参考的信息。因此,我校在开发设计OJ平台时,特别增设了“在线比赛”功能模块。
“在线比赛”功能专门用于Python课程的考核与信息学竞赛的训练,分为OI和ACM两种赛制类型——OI赛制在比赛期间不能看到比赛结果,在比赛结束后方可看到每个人的分数及排名;ACM赛制可以多次提交解题过程,在比赛过程中可以看到自己及他人的解题情况及排名。
“在线比赛”不需要参赛者在同一地点,只需要参赛者在同一时间登陆平台。学生在平台上同场竞技,不仅可以了解自己的实战水平,而且可以结识很多志同道合的同学和各路高手。实践证明,“在线比赛”不仅能提升学生的编程能力,而且能提升学生的交际能力。
五、结语:进一步完善的方向
实践证明,OJ平台实现了时空无边界、进程无边界、角色无边界和资源无边界的教学效果。然而,OJ平台的开发不是一蹴而就的事情,而是一个不断完善的过程。为了更好地促进平台发挥教、学、练、赛的功能,打造一个完善的Python交互式学习社区,我们还应该从以下两方面对OJ平台进行优化提升。
(一)广泛搜集高质量题目,进一步扩充题库
题库是在线评测平台的灵魂所在。目前,我校OJ平台上大约有2000道题目,相较于受众广泛的知名在线评测平台,题量还远远不够。而与其他学科不同的是,搜集编程类题目不仅仅要搜集题面,测试数据也必不可少,这也是搜集的一个难点所在。下一阶段,我们将从各个渠道搜集更多高质量的题目,以扩充题库。
(二)结合实际使用情况,解决新问题,满足新需求
OJ平台上线运行后,随着使用学生人数的增多,更多的问题与需求涌现出来。比如有学生在评论区恶意灌水,给网站管理带来了不便;比赛中途会有人加入,需要新增这一功能;不同浏览器页面显示不同,需要调整这一问题……相信在后期使用过程中,仍会出现各种各样的问题和需求,我们将与网站开发者保持联系,及时解决新问题,满足新需求。
参考文献:
[1] 史钋镭.利用在线评测平台,助推人工智能教育[J].教育研究与评论(中学教育教学),2018(4).