APP下载

基于学科竞赛的《C语言程序设计》课程教学改革研究

2018-03-06邱丽

黑龙江教育·理论与实践 2018年11期
关键词:C语言程序设计学科竞赛课程改革

邱丽

摘要:学科竞赛注重实践,可以检验学生运用学科知识解决实际问题的能力,考察学生的学科综合素质。为了帮助学生提升C语言的应用能力,有必要针对《C语言程序设计》课程的教学现状和课程特点,对学生综合能力的全方位考核,以提高学生的专业知识应用能力和就业能力。文章以 C 语言程序设计课程为例,对课程现状和竞赛特点展开分析,探讨基于学科竞赛的《C语言程序设计》课程教学模式,从课程设置、教学内容,考核方式等多个方面提出了具体的课程改革方案。

关键词:学科竞赛;C语言程序设计;教学改革;课程改革

C语言程序设计属于实践性很强的理工类计算机课程,学习该课程需要学生具备较强的逻辑思维能力、团队合作能力、实践操作能力。作为各高等院校计算机类的实践应用型课程,C 语言程序设计课程是学生学习其他计算机课程的基础。课程中涉及的算法设计、程序编写以及程序调试等程序开发过程有助于培养学生的逻辑思维。然而该课程内容非常抽象,知识点繁杂,学生学习过程中会遇到很多问题,学习难度较大。

而常规教学模式下,教师以程序语法、基础概念的讲解为主,学生处于被动学习状态,往往机械地记忆知识。这种重理论、轻实践的教学模式很难激发学生的学习热情,教师教起来也很累,久而久之,学生丧失了对C语言的兴趣,这样一来,其他计算机类课程的学习将受到很大影响,不利于培养学生的计算机综合能力。

学科竞赛是对学生学科综合能力的全方位考验,注重考查学生运用理论知识解决实际问题的意识和能力,可以有效激发学生学习热情,提高学生的学习积极性。因此,学科竞赛受到各大高校的高度重视,学科竞赛活动的内容、级别、类型也在持续丰富,参与的学生越来越多,递交的竞赛作品整体质量也在持续提高。因此,基于学科竞赛实施《C语言程序涉及》课程的教学改革,将学科竞与课程教学有机融合,能够有效推动课程改革,提高课程教学质量。

一、基于学科竞赛优化教学内容

现行的《C语言程序设计》课程内容陈旧,尤其是练习题目趣味性不足,而学科竞赛的内容具有很强的趣味性、实践性,可以有效激发学生的学习兴趣,促使其更加积极主动地开展学习。在传统的《C语言程序设计》课程教学中融合学科竞赛内容,可以极大地激发学生的求知欲望。教师应该在向学生教授基础知识,讲解课本习题的基础上,精心设计教学内容,将学科竞赛内容融入其中,引导学生针对竞赛题目进行进阶学习,从而有效锻炼学生的编程能力。

以“递归”的讲解为例,教师最常引用的例子就是n!,通常在给学生介绍了递归的相关概念之后,在事先编写好的程序中输入一个n的值,运行程序得到一个int整型结果,只有很少一部分教师会给学生讲解n>15时,运行程序得到的n!结果将会出现误差,甚至得不到结果。其实在学生已经掌握递归的基础知识后,教师完全可以给学生讲解上述现象出现的原因,让他们明白是因为int精度较低,数据一旦超出int精度就不能准确实现,而要想准确显示较大精度,可以用_int64类型输出数据,此时可以精确显示n<90内的n!结果,而要想显示n>90的n!结果就需要用到数组的逆序保存高精度数据,而这个问题恰恰是学科竞赛中经常会考查的高精度数学显示问题。在课程教学中引入这个问题可以有效激发学生的求知欲,拓展学生的知识面。

再以字符串回文判断相关内容的教学为例,如“上海自来水来自海上”的判断。传统的教学模式下,学生的学习局限于回文的概念以及判断回文的方法,即利用一维数组,从字符串首位向中间循环读取字符,依次判断字符是否一致。而通过引入学科竞赛内容,教师可以将该问题拓展至二维数组,引导学生判断二维字表中的回文读法有几种。对于这种有一定趣味性、挑战性的问题,学生的学习兴趣很高,纷纷积极主动地思考问题解决方法,最终在教师的指导下总结出最佳解法,即通过“动态规划”列出状态转移方程。这里的“动态规划”算法就是学科竞赛中常用的接替解题利器。通过引入竞赛内容帮助学生拓展编程知识面,使他们在趣味性的编程学习中,深入理解算法,逐渐提高编程能力。

二、基于学科竞赛丰富课堂教学

