• 收藏
  • 加入书签
添加成功
收藏成功
分享

基于ACM-ICPC竞赛的C语言课程教学改革现状和改进研究

林金珠 倪天伟
  
民族文汇
2023年28期
信阳学院 河南 信阳 464000

摘 要:针对当前基于ACM-ICPC竞赛的C语言课程教学改革现状,分析存在的问题,提出改进策略。即要依据竞赛题目与教材中C语言内容的区别,整合教学内容;根据学生的差异性实施分层次教学;构建基于ACM-ICPC竞赛的计算机专业人才培养模式;依托ACM-ICPC竞赛,共建C语言课程优质资源。通过改进研究,提升C语言课程的教学效果。

关键词:ACM-ICPC;C语言;课程改革;学科竞赛

C语言是计算机专业及相关专业的基础课程,在本科教学中占有重要地位。ACM国际大学生程序设计竞赛(ACM International Collegiate Programming Contest, ACM-ICPC)是由美国计算机协会(ACM)主办,旨在展示大学生创新能力、团队精神和在压力下编写程序、分析和解决问题能力的年度竞赛。经过近几十年的发展,ACM-ICPC已经发展成为全球最具影响力的大学生程序设计竞赛[1]。如何使C语言课程教学与该竞赛相结合,一直是研究的热点,基于此,本文重点论述了基于ACM-ICPC竞赛的C语言课程教学改革现状、存在问题及改进策略。

1基于ACM-ICPC竞赛的C语言课程教学改革现状

近年来,许多高校都将ACM-ICPC竞赛模式引入到C语言课程的教学环节中,改变课堂教学内容和方法,调整实验方式,突出阶段考核,极大地激发了学生的编程热情,培养了学生自主学习的能力,取得了很好的教学效果。有研究表示可以根据ACM-ICPC丰富的赛题对C语言理论和实践教学进行改革;以每个阶段的单元测试任务和综合考核任务来规划教学任务;算法分析、数据结构、C++等课程可以结合ACM-ICPC 竞赛模式进行一系列的教学改革实践[2,3,4]。

2 基于ACM-ICPC竞赛的C语言课程教学改革中存在的问题

2.1夸大C语言在ACM-ICPC竞赛中的作用

C语言是ACM-ICPC竞赛的语言载体之一,C语言中的输入输出、三大结构、数组、字符串、函数、递归、排序算法等知识直接应用在竞赛中,个别教师夸大C语言在竞赛中的作用,给学生了一种只要学好C语言就能轻松在竞赛中取得好成绩的错觉。其实只掌握C语言在竞赛中是远远不够的,ACM-ICPC大赛之所以受到认可,其原因在于大赛参与者在数学、数据结构、图论、逻辑思维、算法设计、编程实践,以及沟通、韧性、心理素质、团队合作和协同能力等专业能力和综合素质方面都较为优秀[5]。教师只有找准C语言在竞赛中的地位,客观合理地指导学生,才能让学生不当井底之蛙。

2.2忽略ACM—ICPC竞赛题目与教材中C语言的区别

结合竞赛对C语言教学内容进行改革时,由于部分授课教师没有一线的参赛经验,也没有对参赛内容进行深入的研究,以致忽视了谭浩强第五版的《C语言程序设计》中的内容与竞赛中语法的区别。如在竞赛中,输入前不要打印提示信息,输出完毕后应立即终止程序,不要等待用户按键,因为输入输出过程都是自动的,没有人工干预;在竞赛中,常常难以精确计算出需要的数组需求大小,数组一般会声明得稍大一些,在空间够用的前提下,浪费一点不会有太大影响;竞赛者千万不要滥用指针,有时程序会出现奇怪的错误,把自已弄糊涂等,这些都需要教师在实践中引导学生多甄别,多比较。

2.3 C语言课程教学改革中不尊重学生的差异

2.3.1忽视大一新生的入学基础不同

有的大一学生在学习C语言课程前,高中阶段已经完整地学习过“VB程序设计”、“信息技术基础”等课程,但也有少部分大一新生不会计算机基本操作;同时,大一新生在入学前数学、英语、综合素质也存在较大差异。部分教师在基于ACM—ICPC竞赛的C语言课程教学改革中,对学生个体差异关注不够,教学过程没有层次区别,导致学生丧失学习的积极性与主动性。

2.3.2忽视不同专业学生学习C语言的差异

