摘要:从本校ACM/ICPC现状出发,总结了ACM/ICPC的特点与参赛的经验,结合所在学院“卓越工程师计划”的实施,研究了ACM/ICPC模式对程序设计课程专业能力培养的作用,提出了抽象思维和逻辑思维是程序设计的基础,并进行了基于ACM/ICPC的程序设计语言的教学与实践改革。经过实际验证,这种改革能够推动计算机程序设计基础课程群的建设,有助于培养学生的抽象思维、逻辑思维、心理素质、团队合作和协同能力。
关键词:ACM/ICPC;程序设计;课程体系;卓越工程师计划;课程群
作者简介:金保华(1966-),男,河南郑州人,郑州轻工业学院计算机与通信工程学院副院长,副教授;闫红岩(1975-),男,河南三门峡人,郑州轻工业学院计算机与通信工程学院,讲师。(河南 郑州 450002)
基金项目:本文系国家“十一五”科技支撑计划项目(项目编号:2006BAK01A38)、郑州轻工业学院2009年校科研基金项目(项目序号:24)和郑州轻工业学院第八批教学改革成果获奖项目(项目序号:17)的研究成果。
中图分类号:G642.3 文献标识码:A 文章编号:1007-0079(2011)20-0079-02
ACM/ICPC(ACM International Collegiate Programming Contest,国际大学生程序设计竞赛)是ACM(Association for Computing Machinery,国际计算机协会)主办的竞赛,有分区赛和总决赛两个阶段,现已发展为世界公认的最具影响力和规模最大的国际顶级赛事,俗称计算机“奥林匹克”。[1]
近年来,ACM/ICPC在我国得到了大规模的推广。赛场是大学生展示水平与才华的大舞台,也是高等学府计算机教育成果的直接体现,更是IT企业与世界顶尖计算机人才对话的最佳机会。因而吸引了越来越多的高校参赛,使得参赛队伍的水平上升很快,赛题的难度也在不断提高。2008年起河南省计算机学会主办一年一次的河南省大学生程序设计竞赛。我们于2008年组建了120台的竞赛专用机房,搭建了学校的ACM在线测评平台,组队参加省赛和亚洲赛。获奖情况如下:在过去的三届河南省大学生程序设计竞赛上共获得了4枚金奖、2枚银奖、1枚铜奖;2009年参加亚洲区赛现场赛获得优秀奖;2010年参加第35届亚洲区赛,通过预赛,获得天津赛区、杭州赛区和成都赛区的决赛资格,并在成都赛区获得1枚铜牌,排名第59名,是河南省该项赛事最好成绩。2009年我们开始组织举办一年两次的郑州轻工业学院“瑞琪杯”大学生程序设计大赛,至今已经组织了四次校级竞赛。
由于C语言系ACM/ICPC的主流语言,我们把C语言程序设计课程的教学目标定位为培养有创新精神的高素质人才。C语言程序设计以往的教学法效果欠佳,不能培养人的自我决定能力,不能唤醒学生的力量,无法培养其自我性、主动性、抽象的归纳力和理解力。
为此,我们进行了基于ACM/ICPC模式的程序设计语言课程体系改革,并经过实践的检测,取得到了非常好的效果。
一、基于ACM/ICPC的程序设计语言的课程体系改革
通过研究,我们认为ACM/ICPC比赛的赛题有如下特点:有实际背景,趣味性和实用性较强;考查的知识范围较全面;层次性较好,分不同水平的题;灵活、新颖。绝大部分题没有定解,留有广阔的思维空间,有益于培养创造性。
在与高手过招的竞赛中可以把知识运用的综合性、灵活性和探索性发挥到极致,体验和感受数学思维与算法艺术之美,提升科学思维能力,而科学思维能力的提高是成就事业的一个非常重要的因素。因而要求参赛选手具备以下能力:很强的数学建模功底;扎实的英语阅读理解功底;广博的算法知识;超强的编程能力;良好的心理素质;很强的团队合作与协同能力。
ACM/ICPC涉及学科知识面广,对学生多方面能力的培养有着积极的意义,可以提高学生自主学习能力、创新能力,也有利于团队精神的培养。但是,ACM/ICPC主办目的不单是培养参赛选手的创造力、团队合作精神以及他们在软件程序开发过程中的创新意识,同时也是检测选手们在竞争压力下进行开发活动的能力。[2]
为了达到C语言程序设计课程的教学目标,我们进行了基于ACM/ICPC的程序设计语言的课程体系改革。
1.调整教学环节
把原计划一学期的教学时间调整为一学年:第一学期进行C语言程序设计基础的教学,第二学期进行C语言程序设计的进阶教学,在学年末进行该门课的实训。
2.修改培养目标,修订大纲,改革考核评价方法
把本课程的教学改革与本学院的“卓越工程师计划”相结合,组织老师外出考察、研讨,然后重新修订了教学大纲、实验大纲、实训大纲、实习大纲。相应地,对考核方式也做了调整:基础教学由笔试转向机试,进阶教学由考试转向考查,实训由过去模拟转向实际项目的二次开发。
3.完善教学资源
组织编写了《C语言程序设计基础及进阶教程》,被评为十一五国家级规划教材,编印了上机实验教程,制作了配套的课件,使用ACM/ICPC在线测评平台作为实验计划外的练习。
4.丰富教学方法
组织课题组老师外出学习参观,取长补短,把好的教学方法用在课堂上。同时,不断总结教学过程中的好方法,加以推广,比如课题组观摩讨论法、融合教学法。
二、基于ACM/ICPC的程序设计语言的教学改革
通过三年来ACM/ICPC竞赛的实践及多年程序设计语言的教学经验总结,展开了对程序设计语言教学的改革。
1.搭建ACM/ICPC在线测评平台
为了做到基于ACM/ICPC的程序设计语言的改革,首先必须保证ACM/ICPC在线测评平台能稳定运行。ACM/ICPC在线测评平台如图1所示。并且安排学生轮流对系统监管,老师还要保证后台数据库的负载和数据存储的安全,以便全校学生使用。
2.教学模式改革
教学模式解决“怎么教”的问题,这是教学改革中最核心的问题,因为在一定程序上“怎么教”就决定了“怎么学”,正像NBA一样,只有优秀的教练才能指挥上演精彩的比赛。[3]我们根据C语言程序设计课程的教学要求和培养目标,在不断探索和总结的基础上,结合应用性工科院校的培养计划,制订了基于ACM/ICPC的程序设计语言的教学模式。[4]如图2所示。
3.精心备课,寻找恰当的教学设计切入点
学生的学习不是听会的,也不是自己看会的,而是上机练习、课下上机实践练会的。程序设计语言不像数据结构,上课没有听不懂的,自己看也没有看不懂的,关键是上机练习,练得多了才能掌握,光纸上谈兵没有用。因此,我们安排有一系列的上机要求,引导学生做一系列的练习。
教材是按程序结构来分章节,我们得揣摩大一初学编程者的感受,难点在哪?怎样讲才能使之顺其自然地接受概念?可以通过ACM/ICPC竞赛的题目寻找合适的教学切入点,有时也可以引入离散数学中的逻辑推理知识,或者构造一种教学情境,让学生感兴趣又能被吸引住,使其一步步跟着往前走。比如抽几名学生前来排队来讲排序算法。
4.建设省级、国家级精品课程
目前程序设计语言已经成为了校级精品课程,下一步积极研究建设省级和国家级精品课程。
5.运用丰富多采的教学法,处理好两个关系
在教学中运用任务贯穿分解法、课堂现场编程陷阱法、课题组观摩讨论法、融合比较法等,教学效果较好。同时,在实际教学过程中,要特别处理好两个关系:
一是ACM/ICPC竞赛与程序设计语言课程教学的关系:ACM/ICPC是实现程序设计语言课程教学目标——提供培养有创新精神的高素质人才的一种有效平台,程序设计语言课程的教学是参加ACM/ICPC的前提与基础,二者相互促进,相互作用,辩证统一;
二是ACM/ICPC竞赛与其他学科的关系:不能过分强调竞赛,导致一些学生其他学科挂科。甚至有的老师误导,对学生说只要参加比赛或者获奖了就保证其他课程及格,这是一种不负责的态度,一定要加以纠正,因为大学是培养学生全面发展的良性环境。
三、基于ACM/ICPC的程序设计语言的实践环节
实践环节是直接提高学生动手编程动力的途径。
1.奖励获奖学生
通过奖励为学校争取荣誉凯旋归来的学生激发大家的学习兴趣,也能够起到“学-帮-带”的作用,特别是与一些重点高校的参赛队同场竞争,提高了自信,增长了见识。同时,可安排获奖学生给其他同学做报告,鼓励更多的同学通过ACM/ICPC平台交流学习。
2.与就业结合
从大一第一学期就让学生思考自己将来的出路:工作或考研。要是工作就必须学好知识,重视实践,提高动手能力;要是考研就在数据结构等考研课程上涉猎面广一些。[5]
3.指导大学生创业中心做实际开发
让学生参与大学生创业中心的项目,激发学生创新精神,提高了实际创新能力。
4.带领竞赛学生参加河南省科技文化艺术节
除了每年2次的大学生程序设计竞赛外,鼓励竞赛班的学生参加学校、河南省的科技文化艺术节的专业组竞赛等各种竞赛。
5.介绍学生参加教师的项目
我们在授课的同时,一边有心培养一些勤于思考的学生,介绍他们参与到老师的实际项目开发中,引导学生自学C++和Java、jsp等工具,让他们从实践中得到锻炼,积累经验。
6.跨学科的实训
在实训环节上,除了让学生做一些大一点的题目,比如:C语言语法分析模拟器、BIOS模拟器、科学型计算等,同时安排C语言课题组的老师指导学生接受数据结构、JAVA、C++等其他课程的实训。
四、结论
从ACM/ICPC三年来的经验总结中,研究了ACM/ICPC模式的特点及对程序设计课程专业能力培养的作用,进行了基于ACM/ICPC的程序设计语言的教学与实践的改革。经过每年学校督导组的评价、学生的评教和2010年精品课程的验收等考核,证明了这种改革能够推动计算机程序设计基础课程群的建设,有助于培养学生的抽象思维、逻辑思维、心理素质、团队合作和协同能力。
参考文献:
[1]徐本柱,王浩,胡学钢.ACM/ICPC的教学与实践[J].合肥工业大学学报(社会科学版),2008,(6):133-137.
[2]杨松涛,王斌.从ACM/ICPC竞赛探讨大学生的能力培养[J].计算机教育,2010,(24):16-18.
[3]徐小青,李晓东.“高级语言程序设计”课程教学改革与实践[J].计算机教育,2009,(13):46-48.
[4]孙宣东,路璐,明俊峰.从ACM/ICPC看计算机算法设计教学改革[J].广东工业大学学报(社会科学版),2005,(9):228-227.
[5]武建华.基于ACM模式的数据结构实践教学改革与探索[J].计算机教育,2009,(13):114-116.
(责任编辑:刘辉)
注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文
相关热词搜索: 教学改革 实践 程序设计语言 ACM ICPC