C语言程序设计课程教学改革研究
2009-11-17刘明才牟连泳辛慧杰
刘明才 牟连泳 辛慧杰
【摘 要】C语言程序设计课程具有很强的理论性和实践性,要求学生既要掌握扎实的理论基础知识,又要培养实际编程能力。本文根据多年教学改革研究和实践经验,对C语言程序设计课的教学内容、教学方法和考试形式的改革进行了研究。
【关键词】C语言 教学方法 多媒体课件
C语言是当今流行的计算机程序设计语言之一。在C语言程序设计课程的教学中,教师和学生都普遍认为该课涉及的概念比较复杂,使用灵活,容易出错,特别是民族院校的学生大部分是来自边远地区的少数民族学生,由于基础差、语言交流困难等诸多原因,使得该课的教学更加困难。我校对理工科专业本科生开设C语言程序设计这门公共基础课已有多年,并不断进行教学改革与探讨。
一、教学内容的改革
1.注意知识点的结构
C语言通常是学生接触的第一门程序设计语言,它所包含的基础知识繁多,语法规则复杂,给初学者带来一定困难,初学者要全面地掌握它是不可能的。因此,在教学中如何从教材中精选课程内容就显得非常重要。在C语言的教学过程中不要在细枝末节上浪费精力,例如输入函数scanf和输出函数printf的格式复杂,一般的教材安排在前面用很大的篇幅介绍其语法格式和使用方法。按照这样的安排授课,在一次课中讲完并让学生掌握是不容易的,而且容易让学生产生厌烦心理。实际上,格式化输入输出函数应精选常用的格式并结合程序进行讲解,其他非常用格式在后续课中需要时讲授,这样学生容易接受和掌握。
在选择讲授的知识点时,可以参考C语言的全国计算机等级考试大纲,并对近几年的考题进行归纳总结,精选出常用的知识点重点讲授,其他非常用的知识点可让学生自学。为了激发学生的学习积极性,可以将通过全国计算机等级考试作为学习C语言的近期目标,而将培养程序设计能力作为长远目标。
在教学中可将各知识点划分为几个相对独立的模块,如简单数据类型模块、控制结构模块、数组模块、指针模块、函数模块和文件模块。模块的内容要循序渐进,由易到难。在教学中,要力争做到概念准确,分散难点。各模块的教学目标要十分明确,教学量适中,让学生容易抓住要点,理解和掌握教学内容。
2.算法是程序设计的灵魂
讲授C语言这门课程,如果只注重语句和语法,不重视程序设计能力的培养,学生往往在教学过程中感到枯燥难学,学过之后,编不出程序。我们经常遇到这样的学生,教师所讲授的知识点都掌握了,所讲授的程序也能看懂,就是不会编写程序。这个问题主要是授课中过多强调知识点的掌握,而忽略了分析算法的训练。Niklaus Wirth指出:“算法+数据结构=程序”。算法是程序设计的灵魂,数据结构是算法加工的对象。在学习C语言程序设计过程中必须仔细分析算法,恰当选择数据结构,选择合适的C语言的数据类型和语句,这样才能编写高质量的程序。因此在C语言的教学中必须坚持讲授程序设计方法和讲授语言并重的原则,将两者在教学中有机的结合就来,才能收到好的教学效果。
二、教学方法的改革
1.多媒体与传统教学方法相结合
随着多媒体技术的发展,教学方法和手段也在不断改进。运用多媒体课件辅助教学有利于激发学生的学习兴趣,同时由于多媒体信息量大,也有优化教学过程。但是对媒体使用不当也会影响教学效果,例如过多地增加动画效果和音响,会分散学生的注意力,影响主要问题的理解。如果用多媒体课件讲课的速度过快,信息量过大也不利于学生分析问题和思考问题。在教学中,要根据教学内容而选择教学方法和手段。例如,对于C语言的数据类型、各种运算符和表达式、程序结构等,这种概念性的知识和实例没有过多的推理逻辑,易于理解,而信息量又大,采用多媒体教学比较好。事先将概念、大量信息的案例代码制作成课件,在课堂讲授,增加了信息量,克服了传统的板书的缺点,课堂教学也不显得枯燥无味。但对于案例中的算法分析及程序的编写过程就要发挥传统教学的优势,进行课堂讨论、板书讲解,将所讨论的问题层层剖析,达到师生互动的效果,使学生对所讨论的问题有深入的理解。另外,还要利用网络平台将课件及各种电子辅导材料放在网上,供学生自主学习。
2.加强实验课教学
C语言程序设计是一门实践性很强的课程,既要掌握概念,又要动手编程,还要上机调试。教师设计实验内容时,根据各个不同的教学阶段,精心设计相应的实验内容。例如,可以将实验课教学分为三个阶段。第一阶段主要熟悉上机环境、简单程序的运行和调试。这一阶段以验证性实验为主,增强学生学习信心。第二阶段,根据教学内容,主要编写一些常用算法的小程序。第三阶段,对应课堂教学的结构体、链表和文件部分,应进行综合设计性实验。可采用项目分析教学法,在教师指导下完成一较大的实验项目,如“学生成绩管理系统”。将该项目的功能分解成各个模块,分别用函数编写。该实验项目既复习、巩固了已学知识,又引入要学的新知识结构体、链表和文件等。
三、考试形式的改革
在考试的形式上,要改变以前期末闭卷一次性的考核方法,实行分阶段考核,即平时考核和期末考试相结合的方式。我们根据C语言程序设计这门课的特点,采用了下面的考试形式:
课外大作业(10%)+考勤(10%)+3次单元考试(30%)+期末考试(50%)。
1.课外大作业是指学生在期末考试之前所要提交的一个大的试验项目,题目自选。该作业的目的在于培养学生的综合程序设计能力和创新意识。作业采用网上提交,教师批阅的形式,满分10分。
2.考勤分为理论课和实验课两部分。理论课的考勤采用抽查及点名提问的方式完成,实验课的考勤利用计算机管理系统网上统计到课率。考勤满分为10分。
3.单元考试是指将课程内容分为3个单元,每讲授完一个单元,就进行一次单元考试,每次10分,共30分。单元考试的题型分为单选题、填空题、程序改错题、程序填空题、程序设计题。其中:
(1)单选题和填空题主要考核学生对常用的语法规则和基本概念的掌握程度。
(2)程序改错题和程序填空题主要考核学生阅读程序和调试程序的能力。
(3)程序设计题主要考核学生程序设计的能力,并且程序设计题占主要部分,以引导学生逐步掌握程序设计的方法,提高程序设计能力。
4.期末综合考试的题型与单元考试题型相同,只是内容覆盖全课程,共50分。
我们把上述考试形式称为过程化考试。其中,单元考试和期末考试均采用机试,即通过计算机考试系统从题库自动抽题,自动阅卷。
经过两年的教学实践,学生的考试成绩大幅度提高,教学效果明显好转,出现了两个方面的可喜变化:一是学生平时不努力,期末搞突击的不良习惯大大改变。二是通过单元考试,教学效果及时反馈给教师,使得教师不断改进教学方法,加强对后进学生的辅导。
参考文献:
[1]谭浩强.C程序设计(第二版).北京:清华大学出版社,1999.
[2]Eric S. Roberts. C语言的科学和艺术. 北京:机械工业出版社,2005.