摘要:针对程序设计类教学中存在的问题,在调研ACM/ICPC竞赛模式和特点的基础上,将ACM/ICPC竞赛引入到程序设计类教学中,通过建立ACM/ICPC在线评测系统、课堂教学融入ACM/ICPC、实践教学全程ACM/ICPC化、改革考核手段等方式来实施程序设计类课程的教学改革,并在实际教学应用中取得了一定的成效。
关键词:程序设计;ACM/ICPC
中国分类号:G64 文献标识码:A 文章编号:1009-3044(2015)25-0116-02
Based on of ACM/ICPC Reform and Discussion on the Teaching Reform of the Program Design
ZHAO Lei
(Computer Department of Hengyang Normal University, Hengyang 421001, China)
Abstract: In view of the problems existing in the teaching of program design, based on the research of the ACM/ICPC model and characteristics, the ACM/ICPC competition mode is introduced into the program design teaching. Through the establishment of ACM/ICPC online evaluation system, the teaching reform and of ACM/ICPC, full ACM/ICPC of practical teaching and reform assessment methods to implement the program design curriculum teaching reform. In practical teaching and application, some results have been obtained.
Key words: program design; ACM/ICPC
1 引言
目前,程序设计类课程是我国各大高校计算机学院中计算机科学与技术、软件工程等专业开设的专业基础课程。根据各个专业要求的不同,课程开设的时间、课时和深度也有所不同,课程主要目标在于培养学生良好的逻辑思维能力、扎实的程序设计能力和一定的研究创新能力[1]。衡阳师范学院作为一所应用型本科院校,遵循培养适应社会需求的高等技术应用型专门人才的培养宗旨,一直在进行程序设计类课程教学方法改革的研究和实践。学院中程序设计类课程和ACM/ICPC竞赛教学中具有丰富教学经验的老师们,通过深入的思考和学习,不断地进行教改尝试,在程序设计类课程教学中引入ACM/ICPC竞赛,探索出一条提高程序设计类课程教学质量的新途径。
2 程序设计类课程教学现状
2.1学生逻辑思维能力基础较弱
对于地方性本科院校特别是师范类学校,学生的理科入学成绩往往不够理想,学生的逻辑思维能力也不足。入学后对于理科类课程的学习没有给予足够的重视,加上程序设计类课程对逻辑思维能力要求较高,使得学生在学习程序设计类课程的时候感觉非常吃力,难以得心应手地加以应用。
2.2 学生缺乏学习兴趣
程序设计本来是一件比较枯燥的工作,如果没有兴趣很难坚持下来。在程序设计类课程的学习中学生由于缺乏兴趣,除了上课听老师讲讲课,实践课做做练习外,课余时间几乎不做练习。而要提高程序设计能力是需要反复地多做练习的。现有的程序设计类课程教学中在如何激发学生对程序设计的兴趣和提高学生的自学能力和主动学习的意识缺乏有效的办法。
2.3 课程考核模式落后,缺乏激励机制
当前程序设计类课程考核在很多学校还是主要采用笔试为主的传统考核模式,在课程总评成绩的计算中实践部分所占的比重很少,有的学校甚至没有把它算入考试成绩。而且考试的内容局限于教材中的知识点,试题型中客观题比重大,考察思维能力的程序设计题少,缺乏对学生知识结构与实践技能的综合考察,不利于学生综合应用能力的培养和创新精神的形成,最终形成“高分低能”的现象。
2.4 缺乏互助学习氛围
当前软件项目的开发都是以团队形式实施的,一个软件人员是不可能掌握所有的专业知识,项目开发的成功需要团队成员之间的合理分工和无障碍沟通。在程序设计类课程教学中,互助方式的学习环节非常少,学生往往各自为政,相互之间的交流很少。虽然有些学校在课程设计环节采用了分组进行的模式,由于各个学生水平不一样,造成在具体的设计过程中,往往有些学生只是简单的挂了个名,并没有真正的参与,更谈不上形成团队相互学习了。
3 ACM/ICPC介绍
Association for Computing Machiery(简称ACM,美国计算机协会)是一个世界性的计算机从业员专业组织,创立于1947年,是世界上第一个科学性及教育性计算机学会。ACM国际大学生程序设计竞赛(ACM International Collegiate Programming Contest,简称ACM/ICPC)是全球规模最大,最有影响力的大学生程序设计竞赛。其目的旨在使大学生运用计算机来充分展示自己分析问题和解决问题的能力。它始于1970年,到2015年为止已经举办了39届。这项国际顶级赛事是大学生智力与计算机解题能力的竞赛,是大学生展示水平与才华的大舞台,是全球高校计算机教育成果的直接体现[2]。
ACM/ICPC要求以团队的形式参赛,每个队伍由3名队员组成。每队使用一台计算机,要求选手在全封闭的环境内(不能有任何通讯设备,可以携带任何纸质资料)连续5个小时对8-11个问题进行解答。竞赛采用英文命题,题目涉及面非常广。需要参赛学生具有扎实的基本功、良好的分析问题的能力、较好的团队协作能力和压力下编写程序的能力。该竞赛为学生提供了一个学习和使用程序设计语言和算法的完整实践模式,让学生以精通编程为荣,形成一个积极向上的学习氛围[3]。
4 融入ACM/ICPC竞赛的程序类课程教学改革
通过学校近几年来参与ACM/ICPC竞赛的实践和多年程序设计类课程教学的经验总结,将ACM/ICPC竞赛融入到程序设计类课程教学中。
4.1建立ACM/ICPC在线评测系统
ACM/ICPC在线评测系统一个可以自动评判用户提交程序是否正确的评测系统。有了这个系统学生就可以通过注册、登录后,自己做练习,无需教师人为干预。我们学校自己开发的ACM/ICPC在线评测系统如下图1所示。教师保证后台数据库的负载和数据存储的安全,安排学生轮流对系统进行监管,保证系统的正常运行。
4.2 课堂教学融入ACM/ICPC
ACM/ICPC竞赛是分组的,每个组由三名队员组成。在比赛中考验的不仅是每个队员的思维、知识、心里和意志,还考验三个队员之间的团队合作,要发挥1+1+1>3的效果。在教学的过程中,将班上的同学类似ACM/ICPC竞赛模式进行分组,培养他们的合作意识。并将平时成绩转化为积分,积分以小组的形式给出,学生可以通过以下途径获得积分:
(1) 上课主动回答问题或提出问题。
(2) 指出老师或同学程序中出现的问题。
(3) 在学校的在线评测系统做题。
(4) 在学校的在线评测系统的互动版块帮同学解决问题。
(5) 在学校的在线评测系统中出原创题目等等。
一个学期的平时成绩就是积分,积分越多的小组三个成员的平时成绩就越高。这样既提高了学生的学习兴趣,又培养了学生的团队合作精神。
4.3 实践教学全程ACM/ICPC化
实践教学是程序设计类课程教学中非常重要的一环,在以前的实践教学中,一个老师要面对几十个学生,无法顾及到所有学生,学生写的程序自己无法判断对错,从而挫伤了学生编程的积极性。将实践教学ACM/ICPC化,学生在做练习时递交的程序能够在线即时判断正确与否,如果错了会给出相应的错误提示,这样能极大提高学生学习编程的积极性,同时在线评测系统可以放开时间,在实践课上没有做完的题目,课后可以接着做,这样学生不会因为实践课相隔时间长而忘记上次课所学的内容。
4.4 改革考核手段
将ACM/ICPC融入到考核机制中也是程序设计类课程改革的一个重要内容。我们可以将期末的笔试改为基于ACM/ICPC竞赛模式的机试。同时将学生在前面课程教学中获得的积分以50%的权重加入到课程考核指标当中。这一方面减少了教师的工作量,降低了考核错误率,另一方面做到了客观、公正,更好地发掘学生的创新能力,提高其对知识点的掌握程度[4]。
5 结束语
本文分析了程序设计类课程教学存在的问题,介绍了ACM/ICPC竞赛,通过将ACM/ICPC竞赛融入到程序设计类课程教学,对程序设计类课程教学与实践进行改革。经过这几年的学校督导组的评价、学生的评教,证明了这种改革能够推动计算机程序设计类课程的建设,有助于培养学生的逻辑思维、程序设计、团队合作和协同能力。
参考文献:
[1] 刘晶,吕艳琳,李尤丰. 基于ACM竞赛平台的程序设计课程教学模式改革的探索[J]. 《江苏教育学院学报(自然科学版)》,2010(10):73-75.
[2] 王宏,吴文虎. 清华实践教学“赛课结合”新思路[J]. 计算机教育,2006(7):10-12.
[3] 赵磊,魏书堤,陈坚祯,陈琼,姚丽君. 普通本科院校ACM/ICPC竞赛教学的探讨[J]. 电脑知识与技术,2015(2):129-130,136.
[4] 项炜,陈建国,苏炳均. 以ACM竞赛驱动程序设计类专业课教学改革[J]. 计算机光盘软件与应用,2012,19(10):253-254.