APP下载

以ACM/ICPC竞赛促进计算机专业实践教学研究

2018-09-17侯向辉徐卫李琰琰

计算机时代 2018年7期
关键词:实践教学

侯向辉 徐卫 李琰琰

摘 要: ACM/ICPC程序设计竞赛是世界上最具影响力的计算机类学科竞赛之一,能够最直接体现学生对专业知识的掌握以及实践能力。ACM/ICPC集训在选手日常训练方面都有一套行之有效的机制,对学生的学习兴趣、分析解决问题能力、创新能力等方面的培养都起着推动作用,ACM竞赛是对学生实践能力最直接的考核。因此整合在线判题系统建设实践平台,将ACM/ICPC模式引入计算机专业实践教学,是提高计算机专业学生实践能力的途径之一。

关键词: ACM/ICPC; 程序设计竞赛; 实践教学; 在线测评

中图分类号:G420 文献标志码:A 文章编号:1006-8228(2018)07-94-03

Abstract: The ACM/ICPC programming contest is one of the most influential discipline competitions of computer science in the world, which can most directly reflect the students' mastery of professional knowledge and the ability to practice. ACM/ICPC training has an effective mechanism for the daily training of player, which plays an important role in the cultivation of students' interest in learning, their ability to analyze and solve problems, and the ability of innovation. Therefore, it is one of the ways to improve the practical ability of computer majored student to integrate the online judgment system, build the practice platform and introduce the ACM/ICPC model into the practice teaching of computer specialty.

Key words: ACM/ICPC; programming contest; practical teaching; online judge

0 引言

國际大学生程序设计竞赛ACM/ICPC(Association for Computing Machinery/International Collegiate Programming Contest)是世界上最大、历史最长、影响最广泛的计算机类学科竞赛[1]。程序设计竞赛对参赛学生的思维能力、脑力体力、协同编程能力等方面有极高要求,是各个国家计算机高等教育成果最直接的体现。程序设计竞赛从能够帮助学生全面掌握专业领域的基础知识、促进学生提高学习积极性、全面激发学生潜能、培养学生的团队写作能力和加强学生对解决实际问题等创新能力的培养[2-3]。

1 ACM/ICPC竞赛训练机制

科学的训练机制能更好地提升竞赛成绩,高效的程序设计训练方法可以引导和增强学生的程序设计能力,比赛过程中好的组队策略、良好的团队合作和答题抉择等竞赛战术,也是取得竞赛成绩的必要因素。

程序设计竞赛命题涉及计算机科学、软件领域、信息学、数学和英语能力,通过以赛代练的方式,加强学生的思维能力。但是,由于程序设计竞赛题目的特殊性,每次比赛都是以实际问题或科研项目中关键问题为原型的,考核目标点均不相同的9-12道题目,且以往期题目不重复[4-5]。程序设计竞赛题目以现实问题为出发点,其解题方法并不唯一且并无现成算法可以借用,只有全面培养学生的创造能力,才是最好的办法,同时,高强度的训练,长时间压力的比赛,都对学生的智力和毅力等品质提出了更高的要求。由于竞赛题目的难易程度差别悬殊,大量做题无法客观的评价一个学生真实的计算机编程水平。创新平台中新引入的题目考虑增加难度系数,比赛结束进入训练题库,学生日常训练成绩,将以加权分值的方式客观反映学生的训练刻苦程度。

ACM集训队日常训练主从知识范畴、训练方法和竞赛策略等几个方面展开。每年秋季学期开设新生训练营,培训主要围绕基础数据结构、概率论、组合数学、图论、计算几何等知识点展开。由于ICPC只作为培养学生编程兴趣的一种手段,在有限时间里要全面学习和掌握这些知识点是非常困难的,因此,组队应考虑队员之间的能力及擅长相互补充。例如,队员1侧重学习计算几何,队员2和队员3偏重学习数学知识和数据结构,这使得组队在短时间内获得更好的比赛成绩,从长远来看,要想成为一名优秀的参赛队员,须具备“一专多能”的素质,“一专”是精通至少一种类型的不同难度的题目,“多能”是指能解决其他类型的一般题目。这样组成的参赛队伍往往会有1+1+1>3的比赛效果。ACM集训队通过个人实时排名、竞赛成绩、解题数量统计等来量化队员的成绩。可以发现,通过团队之间的协作以及适当的竞争可以增加学生的学习热情,激发其学习潜力。

2 基于在线判题系统的实践平台建设

ACM/ICPC程序设计竞赛一般专门的训练平台在线判题系统OnlineJudge,简称OJ,将其引入到程序设计能力的教学及训练中,建立了在线实践平台,将教学和实践紧密结合,鼓励学生在网络平台中开展练习、讨论、测试等自主学习活动,同时竞赛、实践教学和学生上机考试的要求。

本系统平台的目标是集成在线程序判定系统、实践教学在线练习系统和上机考试系统为一体的Web应用系统。

在线程序判定系统,客户端电脑先调试自己的解题程序,然后将代码提交给系统,随后系统将产生一条数据库记录保存本次提交,同时保存用户提交的代码,接着调用用户提交时选择的编译器对用户的代码进行编译,在启动编译好的程序,并将测试数据输入该程序,通过输入输出流的重定向,获取用户程序的输出结果,与标准答案比较,最后将比较结果写入数据库同时反馈给用户本次判定的结果。

实践教学在线练习系统和上机考试系统以在线程序判定系统为基础,根据不同的应用场景,来设计不同的web应用管理系统。

