“教学—训练—竞赛一体化”程序设计能力培养体系的构建

2017-04-12 02:02韩建民王丽侠叶荣华
计算机教育 2017年3期
关键词:评测程序设计竞赛

韩建民,王丽侠,叶荣华

(1.浙江师范大学 计算机科学与技术系,浙江 金华 321004;2.浙江师范大学 行知学院,浙江 金华 321004)

“教学—训练—竞赛一体化”程序设计能力培养体系的构建

韩建民1,王丽侠2,叶荣华1

(1.浙江师范大学 计算机科学与技术系,浙江 金华 321004;2.浙江师范大学 行知学院,浙江 金华 321004)

分析当前大学生程序设计能力培养存在的问题,提出“教学—训练—竞赛一体化”程序设计能力培养体系,阐述该培养体系的总体框架及模块间的关系,并说明该培养方案的优势。

程序设计能力;教学—训练—竞赛一体化;在线自动评测

1 背 景

程序设计能力就是利用计算机解决实际问题的能力,是计算机相关专业学生需要具备的最为重要的能力。程序设计能力的培养也是高校实现计算机专业培养目标的重要组成部分,因此,计算机专业的教师在大学生程序设计能力培养方面做了大量的研究工作。文献[1—3]探索将ACM竞赛模式引入程序设计能力培养的实践教学中,以提升学生的实践能力和学习兴趣,取得了较好的成效;文献[4]将大学生程序设计能力的培养分为4个层次,提出了大学生程序设计能力的层次化培养模式;文献[5]提出了大学生程序设计能力立体化培养模式。

尽管在大学生程序设计能力培养方面高校和教师做出了很多探索,也取得了一定的成效,但目前多数高校的教学方式以课堂教学为中心,以实验和课后作业为支撑,这种培养模式存在以下不足。

(1)课堂教学偏向理论内容,而实验实践教学受学时和空间的限制,学生的实践能力无法得到充分的锻炼和提升。

(2)固定的课堂教学和实验教学使教学内容统一化,难以实现因材施教和个性化培养。

(3)教学体系不完善,以课程教学大纲为依据的课程教学,使学生的解题能力和思维方式难以得到系统化的锻炼和提升。

为了更好地提升教学质量,实现创新型人才培养目标,我们将ACM竞赛实训模式引入大学生程序设计相关课程的教学中,建立“教学—训练—竞赛一体化”程序设计能力培养模式,并在计算机专业、软件工程专业、网络工程专业学生的程序设计能力培养中实施,有效提高大学生的程序设计实践能力和创新能力,为社会培养高素质的人才。

2 “教学—训练—竞赛一体化”培养体系

针对目前创新型人才培养的需要,我们认真研究和探索大学生程序设计能力培养的模式,提出一套“教学—训练—竞赛一体化”人才培养方案。该方案将ACM竞赛模式引入程序设计能力的教学及训练过程中,面向程序设计能力培养的主要课程高级程序设计语言与数据结构分别建立了配套的实训系统。该实训系统将教学和实训紧密集合,构架讲练结合、“教学—实训一体化”第一个层次的程序设计能力培养模式。在这个层次的基础上,以算法综合训练为基础,以程序设计竞赛为目标驱动,构建“训练—竞赛一体化”的教学模式,进而构建“教学—训练—竞赛一体化”多层次的培养体系。该培养体系在学校人才培养中发挥重要的作用,具体体系结构见图1。

3 基于在线自动评测技术的实训系统的设计

图1 “教学—训练—竞赛一体化”的人才培养方案

为实现“教学—训练—竞赛一体化”的人才培养方案,需要建立5套题库及相应的程序设计实训系统。实训系统的基本功能类似,只是面向不同训练的题库不同。实训系统的用户角色可分为非注册用户、学生、教师和管理员。管理员的功能包括登录、管理题库、管理竞赛、管理评测、查看源码、查看排名等;非注册用户的功能包括登录、查看题目、查看排名等;注册学生的功能包括登录、查看代码、提交代码、参加比赛、查看排名等;教师的功能包括登录、查看代码、查看排名等。系统的用例图见图2。

