林小茶
摘要:“C语言程序设计”已经成为现代大学生的一门必修课,也是大学生了解计算机和学习计算机知识的基础。本文从教材的选择,教学内容的安排以及至案例的选择等几方面对“C语言程序设计”的教学方法作了一些研究和探讨。
关键词:C语言;程序设计;教学方法
中图分类号:G642文献标识码:B
1引言
随着大学的扩招,越来越多的普通学生进入大学学习,大学也从精英教育向普通教育过渡。不论理科还是文科,C语言程序设计成为很多大学生学习计算机知识的入门课程之一。这使我们这些长期从事程序设计教学的人员,遭遇到了前所未有的挑战。
如何挑选教材,如何安排教学内容,如何选择适当的案例等等是我们必须要面对的问题。本文就这些问题作一些探讨。
2以往的教学经验
多年来,我一直在教学第一线教授C语言程序设计,在以往的教学中,我要求自己做到以下几点:
第一,讲课内容要符合初学者的认知规律,从简单到复杂,循序渐进。
第二,通过实例讲解相关的概念,重点在培养学生的程序设计能力。
第三,算法要尽量简单,有利于学生的理解。
第四,授课涉及的内容,要讲解透彻、详尽。
谭浩强老师的《C程序设计》是我在教学中长期选用的教材,因为它能够很好地满足自己的教学思想和要求。
该教材的编写顺序和内容,非常符合初学者的认知规律,难点分散,内容的安排较合理,每一章都讲解了新的概念,但又注意到不引入太多的新概念;为了避免从概念到概念,从理论到理论,教材中使用了大量通俗易懂的实例,并使用很多有意义的图表来分析和讲解概念,方便同学们对概念的理解;该书的内容重点突出,对C语言中最基本和常用的部分进行了详细的分析和讲解,为学生以后更深层次的学习打下了牢固的基础。
学生们普遍反映《C程序设计》是一本非常好的教材,不但帮助他们掌握了程序设计的理念,还能真正动手编写一些实用程序。只不过,我以前的学生,大部分是录取分数超过一本的,《C程序设计》的难度和深度对他们很适合。最近几年,由于扩招和学校合并等原因,学生的水平越发参差不齐,给教学工作带来了不少难度,也使自己更多地思考和尝试搞好程序设计教学的方法。
3选择适当的教材
有关C语言程序设计的教材,真可谓是百花齐放,百鸟争鸣了,笔者并不认为这是一件坏事情,恰恰相反,如果每个作者经过自己多年的教学和科研,都对程序设计课程的教学方法有自己独特的想法,同行们可以互相交流,取人之长补己之短,何乐而不为呢?但不论如何,由于教材比较多(也确实有些教材水平不高),给教师们选择教材带来了难度。为此,谭浩强老师总结了自己多年的教学和写作经验,根据读者的不同需求将C语言教材分为三种版本,以适应不同的学生。
第一本就是发行了1000多万册的新世纪计算机基础教育丛书之《C程序设计》,已经发行第三版了,该教材全面细致、深入浅出地介绍了使用C语言进行程序设计的方法,语言生动案例丰富,不仅讲解了C语言的语法,还通过大量的例题讲解了构造程序和设计算法的基本要领;第二本是普通高等教育“十一五”国家级规划教材,“中国高等院校计算机基础教育课程体系规划教材”之《C程序设计教程》,这本书以《C程序设计》为基础,科学地减少了部分内容,更加突出了教学重点,采用了既通俗又精练的写法;第三本也是普通高等教育“十一五”国家级规划教材,高等院校计算机应用技术规划教材应用型教材系列之《C语言程序设计(第二版)》,与前两本相比,内容更加精练。三本书均采用了“提出问题—解决问题—归纳分析”的写作思想,在讲解程序时,包括了提出问题、解题思路、编写程序、运行结果、程序说明和深入思考等几部分内容。
笔者在教学工作中接触了很多学生,有号称“小清华”的本科学生,有普通本科学生,还有夜大的学生,实践证明,将学生准确分类,选择适合他们的教学内容和教材是非常重要的。上述第一本教材适合学生基础好、学时较多(一般应超过56学时)、对程序设计的应用要求比较高的专业的学生,例如软件工程、信息安全等专业;而第二本教材适合学生基础一般、学时中等(一般为48学时)、对程序设计的应用要求不太高的专业,例如通信工程、计算机审计等专业;第三本教材适合学生基础一般、学时较少(32学时左右)、对程序设计的应用要求很低的专业,例如管理科学等,对这些专业,只要求学生能看得懂程序,了解计算机是怎么解决问题的就达到教学目标了。
而对于一些重点院校,尤其是学生的自学能力非常强的学校,如果教师自己的水平也足够高,有很深的程序设计功底,不妨选择吴文虎老师的《程序设计基础》,这也是一本非常好的教材。
4灵活安排教学内容
教材不是讲稿,任课教师需要根据各自专业的特点,对教学内容做适当的取舍,不需要面面俱到。尽管谭浩强老师的三种教材已经根据学生的不同层次,将教学内容做了重新取舍,但是教师的工作就是要因材施教,而不能照本宣科。
例如,对于位运算的内容,信息安全专业的学生必须掌握,该专业需要了解计算机低层的运算,才能理解密码学具体的实现方法以及网络安全的实现细节,而对于软件工程专业,位运算可以少讲,甚至不讲。
又例如,尽管谭老师的《C程序设计》中写的最好的内容是它对指针的解释和描述,想当年,我自己就是在阅读了很多书都不得要领的情况下,通过学习《C程序设计》才理解什么是指针的。谭老师将C语言中的精髓—“指针”的概念描述十分清楚、透彻,尤其是对指针使用时一些细节问题的描述,使我非常受益。但是,并不是所有的专业都需要将这部分内容的全部作为教授的内容,有些专业可以作适当的调整,例如那些偏文科的专业:会计学、审计学等。对于这些专业,只要通过简单的案例将指针的概念交代清楚就行了,毕竟这是C语言的精髓。
再比如,不论任何专业,递归的概念对于大多数低年级学生来说是很难掌握的,注意,这里说的是掌握,那么,我们只要求他们能看得懂递归程序就可以了。也就是说,要明白递归是自己调用自己,而不是让他们学会编写解决类似迷宫、八皇后或者是背包问题的程序,这些内容可以放到高年级学习数据结构课程的时候学习。
5精选与学生专业相关的案例
谭老师教材中的案例都是经过精心挑选的,有很多有趣的问题,例如国王的小麦、猴子吃桃、汉诺塔等等,这些对于学生们学习程序设计都是很好的例子。但是一本教材的容量毕竟是有限的,作为教师,应该花一些时间,挑选更多的案例,帮助学生们举一反三。程序设计思想的形成可以通过阅读大量的程序,并经过自己的思考和提练,最后达到掌握思想的目的。
挑选什么样的程序作为案例,就是教师需要考虑的问题。我认为,除了教材上一些基本的案例,教师需要选择与专业背景有关的案例。
例如,针对信息安全专业可以选择凯撒密码的实现方法、HILL密码的实现方法、异或运算实现加解密、简单的暴力破解口令、大整数的算术运算、素数的产生和使用、简单身份验证系统的实现,等等。这些案例既可以作为教学的例子,也可以作为实践环节的实现内容。
使用与专业相关的案例进行教学和实践,不但可以极大地激发学生的学习兴趣,还使他们学到了运用所学知识解决问题的方法及动手能力。
6结束语
C语言程序设计的教学不仅仅是教一门语言,也是教程序设计方法,教材的选择,课程内容的安排,乃至案例的选择不但要符合教学的要求,更要适合学生的特点,还要兼顾不同的专业要求。
参考文献:
[1] 谭浩强. C程序设计[M]. 3版. 北京:清华大学出版社,2005.
[2] 谭浩强. C程序设计教程[M]. 北京:清华大学出版社,2007.
[3] 谭浩强. C语言程序设计[M]. 2版. 北京:清华大学出版社,2008.