常有一线教师反映,在教授理、工科专业的学生时,大部分学生领悟C语言理论知识,特别是上机实践表现较为出色,期末成绩高分也比较多;但在教授文科专业的学生时,普遍感觉部分学生的举一反三能力、编程实践能力都有所欠缺,对C语言语法知识偏重记忆的比较多。虽然来自同样的授课老师,同样的辅导员管理,但专业之间的差别还是比较大。在改革时,要避免简单套用,要尊重到不同专业学生的差别。

2.3.3忽视不同类型学校学生学习C语言的差异

不同类型学校的学生,在学习C语言这门课程时,其学习动机、学习能力、学习效果也有明显的差别。在进行基于ACM-ICPC竞赛的C语言课程教学改革时不能一刀切,不能不顾及不同学校的实际情况,一厢情愿地把高难度的ACM-ICPC竞赛内容强压给起点低的学校学生,或者是题目难度达不到学生的训练水平,这两种极端都会给改革带来致命的隐患。

2.4基于ACM-ICPC竞赛人才培养体系欠缺

基于ACM-ICPC竞赛的C语言课程教学改革存在重申请,轻建设;重理论,轻实践;重单门课程建设,轻课程群构造;重大三、大四学生参赛,看轻大一、大二学生培养;专业教师、指导老师关注较多,其他部门关注较少等问题。所以带来了教师的课程改革结项了,研究也截止了;学生学完C语言经过期末考试后,因为没有得到持续的锻炼很快忘掉了C语言知识,更没有能力投入到后期的ACM-ICPC竞赛中。如果构造一个围绕ACM-ICPC竞赛的课程体系,使不同的影响因素参入,使学生循序渐进的提高编程能力,不但可以使C语言课程的改革取得成效,也能使ACM-ICPC竞赛取得优秀的成绩。

3 基于ACM-ICPC竞赛的C语言课程教学的改进策略

3.1依据竞赛题目与教材中C语言内容的区别,整合教学内容

指导老师、授课教师、参赛团队成员以竞赛为背景,将C语言的知识点与竞赛的问题紧密联系在一起,这些涵盖竞赛的主要知识点,又融入大量比赛技巧和解题经验教训,合理地分布到C语言各章的课前预习、课中讲解、课后巩固习题中,这些习题分基础篇、竞赛篇、综合篇,循序渐进,适合不同层次的学生学习,如图1所示。以ACM-ICPC竞赛为依托,

在选择相关的案例和题目时,要根据学生的层次水平选择难度合适,稍当改造的题目,教学内容还要兼顾ACM-ICPC赛题的特点,如在算法的选择上要注意时间复杂度和空间复杂度等实际比赛的问题,同时讲解这些案例要强化语法点纵向分析和横向比较。

3.2根据学生个体差异实施分层次教学

教师根据调查问卷、课堂观察、作业情况、辅导员访谈等分辨出学习C语言课程有困难的学生。对动手能力较差的学生,多申请机房免费让他们练习;对C语言理论知识理解不透彻的学生,可以通过线上线下混合式教学模式提升;对基础知识(如数学、计算机基础、英语)欠缺的学生,督促和网上课程同步学习;对ACM-ICPC大赛不了解、有畏难情绪的学生,教师要在课堂上多介绍竞赛知识,还可以请大三、大四有经验的参赛成员来班级交流经验。

非计算机专业的学生在学习C语言时,不可生搬硬套计算机专业的那一套方法。如果教师在学生还没有学习兴趣和对学习内容完全不了解的情况下,在第一堂课就大肆宣传竞赛内容,学生只会反感;如果学生连基础的C语言语法知识都理解不透和上机实践都疲于应对时,强行介入没有进行甄别的竞赛题目,效果只会低微。教师引入ACM-ICPC竞赛题目时,要选择与他们专业相关、趣味性强、难易合适、阶梯性明显的题目,这样才会引起学生的学习兴趣。同时征对基础扎实、编程思维灵活、创新能力强,有韧性能坚持的学生,教师要积极引导他们加入到ACM-ICPC竞赛团队中进行专业训练。

3.3构建基于ACM-ICPC竞赛的计算机专业人才培养模式

3.3.1 以ACM-ICPC竞赛为主线,构建专业课群

