围绕C99标准下C语言教学内容改进以及实验环节、考试环节、课程设计环节的实施,阐述在以教育教学型为主的大学,如何以实例为主线,结合学科竞赛,提升C语言课程的教学效果的思路和做法。
一、概述
C语言功能丰富、表达能力强、使用灵活方便、应用面广、目标程序效率高、可移植性好,既具有高级语言的优点,又具有低级语言的许多特点,既适合于编写系统软件,又能方便地用来编写应用软件。因此C语言是目前在国内外使用最广泛的语言。正是因为C语言是最基本的通用语言,有了C的基础后,掌握任何一种语言都不困难,C语言被认为是计算机专业人员的基本功。在长期教授C语言的过程中得到的经验是既要注意讲清概念,使学生建立正确的计算思维,又要培养学生实际处理问题的能力。
进行程序设计,必须掌握:①常用算法。算法是程序的灵魂。②数据结构。数据结构是程序加工的对象。③语言是编程工具,任何算法要通过语言来实现。④要采用合适的程序设计方法。本文探讨以图形程序设计为先导,以案例驱动为线索的教学内容安排,强调重过程的实践考核手段,加强学生的动手能力培养,将实际的例子贯穿于教学中,重新组织授课内容、安排实践环节,教会学生学以致用。
二、教学现状的分析
几乎所有高校的计算专业均开设了C语言课程,尽管层次不一,在讲解程序设计这门课的时候仍然存在以下几个方面的问题:①内容陈旧,忽视程序设计的核心问题。教材的内容过于传统,始终围绕着语法进行讲解。没有图形程序设计,学生对程序设计没有感性认识,初学时有点丈二和尚摸不到头脑。②过于关注语法细节,忽视编程能力的培养。教学过程过于强调C语言的语法知识的讲解,对程序设计思想、程序设计方法和程序设计风格的介绍却极其有限,导致课程枯燥乏味,影响学习兴趣。学生语法可以但程序设计能力较差。
③重视讲授,忽视培养学生学习的主观能动性。教师主要以讲解概念、语法知识点为主,忽视了学生创新能力的培养。由于学生是被动接受灌输的知识,无法调动学生的学习热情,因此学生的学习热情低,也不能灵活创新地运用所学的知识来分析和解决问题。
④重视理论课,忽视实验课。老师须同时指导很多学生,难以顾及到每位同学;教师在布置实验任务时,统一安排任务,如安排做实验册上的练习等。使得能力较差的同学总是无法完成任务,失去学习热情和信心,也使好的同学的能力得不到体现,无法进一步提高。⑤考核环节注重结果,不重过程。考试方式主要靠最后的期末成绩,缺乏过程环节的考核,难以让学生从内心真正重视起来。
三、改进教学内容、实验方式和考核手段
人的认识要随着时代的前进而不断深化,在新的形势和环境下,教学要突破传统观念和传统模式,也要追求高效和完美,以培养高素质有创造精神的人才为这门课的教学目标。
学生是教学的主体,安排教学首先须考虑培养目标、学生的认知规律和学习特点;教学的每一个环节都要顾及学生的实际情况,有利于调动学生学习的积极性,引导学生主动学习。该课程主张程序设计是高强度的脑力劳动,不是听会的、也不是看会的,而是练会的。经过多年的探索实践从以下几个方面进行了教学改革的尝试:
1.应当按照C99标准进行C语言介绍。根据C99的建议,main函数的类型一律指定为int型,并在函数的末尾加一个返回语句“return 0;”;C99增加了注释行的新形式——以双钭线“//”开始的内容作为注释行;数据类型介绍中,增加了C99扩充的双长整型(long long int)、复数浮点型(float_complex,double_complex,long long_complex)、布尔型(bool)等。
2.教材内容的改进。自编的教材有别于以C语法为中心的传统教材和单纯的案例教材,注重引导学生思考、培养创新思维;强化程序设计能力培养、强调学用结合;突出实用性、趣味性和规范性。因程序设计的需要,引出相关的知识点,学习和使用密切结合。加深了理解,也避免了枯燥的学用分离的语法学习;读者能够明确为什么引出及如何应用知识点;算法分析与程序实现密切结合,培养学生程序设计能力。除了三种基本结构、函数、指针、结构体的介绍之外,新增的内容有:①Raptor程序设计。钱学森曾说过:“科学工作源于形象思维,终于逻辑思维”。所以教材的一开始,增加了图形程序设计章节,让学生在不懂得语法知识的情况下,通过图形完成程序功能,从感性认识出发,对各种基本结构进行了解和使用,对程序设计迅速入门。
②增加文件的使用。在以往的教学过程中,文件一章总是放在最后才介绍,由于临近期末,无论是讲授还是学生应用都显得十分仓促。我们自编的教材中,将文件的内容拆开来讲,在函数一章先介绍文件的基本概念,输入输出的重定向,让学生学会用文件保存数据。第七章当中再介绍文本文件和二进制文件的用法和更为复杂的操作命令。尽早的建立起文件的概念。
③增加问题的求解与算法。算法是程序的灵魂,是解决问题的关键所在。新教材中增加的这一章内容,既介绍了问题求解的一般过程、问题抽象与建模、程序的风格,还介绍了算法复杂度,常用算法举例,如:分治、搜索、动规等。既开阔了学生的视野,又给出了解决问题的方法。例题选择上力求实用性、趣味性和格式上的规范性。以此提高学习兴趣,引导学生养成良好的编程习惯,编写实用、风格优美、可读性好、易于维护的程序代码。
3.课堂教学改进。教材和讲授要思路清晰,通俗易懂,容易理解。介绍每个例题时都采取以下的步骤:①给出题目或案例;②解题思路计算法的分析;③编写程序,介绍程序设计中本例题中的小技巧;④测试用例和运行结果的分析。
4.实验课程和课程设计。实验课程是C语言教学的重要环节,学生会不会编程和实验课的质量有很大的关系。我们学院搭建了OJ平台,各任课教师根据自己的教学情况,从题库或者自己出题形成CONTEST,让学生完成。由OJ系统根据学生程序的提交情况打分,作为学生的平时成绩。课程设计一般是学期结束后的一次综合练习。我们的改进方法是每章结束后都有一个综合实践题,总结回顾这一章或前几章的内容,让学生分析算法写出实验报告。一些独立的章节,比如图形程序设计结束后,可单独打分。把24学时的课程设计分散到每周,收到了很好的效果。
5.成绩考核。以往的C程序设计考核一般以期末考试为主,前几年我们还进行笔试考试。现在的考核已将平时的实验课打分和期末考核结合起来。期末考试也是在OJ平台上完成,由于去掉了选择题,所以题目的形式要求多种多样,有改错题,程序填空题,程序段填空,程序设计题等,可以从全方位考察学生对程序设计课的掌握情况,同时由于是上机考,要求学生平时要多动手实践。实践证明,这种考核办法,及分解了学生的压力,又调动了学生的积极性。
6.以学科竞赛为契机,激发学生的学习积极性:①比赛简介。通过各类学科竞赛,人们会发现在学生当中蕴藏着巨大的创造力,他们的确需要一个展现才智的机会。“蓝桥杯”全国软件和信息技术专业人才大赛是由工业和信息化部人才交流中心、教育部全国高等学校学生信息咨询与就业指导中心联合举办,旨在促进全国高校计算机、软件和电子类专业的教学改革与创新,鼓励学生在“互联网+”领域做出具有创新性和实用性的系统或软件结构,大赛设置了java,c/c++、单片机开发与应用等比赛类别,且分A组、B组等组别。我校学生比较适合参加B组的比赛。
②学生参赛情况。“蓝桥杯”全国软件和信息技术专业人才大赛迄今为止已经举办六届了。学院对此项工作非常重视,委派教学和科研能力很强的教授专门负责,在同学中广泛宣传,广大教师参与的积极性也很高,参赛人数不断增多。我带的学生在第六届比赛中获得了全国决赛的一等奖,二等奖和三等奖。③学科竞赛促进教与学。同学们在比赛的过程中培养了自己分析问题、解决问题、动手能力、团队合作精神、沟通协调能力及理论联系实际的工作作风。所有这些,都是在课余和假期中完成。这需要极大的耐心、毅力和吃苦精神。参加过比赛的同学,都感觉自己在专业学习的道路上上了一个台阶,学到了书本上很多没有的东西,通过软件大赛锤炼了自己,提高了能力,对今后的学习和工作产生了积极而深远的影响。除了参加全省和全国的学科竞赛外,学院和学校内部的竞赛我们也组织学生积极参与。烟台大学每年都有“挑战杯”创业大赛,我院有“网页设计大赛”、“动漫设计大赛”等。从大一开始我们就组织学生成立学习兴趣小组,利用院里的图书资料给他们提供一个良好的学习环境,指导教师定期对他们进行指导,包括自编教材、改进教学内容,以点带面,大大地提高了学生学习程序设计的积极性。
四、结论
C程序设计语言作为当今的主流程序设计语言,被越来越多的高校作为计算机专业新生的入门语言,广大计算机基础教育工作者对如何教好这门课进行了许多有意义的探索。目的只是把C程序设计的教学搞好。我们根据自己多年的教学经验改进教材内容、采用新标准、改进考核办法、采用OJ平台等诸多方面进行改革尝试,取得了较好的效果。另外通过各种学科竞赛,以点带面,激发学生学习程序设计的热情,改进教学内容和手段。计算机科学发展迅猛,计算机教学必须与时俱进,我们还要更加努力,在今后的教学工作中还应该不断站在学科发展的前列,经常更新实例,使其更好的融入教学,这方面还有大量方法可探索研究。
作者:谭征 来源:教育教学论坛 2016年25期