项目驱动式案例教学法在“C程序设计”课程中的应用
2011-08-15宋麦玲薛思清
徐 凯,宋麦玲,薛思清
(中国地质大学(武汉)计算机学院,湖北武汉,430074)
一、“C程序设计”课程简介
C语言是国内外使用最广泛的高级程序设计语言之一。C语言功能丰富、表达能力强、使用方便灵活、应用面广、目标程序执行效率高、可移植性好,既具有高级语言的优点,又具有低级语言的许多特点,特别适合于编写系统软件[1],也可用于编写应用软件。因此很多高校把“C程序设计”作为计算机各专业的主干基础课程之一,可见其地位和作用是非常重要的。通过“C程序设计”的教学,目的是使学生能够很好地理解C程序设计的基本语法和规则,掌握C语言程序设计的基本思路和算法,熟悉程序调试环境,从而培养学生养成良好的编程思想、编程习惯、设计规范和风格,为后续专业课程及其它程序设计课程的学习和应用奠定坚实的基础。
传统的“C程序设计”教学方式是:“提出概念―解释概念―例题讲解―习题”,在课程教学过程中主要是以教师为主导的“填塞式”的教学方式,而大部分学生基本上是以被动接受的方式在教师指导下完成学习,学生学习的主动性与积极性都不强。同时,由于这门课程的知识点多,信息量大,逻辑思维能力要求很强。因此,学生普遍认为C语言程序设计的语法复杂,知识零乱,枯燥难懂,全部课程学完以后,大多学生只能看懂程序,而不会编写程序,不会应用C语言解决实际问题。本文结合课题组教师的教学实践,提出在“C程序设计”课程中采用项目驱动式案例教学法,并对教学案例的选择、实施以及在教学中应注意的问题进行了探讨。
二、项目驱动式案例教学法在“C程序设计”中的应用
(一)项目驱动式案例教学法的基本思想
项目驱动教学法来源于建构主义学习理论,与其相适应的项目驱动教学模式为:“以学生为中心,教师在整个教学过程中起组织和指导的作用,利用情境、协作、会话等学习环境要素,充分发挥学生的主动性、积极性和创新精神,最终达到使学生有效地掌握当前所学的知识的目的。”在这种模式中,教学关注的重点是学生达到的程度,指导教师的任务是根据学生已有的经验、知识、水平和兴趣来选取适合他们的项目,使学生置身于探索知识的情景之中,即在真实世界中运用知识解决问题。从根本上将传统课堂中老师满堂灌,转变为“学生为主体,教师为主导”的教学模式[2]。
案例教学法(Case Study)是19世纪70年代美国哈佛大学法学院院长兰德尔首创的,最早是应用于医学领域,后来广泛运用于工商管理、法学、军事学、教育学、理学以及工学等学科。所谓案例教学法是指教师在教学过程中,根据教学目的和培养目标的要求,以案例为基本素材,把学生带入特定的情景中进行分析问题和解决问题,从而培养学生运用理论知识进行分析研究,提出自己的见解,做出判断和决策,提高学生解决问题的能力的一种理论联系实际的启发式教学方法[3]。它是一种生动、灵活、多样化的教学方法,通过师生、生生之间双向和多向互动,积极参与,平等对话和研讨,重点培养学生的批判反思意识及团体合作能力,并促使学生充分理解问题的复杂性、变化性、多样性等属性的重要教学形式。
本文提出的项目驱动式案例教学法,其核心是用一个完整的项目贯穿“C程序设计”课程的所有教学内容,并采用逐步扩张法进行项目的开发,同时,把项目拆分为若干个典型案例,在课程教学中以典型案例划分单元教学内容,以案例引导学生学习不同的知识点。这样,将项目开发与课程教学交叉融合、相辅相成,从而实现“C程序设计”的教学目标,并培养学生形成完整的编程思想与编程风格。与传统的教学方法相比,项目驱动式案例教学法具有从解决实际问题出发,理论联系实际,能够活跃学习气氛,调动学习主动性与积极性,使课堂更具有趣味性。
(二)项目驱动式案例教学法在“C程序设计”中的实践
“C程序设计”课程的教学目的是向学生介绍结构化程序设计的基本思想与方法,通过学习这门课程,让学生了解用计算机解决问题的一般方法步骤,重点掌握编写和调试简单应用程序的技能,培养学生的实际动手能力和探究、创新能力。为此,根据“C程序设计”课程的教学目的与内容,我们将这门课程分为两个阶段来实施项目驱动式案例教学。第一阶段是基础教学,主要包括程序基本结构、数据类型、操作符基本的语言要素,通过对这个阶段的学习,让学生能够掌握C程序设计的基本知识,初步读懂程序,其目的是培养学生的兴趣。第二阶段主要包括函数、指针、结构体、文件等语言要素,通过这个阶段的学习,让学生能够独立编写程序,其目的是理论与实践相结合,提高学生的实际应用能力。
根据以上安排,笔者设计了由“学生信息管理系统”项目来驱动C程序设计的课程教学。在实际教学过程中,把“学生信息管理系统”项目拆分为20个案例,如程序结构、数据类型、操作符、数组、字符串、函数等,每个案例对应一个知识点。在56学时的教学过程中,40学时完成教师与学生互动的项目驱动的案例教学过程;16学时用于完成项目实践,即仿照“学生信息管理系统”项目完成“本班学生档案管理”。
在每节课程的教学过程中,以教师为主体,采用案例分析教学法,通过对案例的演示、讲授和分析,将案例与所讲授的课程知识点融为一体,形成一个完整的课程内容体系。以数组这一部分为例,首先,给学生演示用数值实现的案例——“学生信息管理系统”,向学生演示学生成绩的输入、查询、排序、删除、输出等与数组案例相关的内容。同时,教师在演示的过程中向学生提出相关问题,让学生思考的同时引出数组的知识点。其次,讲授数组的语法及功能,重点对数组概念、语法进行讲授。讲授完后,让学生结合“学生信息管理系统”,自己总结数组的功能。再次,根据学生的理解程度,再进一步深入剖析“学生信息管理系统”案例中与数组相关的内容,可以采用从上至下的方式,带领学生对案例的算法、语法及功能进行分析,让学生充分理解和领会数组在“学生信息管理系统”案例功能模块中的主要作用。最后将整个案例中所用到的知识点进行汇总,使学生更好地理解数组的理论知识,也为后续的实践学习打下良好的基础。
在整个教学过程中,教师与学生的交互贯穿整个流程。教师起主导作用,也就是教师根据教学内容将所有案例与所要教授的知识点紧密结合,并流程化,分阶段实施,由浅入深,层层递进。而学生作为学习的主体,在整个项目的实施阶段,学生随时要主动学习和理解案例,以及相关的知识点,并且要熟练掌握编程思想与设计规范。
案例的实现是项目驱动式案例教学法中极为重要的一步,因此,要求学生在实践课上亲自编程来实现案例教学中提到的案例,这样才能让学生真正地将各个知识点融入到实践中,体会理论与实践的有机结合。教师根据案例涵盖知识点的多少及难易程度,合理安排实践课的内容。一般情况下,每一学时实践课实现案例的一至两个功能模块。
(三)项目驱动式案例教学过程中应该注意的问题
为了让学生更好地学好C语言程序设计,同时,也为了更好地发挥项目驱动式案例教学法的作用,在“C程序设计”课程中使用项目驱动式案例教学法时,应该注意如下四点:
第一,项目的设计。项目的设计应涵盖C语言程序设计教学的所有知识点,并能激起学生兴趣与求知欲。同时,项目难度要适宜,确保大多数同学能够完成,项目完成后应能看到具体的效果,这样能调动学生探索知识的积极性和主动性。
第二,案例的选择。案例是让学生在真实的环境中完成任务,达到提高学生分析问题、解决问题的实践动手能力,因此案例选择时应考虑如下方面:(1)案例的选择要能包含尽可能多的知识点,不能脱离相关知识点,否则案例的选择没有意义;(2)案例应具有代表性与可扩展性,学生能够从案例中得到启发,进行拓展性思考,这样能让优秀的学生有发挥的空间;(3)案例选择的大小和难度要适宜。难度和规模太小,难以丰富编程内容,达不到应有的效果;同样,难度和规模太大,又会超出学生的实际知识水平与能力,使学生产生挫败感,同样影响教学效果;(4)案例教学中要贯穿编程风格的训练,这是编程内容中不可或缺的一部分,它反映了一个人编程的思维品质与编程的设计风范。因此,编程风格的训练应该从一开始就加以重视,并贯穿整个课程的始终[4]。
第三,案例的讲解与总结。案例的讲解是案例实施的指导,案例总结是案例实施的归纳,是项目驱动式案例教学的重点和精华部分,教师应该重点讲解。
第四,案例的衔接与项目的完成。通过一条主线,把案例衔接起来,最终完成整个项目,并让学生看到完成后的效果。
教学实践证明,在“C程序设计”课程教学中采用项目驱动式案例教学法,能把理论与实践紧密结合,能增加课堂教学信息量,提高教学质量。同时,能够充分调动学生的积极性,激发学生学习的兴趣,对提高学生分析问题、解决问题,以及培养学生的创新思维与实践的能力都具有重要的作用。
总之,项目驱动式案例教学法是一种具有启发性、实践性,能开发学生智力,提高学生决策能力和综合素质的新型教学方法。合理、有效地使用项目驱动式案例教学可将枯燥的抽象的概念变得生动、具体,重点突出,简单明了,既活跃了课堂气氛,又调动了学生的积极性[5]。所以在“C程序设计”课程的教学中使用项目驱动式案例教学,容易使教学过程充满挑战性、趣味性,很好地解决传统教学中遇到的问题。值得一提的是,对于部分理论知识,教师还应该按照教学的实际情况,运用传统教学方法进行系统的讲授,不能完全由项目驱动式案例教学法来替代。因此,今后,我们将进一步探索项目驱动式案例教学法在“C程序设计”中的应用,进一步去寻求传统教学法与项目驱动式案例教学法的最佳结合点,各取所长,既要能系统化地传授教学内容,又要能提高学生学习的主动性、创造性,从而追求更高的教学效果。
[1] 谭浩强.“C程序设计”[M].3版.北京:清华大学出版社,2005.
[2] 郭新,孟昭文,王业君.项目驱动教学法在高校Linux人才培养中的应用[J].职业圈,2007(21):116-117.
[3] 郑金洲.案例教学指南[M].上海:华东师范大学出版社,2000.
[4] 范劲松,黄友初.案例教学法在C语言教学中的系统应用[J].郧阳医学院学报,2005,24(3):191-192.
[5] 任华.案例教学法在计算机C语言教学中的作用探究[J].信息科技,2011(1):183-184.