APP下载

C语言程序设计课程教学中引入ACM/ICPC的探讨

2016-01-27赵磊焦铬

计算机时代 2016年1期
关键词:鉴赏课C语言

赵磊 焦铬

摘 要: 针对C语言程序设计教学中存在的问题,将ACM/ICPC竞赛引入到日常教学中。通过建立协作式学习模式,推行实验课趣味化、学习时间分散化,开展程序鉴赏和讨论,改革考核手段等方法来实施C语言程序设计课程的教学改革。这些方法在实际教学应用中取得了一定的成效。

关键词: C语言; ACM/ICPC; 协作式; 鉴赏课

中图分类号:TP312 文献标志码:A 文章编号:1006-8228(2016)01-66-03

Discussion on the introduction of ACM/ICPC in the teaching of C language programming

Zhao Lei1, Jiao Ge1,2

(1. Computer department of Hengyang Normal University, Hengyang, Hunan 421001, China;

2. College of Electrical and Information Engineering, Hunan Institute of Traffic Engineering)

Abstract: For the problems in the teaching of C language programming, the ACM/ICPC (ACM International Collegiate Programming Contest) is introduced into the daily teaching. Through the establishment of collaborative learning model, implementation of interesting experiment courses and learning time decentralization, carrying out the program appreciation and discussion, reforming assessment means, and other methods, the teaching reform of C language programming course is implemented. These methods have achieved certain results in the teaching practice.

Key words: C language; ACM/ICPC; collaboration; appreciation class

0 引言

长期以来,C语言程序设计是理科专业学生必修的一门课程[1],具有表达能力强,简洁紧凑、灵活方便,程序设计自由度大,生成目标代码质量高,程序执行效率高等特点。正是由于C语言的这些特点,它又是一门比较难掌握的课程。探讨如何提高这门课程的教学质量对提高学生的程序设计能力至关重要。

大学生竞赛是激励学生树立创造性思维、提高教育教学水平的一种有效途径。近年来,各高等院校积极鼓励学生参与各类学科竞赛,高度重视学科竞赛在教学改革中的应用,通过参与竞赛的学习模式,激发学生学习的主动学习意识,增强集体合作意识,促进创造性人才的培养。本文将ACM国际大学生程序设计竞赛(ACM International Collegiate Programming Contest,简称ACM/ICPC)引入到C语言教学中,探讨这种新的C语言程序设计课程教学模式。

1 ACM/ICPC简介

ACM国际大学生程序设计竞赛(ACM International Collegiate Programming Contest,简称ACM/ICPC)是全球规模最大,最有影响力的大学生程序设计竞赛。其目的在于使大学生运用计算机来充分展示自己分析问题和解决问题的能力。ACM/ICPC始于1970年,到2013年止已经举办了37届。这项国际顶级赛事是大学生智力与计算机解题能力的竞赛,是大学生展示水平与才华的大舞台,是全球高校计算机教育成果的直接体现。该项竞赛分为区域赛和世界总决赛,各大洲的区域赛安排在上一年的9月-12月进行,第一名自动获得参加世界决赛资格,世界总决赛安排在每年的3月-5月举行[2]。

ACM/ICPC要求以团队的形式参赛,每个队伍由3名队员组成。每队使用一台计算机,要求选手在全封闭的环境内(不能有任何通讯设备,可以携带任何纸质资料)连续5个小时对8-11个问题进行解答。竞赛采用英文命题,题目涉及面非常广。需要参赛学生具有扎实的基本功、良好的分析问题的能力、较好的团队协作能力和压力下编写程序的能力。该竞赛为学生提供了一个学习和使用程序设计语言和算法的完整实践模式,让学生以精通编程为荣,形成一个积极向上的学习氛围。

2 当前C语言程序设计教学存在的问题

2.1 教学模式陈旧,实验内容模板化

在当前的教学模式中,教师在教授学生的过程中往往觉得自己已经很卖力,学生在学习的过程中也花了很多精力,但学生学完之后往往只是把教师课堂上讲授的内容复制到自己的实验课中,并没有很好地理解程序并建立自己的编程思想,实验中学生仅仅是把老师理论课堂上讲授的程序代码通过键盘输入到电脑中运行,得到一个显示结果而已,所以实验基本上成了验证性的实验,很多学生并不能真正地设计程序,更不能结合课程来解决一些生活中的实际应用性问题。

2.2 课程考核模式单一,高分低能现象严重

C语言程序设计课程考核在很多学校还主要采用笔试为主的传统考核模式,考试内容往往是学生做过的类似题目,试卷成绩在总成绩中的比例为70%,平时成绩占学生的总成绩比例的30%。确实有很多高分学生,然而在这些高分学生中能够很好的建立编程思想,解决实际问题的学生却不多。这种考核模式不利于学生综合实践能力和创新能力的培养,最终形成“高分低能”的现象。