为了解决ACM-ICPC竞赛内容的继层和改变只有一门专业基础课“C语言程序设计”横向改革的模式,加深递进课程之间的纵向关联,实现知识点的串联,引导学生逐步形成“模型抽象—数据结构—算法设计—编程实现—复杂性分析—持续改进”的计算思维,努力构建以“高等数学”、“线性代数”、“离散数学”、“概率论和数理统计”、“C语言程序设计”、“数据结构”和“算法分析与设计”7门课程为主体专业课群,把解决复杂问题的能力培养贯穿于计算机专业四年的培养过程中。加强专业课教师和专业基础课教师的互动交流,形成梯队式发展,教师大一教授 “C语言程序设计”和“高等数学”两门课时,就告知它们对ACM-ICPC竞赛起到的支撑和基础作用,同时也会影响后续两门专业课“数据结构”和“算法分析与设计”课程的学习。

3.3.2打造ACM-ICPC竞赛分阶段、分学期的实践流程

第一阶段(第1-2学期),利用入学教育帮助学生了解ACM-ICPC竞赛团体,如竞赛对就业、考研的作用、比赛内容、比赛形式、加入团队的要求等总结成小册子发给大一新生;同时展出历年所得的奖项,特别是展示大四刚毕业团队成员的比赛总结日志和大二学生一年来的学习反思日志,可以直观地帮助新生了解比赛内容。任课教师在讲授C语言时如果发现有才能和天分的大一新生,要积极主动地向负责大赛的指导老师推荐,直接让大一新生加入到ACM-ICPC比赛的核心组织,在实验室里深入学习C语言知识。如果班级里参赛的学生比较多,会直接带动同班同学学习C语言的积极性,提高教师授课质量。

第二阶段(第3-6学期),针对二、三年级每年开展学院、学校两级组织的ACM-ICPC竞赛,通过初选、季度赛和决赛等多种形式挑选预备队伍。ACM-ICPC竞赛团队可以申请专业教师利用周末、寒、暑假在实训中心对学生进行C语言高阶知识、数据结构、图论和离散数学等专题培训。实践表明,能进入该团队的学生熟练掌握C语言程度明显比没有进入团队的学生高,一次性通过全国计算机等级考试(二级C语言程序设计)的几率大,在考研中“C语言程序设计”和“数据结构”这两门核心专业课高分比较多。

第三阶段(第7-8学期),ACM-ICPC竞赛是一项具有相当难度的赛事, 并不是所有的同学都可以通过努力获得认可,征对退役不再参赛的学生,可以指导他们在项目开发、互联网+创新创业大赛等方向继续发展。对有丰富竞赛经验和管理团队的学生,引导他们编写比赛心得和赛题汇总题库、举办讲座和座谈会,把宝贵的一线经验进行宣传和继承。

3.4 依托ACM-ICPC竞赛,共建C语言课程优质资源

虽然现行中有很多的ACM刷题网站,但是这些网站内容没有章节、分类、汉语解析、视频解析,作为初学者学习这些内容很容易有畏难情绪。这就需要指导老师、专业老师、参赛学生协同共建与ACM-ICPC竞赛融合的“C语言程序设计”教学大纲、知识图谱、参赛辅助自学视频、分章节习题、教学案例、分层次编制的实验项目、综合实训项目等教学资源,形成优质共享的教学资源库。这些优秀的教学资源库可以存放在已构建好的本校竞赛平台网站上,该平台还提供竞赛宣传、竞赛介绍、所获荣誉、指导老师、团队介绍和其他专业课的资料。

4 结束语

“C语言程序设计”课程和ACM—ICPC竞赛的充分结合,能激发学生学习兴趣,培养编程思维和提高学生解题能力。但在具体的实施过程中也要看到盲目套用带来的问题,只有在实践应用中一切从实际出发,正视问题,结合本校特色和学生特点找准突破口,就可以提高“C语言程序设计”课程教学质量和ACM-ICPC比赛的成绩双赢的效果。

参考文献

[1]林金珠,倪天伟.基于ACM-ICPC竞赛的C语言课程教学实践[J].安庆师范大学学报(自然科学版),2017,23(01):102-104+119.

[2]韩丽霞,毕方明.基于ACM-ICPC模式的《算法设计与分析》课程改革与实践[J].现代计算机(专业版),2019(03):78-80.

[3]梁兴柱,周华平,林玉娥.基于ACM-ICPC竞赛模式的数据结构实践教学改革研究[J].电脑知识与技术,2018,14(23):154-155.

作者简介:林金珠(1981-),女,河南信阳人,硕士研究生,副教授,研究方向:计算机应用技术、高等教育。

基金项目:河南省2022年专创融合特色示范课程“C语言程序设计”;河南省教育科学规划2023年度一般课题(2023YB0346);信阳学院2022年教学改革研究与实践项目“基于ACM-ICPC的C程序设计课程教学改革与实践”(2022YJG013)。

*本文暂不支持打印功能

monitor