传统教学模式主要使用PPT课件来呈现教学内容,在教学中,教师占绝对主导地位,学生处于被动学习地位,不利于发挥学生的主观能动性。为了打破这个现状,教师可以基于学科竞赛的特点引入新的教学方法,充分调动学生的学习积极性。例如,在上课之前,教师可以给学生发放相关的预习材料,如微课视频,要求他们在课前根据预习材料完成预习内容,将预习过程中遇到的无法解决的问题记录下来。在课堂上,教师可以将学生分成多个小组,让各小组选派代表上台发言,分享本组的预习心得,然后组织各小组进行交流讨论,最后由教师给出总结点评。此过程中,教师应该为学生创设自主学习环境,提供自主学习平台,采取多种教学方法丰富课堂教学,有效提高学生的学习兴趣,從而提高《C语言程序设计》课程教学效果。

(一)提供自主学习交流平台

为了帮助学生更好地开展自主学习,教师应该给学生提供自主学习平台。如MOOC平台、百度公开课、校园在线学习平台等等。同时利用多种在线测验工具,如全国软件设计大赛自主测试系统,开源OJ系统。利用这些平台引导学生根据自身情况,灵活选择学习方式,学习实践开展自主学习。除此以外,教师还可以借助各种各样的在线社交软件给学生提供在线交流的平台,如QQ、微博、微信、电子邮箱等,要求学生通过这些平台大胆提问,积极交流,互相分享学习心得,共同探讨问题。

(二)不断丰富课堂教学手段

讲解课程基础内容时,教师应该针对具体的教学内容运用适当的教学方法,有效提高学生的学习兴趣。例如,在教学时,教师可以采用边讲解知识边带来学生动手编写代码的方式,引导学生更好地理解知识,掌握C语言程序设计解题思路,让他们直观地看到程序是如何一步步实现的,代码是如何一行行写出来的,在出现代码错误时又该如何解决。这样的教学方式可以让学生更加深刻地感受到编程的魅力,深入了解程序的编写过程。在学科竞赛中,算法效率是一个考查重点,因此,在平时的教学中,教师要重视培养学生对算法优劣的判断意识和能力,通过长期训练培养学生良好的编程习惯和算法设计能力。

例如,在教学顺序结构程序设计时,教师可以先将程序语句的顺序打乱,然后要求学生自己理清顺序,调试程序,观察程序运行输出结果,不同的语句顺序会得到不同的输出结果,以此加深学生对顺序结构理解,提高学生的编程能力。又如,在教学程序效率重要性时,教师而可以先引导学生分析我国古代的典型数学问题“百钱白鸡”,要求学生运用C语言编写程序解决问题。很多学生会想到通过循环三次遍历1到100的方法加以解决,但该程序需要执行多达10万次才能解决问题,程序效率非常低。假如换成二重循环就只需要执行558次即可得到问题答案,效率大大提升,通过这样的问题教学引导学生反思问题的解决方法,尝试找到最佳解决方法,重视程序效率,养成良好的编程习惯。

三、基于学科竞赛改进评价机制

学科竞赛注重考查学生运用C语言编写程序解决实际问题的意识和能力。因此,教师应该注重评价学生的知识应用能力,采用小组评价、教师评价、自我评价的方式,重点评价学生的实际编程能力。将课程考核分数分为知识理解、知识应用两大块,综合考查学生的C语言编程能力。基于学科竞赛设置合理的评价指标,如自我评价中注重学生对小组的贡献,小组评价注重评价小组成员的合作意识和合作能力,教师评价注重评价学生根据实际问题编写程序的能力,通过理论与实践并重的评价方式对学生进行客观全面的评价,以准确评估教学效果,找出教学中的问题,并及时调整。

综上所述,C语言程序设计是学科竞赛的基础知识,对于学生学习其他计算机课程而言至关重要,在参与各种形式的学科竞赛的过程中,学生的C语言编程能力将得到有效提升,同时通过竞赛可以培养学生的团队合作意识,使学生学会如何与他人合作编程。通过学科竞赛活动脱颖而出的学生被知名IT企业录用后可以有效激发其他学生的学习积极性,促使他们更加努力的学习,教师可以抓住机会鼓励他们学好C语言编程,提高他们的学习热情,构建积极进取的学习氛围,从而提高C语言程序设计课程教学效果。

参考文献:

[1]宦娟, 侯振杰, 刘锁兰,等. 基于竞赛的C語言程序设计课程改革探讨[J]. 福建电脑, 2017(12):55-56.

[2]杜璞. 《c语言程序设计》课程与竞赛相结合的教学改革的研究[J]. 才智, 2015(29).

[3]袁辉勇, 羊四清, 易叶青,等. 以竞赛培养模式推动程序设计系列课程的实践教学改革[J]. 电脑知识与技术, 2012(34):8230-8231.

[4]毕方明, 杨文嘉. 结合竞赛的C语言程序课程改革探讨[J].中国培训, 2016(24):26-26.

猜你喜欢

C语言程序设计学科竞赛课程改革
浅谈独立院校大学生电子设计竞赛的组织与实践
“学研赛”并重的计算机类双创型人才培养模式探索
“双创”形势下高职财务管理课程改革探索