2.3 缺乏互助学习氛围,团队协作意识较差

当前软件项目开发都是以团队形式实施的,团队成员之间需要合理分工和无障碍沟通[3]。但是在C语言程序设计的课程教学中以项目组为单位来开展教学活动的机会非常少,更谈不上互助学习和协作。

2.4 实践教学改革力度不够

尽管近年很多大学的C语言程序设计课程的实践教学与以前相比有了一些改善,但仍存在很多不足。首先是没有形成一个有利于培养高素质创新型人才的培养体系;其次当前教育形式重于实质,在人才培养过程中没有从根本上进行教学方法和技术的改革;再次很多学校只重视理论教学和课堂教学,轻视实践环节,只强调从理论上对知识点的掌握,对程序的实现重视不够,造成有相当数量的学生C语言的程序实现和调试能力很差。

3 引入ACM/ICPC的教学改革

3.1 协作式学习模式

ACM/ICPC竞赛是以小组的形式参赛,小组由3名队员组成。比赛期间,小组成员共同使用一台电脑,要求小组成员必须在规定时间内解决制定的程序问题[4]。这种竞赛机制与协作式学习模式正好是一致的。在C语言教学中,教师可以把学生分成几个小组,共同分析教学内容,在短时间内完成适当难度的题目,最终通过相互帮助、协作,使得枯燥无味、难于分析的问题变得简单起来。在C语言教学中适当地利用这种学习模式,不仅可以大大改进解题效率,同时使得每个学生都有成就感,能够发挥所长,避之所短,利用各自的专业和特长,分工合作,集体讨论,根据不同的题型,由不同的人员负责分析、讨论和讲解,从而加快学习进度。这样的教学效果最终发展了学生的个人思维能力,增强了小组之间的沟通能力及对同伙差异的包容能力。

3.2 实验课趣味化,时间分散化

传统的程序设计类实验题目普遍比较枯燥,难以调动学生的学习兴趣和设计思路[5]。任课老师可以将实验题目生活化、趣味化,充分激发学生的学习主动性和积极性,将被动学习转化为主动学习。同时考虑到实验课时非常有限,可以使用ACM/ICPC的在线评测系统,学生注册后可以在任何时间登陆该系统进行选题、提交、评测和讨论等自主学习环节,将有限的课内练习时间延续到课外。

3.3 开展程序鉴赏课,讨论课堂

我们可以尝试设置程序鉴赏课,老师和同学均可搜集一些有特点且具有应用性的程序拿到课堂上鉴赏,通过经常性的程序鉴赏和讨论,能够开拓教师和学生的编程视野,提高学生的编程兴趣,只有提高兴趣,喜欢编写程序,才能写出好的程序。

3.4 改革考核手段

ACM/ICPC模式的重要特点之一是完善而严谨的考核机制,所以我们将ACM的考核方式借鉴到C语言课程的考核环节中,采用ACM/ICPC模式的黑箱测试,将学生在“在线评测系统”中获得的成绩以50%的权重加入到课程考核指标当中。这样,一方面减少了教师的工作量,降低了考核错误率,另一方面做到了客观、公正,更好地发掘学生的创新能力,提高学生对知识点的掌握程度。

4 结束语

通过引入ACM/ICPC竞赛到C语言程序设计的课堂教学中,可以培养学生的自主学习与协作学习能力,加强教师与学生、学生与学生之间的相互交流和沟通,激发学生的创造性思维,使学生更好地掌握C语言程序设计,提高了教学效果。从这几年学校督导组的评价和学生的评教看,证明了这种改革能够推动C语言程序设计课程的建设,有助于培养学生的逻辑思维、程序设计、团队合作和协同能力。

参考文献(References):

[1] 谭浩强.C语言设计(第三版)[M].清华大学出版社,2005.

[2] 吴文虎.世界大学生程序设计竞赛(ACM/ICPC)高级教程[M].

中国铁道出版社,2009.

[3] 杨松涛,王斌,张海燕.从ACM/ICPC竞赛探讨大学生的能力

培养[J].计算机教育,2010.24:16-18

[4] 徐本柱,王浩,胡学钢.ACM/ICPC的教学与实践[J].合肥工业

大学学报(社会科学版),2008.22(6):133-137

[5] 张熠,陈荣钦.以ACM为导向构建C语言实验教学新平台的

研究与实践[J].台州学院学报,2009.31(6):70-74

猜你喜欢

鉴赏课C语言
基于Visual Studio Code的C语言程序设计实践教学探索
基于C语言的计算机软件编程
C语言程序设计课程教学与学科专业相结合的探索
新课改如何上好高中音乐鉴赏课
新课标下中学音乐鉴赏课的改进与实践
课改新时期高中美术鉴赏有效教学策略研究
小学音乐鉴赏课之我见
高职高专院校C语言程序设计教学改革探索
论子函数在C语言数据格式输出中的应用
非计算机专业C语言教学探讨