C语言程序设计基础课程教赛融合教学方法研究
来源:用户上传
作者:
摘 要:针对《C语言程序设计基础》课程教学中存在的入门困难、枯燥、实验教学效果不佳以及不及格率过高等问题,结合ACM国际大学生程序设计竞赛(ACM-ICPC)开展经验,提出一种教赛融合的创新教学方法。方法以ACM在线评测系统(OJ)为核心,采用竞赛模式开展实验教学。对武汉工程大学计算机科学与工程学院近3年该课程实际教学工作进行总结和数据分析发现:2018年应用教赛融合教学方法后,90分以上学生人数较2016年提高了一倍,平均分从66.2分提高到80.14分,不及格率从20%减少到3.57%,最低分从33分提高到53分。结果表明,引入竞赛机制和OJ系统,极大地激发了学生编程热情,有效抑制了不及格率和最低分。
关键词:ACM国际大学生程序设计竞赛;教赛融合;在线评测系统
DOI:10. 11907/rjdk. 191147
中圖分类号:G433 文献标识码:A 文章编号:1672-7800(2019)004-0206-04
0 引言
《C语言程序设计基础》是计算机类专业核心课程,作为学习编程的第一门课程,对激发学生编程热情、培养学生逻辑思维能力具有重要意义[1-3]。一线教师长期教学经验表明,该课程教学质量直接影响后续计算机专业课程学习,甚至决定了学生的职业发展[4]。然而,该课程教学存在诸多困难[5-8]。首先,学生计算机基础不足以及不均衡问题给课程教学带来了挑战。该课程是学生进入大学后接触的第一门编程课程,学生计算机基础较为薄弱,特别是一些教育资源欠发达地区,学生在进入大学以前甚至没使用过计算机。其次,学习程序设计的关键是逻辑思维能力。新生由于没有接受过系统训练,存在上机编程入门困难问题。第三,计算机语言学习与自然语言学习存在较大差异,其侧重点是对知识的理解、应用和问题解决能力。为此,其要求学生能够做到课堂理论知识与上机实验环节有机融合[9]。第四,计算机语言学习过程相对于自然语言更加枯燥、乏味,如何在教学过程中激发学生学习热情是一个难点问题。
针对上述问题,研究人员从教师队伍建设、教材建设和实验环节等方面开展了大量研究工作。高伟等[10]提出了C语言程序设计课程一体化教学模式,利用计算机技术和网络技术搭建B/S结构辅助教学平台,采用相似度匹配技术进行成绩评判;肖潇等[11]提出运用构建主义理论淡化语法规则,科学安排教学内容的层次结构及算法实例,结合在线裁判系统提高理论授课效果,强化学生的实践编程能力;白鱼秀[12]提出以“学生成绩管理系统”为主线的案例教学法,并给出了实际教学内容、教学方法、教学手段和考核方式;边倩等[13]提出基于慕课的“C语言程序设计”课程翻转课堂教学模式。上述教学方法主要通过教学模式改革提升学习乐趣,吸引学生注意力,改善教学效果,同时通过采用计算机网络技术及在线裁判系统提高教师教学效率。
与已有工作不同,本文结合ACM国际大学生程序设计竞赛开展经验,提出一种教赛融合的创新教学方法[14]。以ACM在线评测系统(Online Judge,OJ)为核心,在实验教学环节引入竞赛机制,可提高学生编程热情和压力情况下解决编程问题的能力。该方法一方面可提升《C语言程序设计基础》课程教学质量,另一方面可使学生适应ACM国际大学生程序设计竞赛编程环境,促进竞赛人才培养。
1 ACM国际大学生程序设计竞赛
ACM国际大学生程序设计竞赛(ACM International Collegiate Programming Contest,简称ACM-ICPC或ICPC)是由国际计算机协会(ACM)主办的一项旨在展示大学生创新能力、团队精神、在压力下编写程序、分析和解决问题能力的年度竞赛。经过近40年发展,ACM国际大学生程序设计竞赛已经发展成为全球最具影响力的大学生程序设计竞赛[15-21]。
ACM-ICPC以团队形式代表各学校参赛,每队由至多3名队员组成。每位队员必须是在校学生,有一定年龄限制,并且每年最多可以参加2站区域选拔赛。比赛期间,每队使用1台电脑,需要在5小时内使用C/C++、Java和Python中的一种程序解决7~13个问题。程序完成之后提交裁判运行,运行结果会判定为正确或错误两种并及时通知参赛队。有趣的是,每队在正确完成一题后,组织者将在其位置上升起一只代表该题颜色的气球,第一支解决掉每道题目的队还会额外获得一个“FIRST PROBLEM SOLVED”气球。最后获胜者为正确解答题目最多且总用时最少的队伍。每道试题用时将从竞赛开始到试题解答被判定为正确为止,其间每一次提交运行结果被判错误将被加罚20分钟时间,未正确解答的试题不计时。
与其它计算机程序竞赛(例如国际信息学奥林匹克、IOI)相比,ACM-ICPC的特点在于题量大,每队需要在5小时内完成7道或以上题目。另外,一支队伍3名队员却只有1台电脑,使时间显得更为紧张。因此,除了扎实的专业功底,良好的团队协作和心理素质同样是获胜关键。
武汉工程大学于2016年组建了ACM协会,在全校范围内组织开展ACM国际大学生程序设计竞赛。经过几年时间探索和发展,已经形成了稳定的团队结构、系统的新生培养机制及ACM校队训练策略,包括:高年级向低年级授课的知识传承方式、以赛代练的训练策略和“同做一道题,群讲一道题”等。虽然,ACM协会目前尚未在实际比赛中获得奖项,但是协会成员编程水平获得了明显提升。2016年ACM协会没有获得网络赛晋级名额,2017年获得1项网络赛晋级名额,2018年获得3项网络赛晋级名额,预期2019年将会获得更加优异的成绩。ACM-ICPC竞赛经验表明,竞赛能够激发学生编程热情,极大提高学生解决问题的能力。
2 ACM在线评测系统
ACM在线评测系统(OJ)一般为采用B/S架构进行设计的程序设计自动判题系统[10,20]。其主要功能有:①用户管理,具有用户账户注册及管理功能;②权限管理,能够管理和控制用户权限;③题库管理,包括上传题目、删除题目、查找题目、修改题目和查看题目等;④竞赛管理,可发起竞赛、编辑竞赛信息、删除竞赛信息和查看竞赛信息;⑤在线答题,可在线提交代码;⑥榜单管理,可查看用户榜单;⑦自动判题,可对用户提交的代码进行自动编译,根据竞赛题目预设的测试用例进行自动判题并给出结果;⑧智能查重,可对用户提交的代码进行智能查重,智能查重功能可检索更改变量名称等代码相似度内容;⑨主页管理,可为用户生成个人主页,显示用户竞赛答题情况的各项统计数据,包括答题数量和成功解题数量等。 3 基于OJ系统的课程实验教学方法
实验教学是《C语言程序设计基础》课程教学的关键内容,是培养学生动手能力和逻辑思维能力的主要形式。在学时数上,实验教学与课堂理论授课通常各占一半。尽管课程实验教学的学时数已经提高到与课堂理论授课相同水平,但是随着课程整体学时的压缩,实验教学的学时与实际教学需求仍有较大差距。此外,传统教师在机房答疑的实验教学指导方式存在以下不足:①当班级人数较多时,教师很难做到一对一上机辅导,学生困惑不能及时得到解决,使学生上机积极性受到影响;②有些比较内向的学生碰到问题时不愿意主动与老师交流,当其上机问题长期得不到解决时自信心会受到打击,实践能力无法得到提升;③自觉性和基础较差的学生对上机实验积极性较低,存在上课玩手机、睡觉或者思想开小差的情况,而传统实验教学方法不能充分激发学生的编程热情和兴趣;④为了完成上机任务,学生可能会在完全不思考的情况下复制网络上的代码,导致编程水平无法跟上节奏;⑤传统实验教学方法中教师无法准确掌握每个学生的学习情况,无法做到因材施教以及在有限时间内进行精准指导。
针对上述问题,结合ACM国际大学生程序设计竞赛指导经验,提出基于OJ系统的课程实验教学方法,通过将竞赛元素融入教学中激发学生学习编程的兴趣。基于OJ系统的《C语言程序设计基础》课程实验教学方法主要有以下3方面关键内容:
(1)采用OJ系统安排上机作业。OJ系统为面向ACM国际大学生程序设计竞赛的系统,没有专用的上机作业管理模块,当前采用方法为利用其竞赛管理模块上传上机作业,通过OJ系统管理后台“添加竞赛”功能可发起一次程序设计竞赛。OJ系统中的程序设计竞赛包含以下主要信息:①竞赛名称;②竞赛持续时间,超时后竞赛链接自动关闭,停止答题;③允许答题采用的编程语言,系统支持当前大多数主流编程语言,包括C/C++、Python和Java等;④競赛权限,开放权限或者需要进行密码验证;⑤竞赛描述信息;⑥竞赛题目列表。图 1为武汉工程大学计算机学院2018级计算机9班和10班“循环结构”章节上机作业情况,总共包含15道与循环结构相关的编程题。学生通过注册账号登录系统后,输入作业密码即可开始答题,在线提交代码并获得自动判题结果。
(2)根据OJ系统排名计算课程实验环节分数。武汉工程大学ACM协会开发的OJ系统能够实时显示竞赛榜单及学生提交代码情况。通过该榜单,教师可及时了解每个学生上机的情况,包括解题数量、代码提交次数和用时情况等。此外,教师还能知晓最先解题的学生及时间、出错最多的题目等统计数据。根据上述信息,教师能够有针对性地对特定题目、特定学生进行精准辅导。从学生角度来看,实时榜单能够增加竞赛的紧张气氛,激发学生的竞争意识,培养学生在压力情况下解决问题的能力。此外,通过对竞赛历史记录总结,学生能了解自己知识体系的薄弱环节以及与同学的差距,利于有针对性地巩固知识,查漏补缺。除此之外,为了进一步激发学生的编程热情,提出利用OJ系统榜单排名计算课程实验教学环节分数。一方面可使学生对OJ系统上机更加重视,另一方面可使实验教学环节评价更加客观且极大减轻教师工作量。
(3)对学生提交的代码进行查重。为了完成上机作业,学生拷贝网络代码或者其他同学代码的事件时有发生。一方面影响了实验教学环节评价的公正性,另一方面,长期不求甚解的抄袭会加剧学生的依赖心理,最终导致其在编程学习中掉队。OJ系统能够对竞赛提交的代码进行查重,智能地比较任意两份代码之间的相似度。基于该功能对学生上机作业进行检查,可有效遏制代码抄袭行为,端正其学习态度。
综上所述,基于OJ系统的实验教学方法是互联网技术和信息技术在教学中的重要应用与实践,与传统实验教学方法相比,具有以下优点:①教师可在线安排上机作业,学生可在线答题,课程实验教学更加便捷;②学生通过OJ系统能与同学同台竞技,竞赛机制能激发学生编程的兴趣;③自动判题功能可减少教师工作量;④智能查重功能可遏制学生代码抄袭行为,使教学评价更加公正;⑤学生通过OJ系统历史记录可了解自己的学习情况,分析个人知识体系的薄弱环节,从而有针对性地加强练习;⑥教师通过OJ系统实时榜单可准确了解学生的上机情况,及时发现掉队学生和难点问题,达到在有限课程时间内进行精准辅导的目的。
4 教赛融合指导下课程教学结果与讨论
2018-2019年度第一学期,以武汉工程大学计算机学院2018级计算机9班和10班为研究对象,在教赛融合思想指导下,开展了《C语言程序设计基础I》课程教学。结合该课程过去两年某班教学情况进行对比分析,分析结果如表 1所示。表 1给出了连续3年《C语言程序设计基础I》教学结果,包括各分数段分数分布情况、及格率、最高分、最低分和平均分。通过对比可以发现:①2018年应用教赛融合的教学方法后,取得高分(>90分)的人数比例比2016年增加了一倍;②虽然2018年教学结果中高分人数没有2017年多,但是2018年取得中等成绩(70-89分)的学生比例为82.14%,远远高于2017年和2016年。事实上,根据统计规律,中等成绩比例更能准确反映出班级整体水平;③应用教赛融合的教学方法后,2018年不及格率降低到3.57%(2016年20%、2017年10.34%),而且最低分明显高于前两年的33分和32分,说明教赛融合教学方法能极大激发学生学习编程的兴趣,有效抑制极低分和厌学情绪产生;④2018年平均分达到80.14,远超2016年的66.2和2017年的75.79,说明教赛融合的教学方法能有效促进《C语言程序设计基础》课程教学;⑤通过对学生答卷的分析,2018年学生能取得优异成绩的主要原因是编程题得分较高,说明教赛融合教学方法对于课程实验教学具有重要作用。
5 结语
本文针对《C语言程序设计基础》课程教学特点和难点问题,结合ACM-ICPC竞赛指导经验,提出一种教赛融合的课程教学方法。该方法以OJ系统为核心,通过竞赛机制引入实现对课程实验教学的改革。本文从采用OJ系统安排上机作业、根据OJ系统排名计算课程实验环节分数和对学生提交的代码进行查重3个方面对实验教学改革方法进行了详细论述。 为了验证教赛融合思想指导下课程教学效果,以武汉工程大学计算机学院2018级新生作为试验对象,结合近3年课程教学情况进行了对比分析。结果表明,一方面,基于教赛融合的课程教学方法能极大激发学生学习编程的兴趣,有效提高了学生上机实践能力和班级整体课程成绩;班级平均分达到了80.14分,70分以上学生人数占比89.28%;课程成绩分布更加合理,不及格率和极低分问题得到了有效缓解。另一方面,竞赛机制引入锻炼了学生在有压力情况下解决编程问题的能力。随着教赛融合教学方法不断完善和深入,学生课程成绩提升和ACM-ICPC竞赛获奖情况能取得更大突破。
参考文献:
[1] 杨锋英. 程序设计基础课程教学探索[J]. 计算机教育,2013(4): 25-29.
[2] 谢竞博. C语言程序设计教学中的问题及改革建议[J]. 重庆邮电大学学报:社会科学版,2008,20(2):137-140.
[3] 吴文虎. 计算机程序设计基础课程改革[J]. 中国大学教学,2004(2):14-15.
[4] TANG Y T. To develop the students' creativity in the lecture of C programming [C]. Wuhan:International Workshop on Education Technology & Computer Science, 2009.
[5] BERLIN D,BENNEDSEN J. What do teachers teach in introductory programming[C]. International Workshop on Computing Education Research,2006:17.
[6] 吴玫,王海晖,李伟波,等. 面向混合学习的Java课程教学设计——以武汉工程大学为例[J]. 软件导刊,2018,17(4):220-221+226.
[7] 吴玫,王海晖,张俊,等. IT英语课程混合学习教学方法研究[J]. 软件导刊·教育技术,2017,16(10): 64-65.
[8] 吴玫. 基于卓越工程师培养的“Java平台与应用开发”课程改革研究[J]. 计算机时代,2017(9):69-71.
[9] 刘军,王海晖. 创新型信息技术工程人才培养的探索研究[J]. 中小企业管理与科技:上旬刊, 2012 (12): 261-262.
[10] 高伟,张国印,黄宏涛. C语言程序设计课程建设研究与实践[J]. 计算机教育,2010 (16):79-82+86.
[11] 肖潇,贺细平. C语言程序设计教学探索[J]. 计算机教育,2011 (5):65-68.
[12] 白鱼秀. “C语言程序设计”课程案例教学法研究[J]. 微型电脑应用,2018,34(3):55-57.
[13] 边倩,王振铎. 基于慕课的“C语言程序设计”课程翻转课堂教学模式的探索研究[J]. 微型电脑应用,2018,34(3):35-37.
[14] 郭一清. 赛教融合,以赛促教——以数控专业为例[J]. 教师,2013(8): 88-89.
[15] 何莉辉,梁沧. 基于ACM国际大学生程序设计竞赛的学习模式[J]. 边疆经济与文化,2008(6): 95-96.
[16] 于永生,张佳新. 基于Web的ACM国际大学生程序设计竞赛教学系统开发[J]. 东华大学学报:自然科学版,2001,27(4): 93-96.
[17] 田贤忠,刘楠,孙国道,等. ACM国际大学生程序设计竞赛学习模式探讨[J]. 高教与经济,2009(4): 46-49.
[18] 陈志,李梦泽,马嫣,等. 基于ACM程序设计竞赛的常规教学改革[J]. 电气电子教学学报,2011,33(6):18-20.
[19] LUO Y,WANG X, ZHANG Z. Programming grid: a computer-aided education system for programming courses based on online judge [C]. Beijing:ACM Summit on Computing Education in China,2008.
[20] WANG G P,CHEN S Y,YANG X,et al. OJPOT:online judge & practice oriented teaching idea in programming courses [J]. European Journal of Engineering Education,2016, 41(3):16.
[21] 林金珠,倪天偉. 基于ACM-ICPC竞赛的C语言课程教学实践[J]. 安庆师范大学学报:自然科学版,2017,23(1):102-104.
(责任编辑:何 丽)
转载注明来源:https://www.xzbu.com/8/view-14803756.htm