彭冰 尤枫 李芳

摘 要:高校教师将ACM竞赛模式与训练方法引入C语言程序设计课程教学,能够创设良好的教学情境,激发学生对C语言程序设计课程的学习兴趣,提高学生的学习积极性与主动性,实现ACM比赛训练与C语言教学的相互促进。文章主要分析高校C语言课程教学遇到的问题,并对基于ACM竞赛模式的高校C语言实践教学方法进行探讨。

关键词:ACM竞赛;C语言程序设计课程;实践教学;教学模式;教学策略

中图分类号:G642 文献标志码:A文章编号:1008-3561(2021)25-0030-02

C语言是许多高校学生学习的第一门编程语言,是计算机专业一门重要的专业基础课,能为丰富学生的计算机编程知识、提高学生的计算机编程能力奠定坚实的基础。当前,高校C语言程序设计课程教学遇到一些问题,影响课程教学效率和教学质量的提高。ACM国际大学生程序设计竞赛在全球具有重大影响力,受到很多高校的重视。研究发现,高校教师将ACM竞赛模式与训练方法引入C语言课程教学,能够创设良好的教学情境,激发学生的学习兴趣,提高学生的学习积极性与主动性,实现ACM比赛训练与C语言教学的相互促进,从而取得较好的教学效果。下面主要分析高校C语言课程教学遇到的问题,并从几个方面对基于ACM竞赛模式的高校C语言实践教学方法改进进行探讨。

一、ACM竞赛概述

ACM竞赛一般指ACM国际大学生程序设计竞赛(简称ACM-ICPC),是由国际计算机协会(Association for Computing Machinery,简称ACM)主办的一项年度竞赛,竞赛着眼于展示大学生创新能力、团队精神和在压力下编写程序、分析和解决问题能力。ACM国际大学生程序设计竞赛是全球最具影响力的大学生程序设计竞赛,深受计算机行业的重视。其赛制具有特殊性,即要求参赛者以三名队员组成的团队形式代表学校参赛,每队使用一台电脑,需要在五个小时内使用C、C++、Java、Pascal中的一种编写程序解决六个到十个问题。ACM竞赛非常考验参赛者的能力与素质,需要参赛者具有较高的计算机专业水平、良好的团队协作意识和心理素质。因为ACM-ICPC在计算机领域的重要影响力,每届赛事的获奖选手受到各大知名软件公司的青睐。

二、高校C语言课程教学遇到的问题

其一,部分教师往往将上机实践作为理论课的补充和辅助,未能实现两者的有机结合。其二,部分教师侧重学生对语法的掌握,忽视算法知识的积累和实际应用开发训练,不注重培养学生解决实际问题的能力,导致部分学生思维固化,面对问题时不能举一反三,难以灵活地运用所学知识解决实际问题。其三,计算机专业学生水平存在差异性,教师未能进行分层教学。一部分学生已经掌握基础知识,需要的是拔高练习,而另一部分学生初次接触C语言,接受知识的速度较慢,需要教师循序渐进地进行讲解。其四,部分学生自学能力较差,遇到问题不善于独立思考。调查发现,一些问题往往是拼写错误,学生只要认真检查就能发现,但部分学生自学能力较差,需要教师经常当面指导。这浪费指导教师大量时间,导致真正需要帮助的学生得不到及时帮助,而出现拼写错误的学生也将宝贵的练习时间用来查找低级错误。其五,教师提供的练习题没有参考答案,导致学生难以分析错题或难题的解题思路,练习效果大打折扣。

三、基于ACM竞赛模式的高校C语言实践教学策略

ACM竞赛模式为C语言实践教学提供了参考,能够有效提高课程教学效率和教学质量。作为高校计算机专业教师,要认真分析ACM竞赛模式的特点与C语言课程内容,结合学生学习特点精心设计实践训练模式,引导学生通过有效的方法完成相应的实践任务,最后对学生的实践任务进行评价,让学生知道自己的优势与不足,逐步提高计算机应用能力。

1.定期发布训练试题

教师可以模仿ACM比赛机制,定期发布训练试题,并按照累计完成数进行排名。题目来源于各类教学参考书以及实际问题的改编,注重对学生C语言知识掌握情况进行考查。设计训练试题时,要注意以下三个方面。一要充分考虑班级学生编程水平的差异,设置不同难度的习题,引导学生在夯实基础的前提下进行提高训练。二是针对初学者对C语言语法知识无法快速消化的现象,教师需要在每次开始练习前反复强调,让学生尽快熟悉基本的语法知识。三是布置的练习题应与ACM竞赛题目格式一致,并且与实际应用相联系,对于输入输出样式和数据范围要有明确要求。

2.定期组织比赛并在赛后发布题解

教师要参考ACM比赛的训练模式,定期组织学生进行比赛,并在赛后发布题解。教师每年可以以新生赛的方式,从大一新生中选拔参赛队员。这可以提高ACM赛事在学生中的知名度,吸引优秀学生参加,激发学生对C语言的学习兴趣。所提供的题解要附上简要注释,帮助学生理解解题思路,同时鼓励学生寻找更简单有效的方法。系统统计的答题情况表明,学生在第二次实践课后小测满分率为75%,到第四次实践课后小测满分率达到82%。

3.引导学生进行赛后反思并解决遇到的问题

教师在比赛之后要引导学生进行赛后反思,通过独立思考、查阅网络资料、群内讨论的方法解决比赛过程中遇到的问题,这对于提高学生的实际能力非常重要。学生在解题过程中遇到的问题主要分为两类,一类是编译出错,一类是运行结果错误。前者主要是拼写错误等简单错误,教师可提醒学生查看编译器的编译错误提示。学生应认识基本的错误提示类型,对于不常见的编译报错提示,学生可自行上网搜索错误原因。而对于运行结果错误,教师可提醒学生通过查阅网络资料或群内讨论的方法加以解决。

四、结语

ACM程序设计竞赛的实践教学与C语言程序设计基础课的日常教学,虽然都是以提高学生C语言程序设计能力为目标,但因为面向对象和评价方式的不同,逐渐产生了较大的差异。C语言程序设计是计算机专业一门重要的专业基础课,具有较强的实用性,能够丰富学生的计算机编程知识,提高学生的计算机编程能力。针对当前高校C语言程序设计课程教学遇到的问题,高校教师可以从ACM程序设计竞赛中汲取先进经验,将ACM竞赛模式与训练方法引入C语言课堂教学,创设良好的教学情境,激发学生对C语言程序设计的学习兴趣,实现ACM比赛训练与C语言教学的相互促进,从而提高C语言程序设计课程教学效率和教学质量。在设计学习模式和考核评价机制时,要让学生把知识学习与实践练习紧密结合起来,引导学生主动思考,提高学生对C语言程序设计的学习积极性与主动性,培养学生的编程思维能力与团队合作能力。