图2 系统用例图

图3 程序在线评测流程图

实训系统的实现核心是程序设计在线评测。程序的自动评测流程见图3,学生向评测系统提交程序源代码,系统依据提交的先后顺序将待评测的源代码插入待评测队列,评测内核程序从评测队列中依次获取评测源代码,对其进行编译、运行、结果比较等操作,并根据操作结果返回相应的信息。具体的出错信息有:如果源码编译错误,直接返回编译错误(CE, Compile Error);如果运行超时,直接返回超时错误(TLE, Time Limit Error);评测程序将该程序的运行结果与测试数据进行比较,如果完全一致则返回程序运行正确信息(AC, Accept),否则返回运行不正确信息(WA, Wrong Answer)。

4 实训系统的应用

在基于“教学—训练—竞赛一体化”的大学生程序设计能力培养的实践中,我们建立了C语言层次化实训系统、数据结构实训系统、程序设计综合训练实训题库、算法实训题库等。

通过实践,“教学—训练—竞赛一体化”培养方案具有以下优势。

(1) 将程序设计能力的培养构建在一个统一的框架下,使学生的程序设计能力得到系统化、全方位的培养。

(2) 实训系统的建立基于ACM竞赛实训模式,针对不同层次的学生分层次地组织实训内容,有利于实现因材施教。

(3) 实训的训练内容在有限的实验教学中是无法完成的,而实训系统24小时对外提供服务,学生可以在任何时候、任何地点查看训练内容、提交代码,系统实时给予评测。

(4) 实训内容和实训模式遵循ACM竞赛快乐学习的理念,通过排名机制,极大地激发了学生的刷题热情。

(5) 实训代码的提交,完全实现了计算机自动实时的评测和反馈,极大地减轻了教师评阅程序的负担。

5 结 语

实践表明,该培养方案使学生的程序设计能力、解体思路得到了有效的训练,教学效果明显提高。

当然,程序设计能力是计算机专业学生的基本能力,而优秀的计算机人才只具有程序设计能力是不够的。如何将程序设计能力的培养与后续的计算机专业综合素质的培养相结合,为社会培养出高水平高素质的优秀计算机技术人才,还需要进一步的探索与实践。

[1] 常子楠. 基于ACM模式的程序设计类课程实践教学探索[J]. 计算机教育, 2010(16): 144-146.

[2] 穆宝良, 李晋, 韩雪峰. 基于ACM平台的程序设计课程教学改革[J].软件工程师, 2013(4): 40-43.

[3] 刘海霞, 冉宇瑶. 基于ACM竞赛模式的程序设计类课程实践教学改革的探讨[J]. 工业控制计算机, 2016(29): 39-40.

[4] 韩建民, 王丽侠,贾泂. 大学生程序设计能力的层次化培养模式[J].计算机教育, 2012(3): 15-18.

[5] 周健, 郑诚. 立体化程序设计能力培养方法[J]. 计算机教育, 2014(4): 56-59.

(编辑:孙怡铭)

1672-5913(2017)03-0061-04

G642

浙江师范大学校级重点教改项目。

韩建民,男,教授,研究方向为信息安全,hanjm@zjnu.cn。

猜你喜欢
评测程序设计竞赛
2020丝绸之路数学竞赛
热力站设备评测分析
医学专业“Python程序设计”课程教学改革总结与思考
次时代主机微软XSX全方位评测(下)
次时代主机微软XSX全方位评测(上)
基于Visual Studio Code的C语言程序设计实践教学探索
从细节入手,谈PLC程序设计技巧
创新思维竞赛(3)
高职高专院校C语言程序设计教学改革探索
创新思维竞赛(6)