根据现有程序设计竞赛和学生上机考试的需求,系统平台包括三类用户:管理员、教师和学生。

⑴ 管理员:进行系统日常的维护,能保证系统正常无异常的运行。

⑵ 教师/教练:进行系统数据维护,如添加试题、新增考试、手动判断题目等等。

⑶ 学生/选手:未注册之前,可以查看题目,查看题目提交的状态,但不能提交代码。在注册并登之后,学生就可以提交代码,查看自己提交代码的情况,以及历史情况,个人的成绩等等。

平台的主要功能模块如下:题库管理、竞赛管理、考试管理、训练管理、用户管理和系统管理。它负责启动运行编译好的用户程序,需要完成的工作流包括:启动程序,设置安全,重定向输入/输出流,写入测试数据,获取输出答案,比较答案,以文件形式返回。

实践教学在线练习系统和上机考试系统采用JavaWeb+BootSrtap开源前端框架进行项目开发,并同时部署在校内校外两台服务器上,校内服务器主要用于在线上机考试,为了防止连接互联网进行作弊,而校外服务器主要用于学生的日常联系,可以不受访问地点约束。

3 利用实践平台促进实践教学途径

按照ACM程序设计竞赛的集训队选手训练方式,以点带面地提升计算机专业的实践教学质量。将ACM/ICPC竞赛引入到程序设计能力的教学及训练中,将教学和实践紧密结合,并鼓励学生在网络平台中开展练习、讨论、测试等自主学习活动。由于ACM/ICPC竞赛题目绝大多数来自于计算机实践的抽象,要想很好地解决这些问题,要求学生必须掌握相关知识,拥有数量的编程调试技术,并且具备一定的创新实践能力。

对于计算机类专业学生而言,最基本实践能力就是具备良好的编程能力。由于ACM/ICPC竞赛题目绝大多数来自于计算机实践的抽象,引入到程序设计能力的教学及实验中,与“程序设计基础”、“数据结构”等课程的理论授课相合,要想很好地解决这些问题,需要根据不同的学生水平,题库实验项目有一定的区分度,分别面向C/C++的授课学生,程序设计爱好者,ACM集训队员。题库中涵盖数学、计算方法、数据结构、数值分析等方面的专题题目。以分值标定题目难度,题库实验项目来源于实际的项目或标准应用,且有一定的创新性,根据理论知识的内容进行改造和提炼,方便学生通过创新实践平台中开展练习、讨论、测试等自主学习活动。

自从2015年开始,为了进一步提高学生在“程序设计基础C”课程中的学习效果及实际动手能力,在考核的形式和内容上做了改进。计算机学院面向所有专业设置了程序设计基础通关考试。实施在线实践与判题打分,学生在线做题,系统实时判题,这就要求学生能够灵活应用所学知识解决实际问题。2015-2017年,共有1458名学生参加了通关考试,其中1344名学生通过了测试。每学年平均通过率约为92.34%。2017年开始,在线判题系统的实践平台成为“程序设计基础C”的期中考试平台,学生在该平台中考试的成绩,作为大类招生改革实施后考核学生课程学习情况以及专业潜能测试的一个主要依据,用于电气通讯与计算机大类2017级学生的专业分流。

自2016年起,教育部高等学校计算机类教学专业指导委员会、教育部高等学校软件工程类教学专业指导委员会等主办了中国高校计算机大赛-团体程序设计天梯赛,旨在检验并提高高校程序设计实践教学的总体水平。比赛由北京大学、浙江大学等来自29个省级行政区的200余所高校参加。我校在2016年、2017年连续两年获得了全国高校一等奖基础上,2018年获得全国高校特等奖,反映出我校ACM/ICPC程序设计竞赛对计算机专业整体实践教学的促进作用。

4 结束语

综上所述,将ACM/ICPC集訓队员的培养机制引入到计算机专业的实践教学过程中,可以弥补现有计算机教学对学生编程能力、调试能力等动手缺少有效评估的不足,通过整合在线判题系统建立教学实践平台,将教学、实践、训练三者紧密结合,并鼓励学生在网络平台中开展练习、讨论、调试、测试等主要计算机实践教学环节,对提高计算机专业实践教学水平,继而提升计算机专业整体教育质量有着重要的参考价值。

参考文献(References):

[1] 邝祝芳,余绍军,杨卫民.ACM/ICPC对培养信息学科创新型人才的作用[J].计算机教育,2013.3:8-10

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

[3] 李环.基于ACM竞赛的程序设计类课程教学改革研究[J].计算机教育,2016.255(3):115-118

[4] 王春平,王卫红,韩姗姗等.ACM-ICPC训练方法与竞赛策略[J].计算机教育,2014.6:91-94

[5] 吴海波,夏新军.基于ACM/ICPC的计算机实践教学研究[J].当代教育理论与实践,2014.5:125-126

猜你喜欢

实践教学
基于体验式教学的管理学课程教学改革与实践
客户关系管理课程实践教学模式初探
地方高校城乡规划专业实践教学的特色化探索
茶学专业校企合作实践教学探索
《电气工程毕业设计》 课程的教学设计
基于卓越计划的金属结构材料课程实践化改革与建设
基于应用型创新人才培养的模块式实践教学体系构建
研究型学习在传热学实践教学中的应用
思想政治理论课实践教学研究述评
高职院校商务礼仪课程教学改革探索刍议