首页 -> 2007年第2期
项目驱动教学法在C语言课程中的应用
作者:张 悦
关键词:项目驱动教学法;C语言
C语言是近年来在国内外得到迅速推广应用的一种计算机语言,它功能丰富,表达力强,使用灵活方便,目标程序运行效率高,兼有高级语言与低级语言的许多特点,几乎任何一种机型、任何一种操作系统都支持C语言开发。但C语言涉及的概念比较复杂,规则繁多,使用灵活,不少初学者难以掌握、易出错。多年来,按照高等职业技术教育的培养目标,基于建构主义学习理论,采用项目驱动教学法,对《C语言程序设计》课程的教学进行积极改革与探索,取得了良好的教学效果。现对教学过程进行总结。
项目驱动教学法
所谓项目驱动教学法是指在教学过程中以一个个项目为主线来展开,把相关的知识点融入到项目的各个环节中去,层层推进项目。通过对问题的深化或功能扩充,来拓宽知识的广度和深度,直至得到一个完整的项目解决方案,从而达到学习知识、培养能力的目的。
项目驱动教学法符合建构主义学习理论的要求。建构主义的学习理论认为,学习的过程是学生自己在头脑中对知识的意义进行建构的过程,学生是教学过程中意义建构的主体,教师是这个建构过程的指导者、帮助者,教师组织教学过程的重要任务,就是要注意学生意义建构过程自身的特点,帮助而不是代替学生实现这个建构过程。情景、协作、会话和意义建构是建构主义学习环境的四大要素。其中,前三者是教学的手段,学生头脑中的知识意义建构是教学目的。在项目驱动教学法中,“情景”即是指整个课程的学习处在实现教师提出的设计项目的环境中,“协作、会话”是教师对学生的指导以及师生之间、学生之间的讨论,而“意义建构”则是指学生通过课程的学习,最终完成项目并基本掌握实用软件的开发要领。
在《C语言程序设计》课程中
实施项目驱动教学法
(一)课程宏观设计
所谓宏观设计是指按照建构主义学习理论的要求,课程教学以一个合适的课程设计项目为引导,以该实例设计和改进中的问题为动力,逐步深入、全面展开课程内容。全课程以核心内容贯穿,同时每次课也从有关的实际问题入手,由实例引入本堂课的内容。这样,无论是对整个课程还是对每堂具体的课程,学生的学习目标都十分明确、具体。教师授课时先演示自己开发的系统,使学生在明确任务的同时产生浓厚的兴趣。宏观设计的另一个重要任务就是教师要明确每次项目拓展所引出的C语言知识点及学生应掌握的技能,使其能够涵盖C语言程序设计的所有基本内容。如完成学生成绩管理信息系统项目,必须学习以下知识:掌握文件的建立、打开、读、写等操作;系统的组织包含数据输入、修改、查询、统计、输出等功能,必须掌握函数的调用;数据内容的组织涉及数组、结构体、链表,必须掌握数组、结构体、链表等数据对象的操作;功能的实现必须设计算法控制流程,掌握不同的流程图表示方法;功能算法的实现必须根据算法描述进行符号化语句表示;根据编写程序的源代码进行程序调试。该项目难度适中,囊括了C语言课程的大纲要求,而且与学生联系密切,使学生不必进行复杂的项目背景分析就可以进行不同程度的功能扩展。同时项目的实现能够突出程序设计“以算法为中心”求解问题的方法,是一个比较合适的项目。学生从开始模仿单一的记录添加、排序、查询、统计和记录浏览等简单程序,到利用函数、结构和指针等知识对模仿期开发的各功能模块进行扩充和完善,逐步组建学生的管理系统。
(二)课程微观设计
微观设计是指对每一单元、每一堂课的安排方式、教法和教学特点进行设计。在微观设计中应注意项目与授课内容的结合,以达到理想的效果。在授课开始,提出问题,指出该问题的难点,围绕授课内容引导学生进行思考。例如,学习结构体一章时,可以让学生思考如何才能存放全班同学的信息(姓名、年龄、成绩等)?以往的基本数据类型可以完成吗?由此引入结构体数组的概念。以“选择结构”一章为例,说明微观课程设计的步骤。该单元的教学知识点是掌握关系表达式、逻辑表达式和条件表达式,会使用if语句和switch语句。在教学过程中,从简单的问题着手,先要求学生自己编写程序,引入条件语句,同时在程序中讲解相关的语法知识点,提升高度。具体步骤:(1)任意输入两个数,求最大值,并输出最大值。(以此为例讲解if…else语句的用法及其执行过程)(2)扩展第一步,任意输入三个数,求最小值并输出。(引入介绍六种基本关系运算符并给出优先顺序,学习计算关系表达式的值,强调值为逻辑值。)(3)扩展第二步,任意输入三个数,并按从小到大的顺序输出。(注意讲解其中的算法,为循环语句打基础。介绍三种逻辑运算符及其优先顺序,学习计算逻辑表达式的值。)(4)移植第三步,求解符号函数,强调else子句与if语句的匹配原则。(5)推进第四步,进行if语句的多重嵌套。从键盘上输入成绩并按原则输出其等级为习题供学生练习。(6)改写第五步程序,使用switch语句构成多分支结构。(引入switch语句和break语句)(7)进行嵌套if语句与switch语句互换。
同时,还要注重算法分析,培养学生以算法为中心解决问题的能力。这是程序设计课程的教学重点,也是教学难点。对于C语言所涉及的算法,在精讲多练的同时还应注意这些算法之间的联系,与课程的相关内容结合。如选择法可以结合选择程序设计结构,筛选法、起泡法等算法可以结合数组、函数部分进行教学。这样,学生在熟练掌握这些算法的同时,也学习并掌握了相关课程内容,并逐渐养成在程序设计时进行触类旁通的思维模式。
在教学层次上,要根据学生基础程度的不同,制定不同的标准,要求每一个层次的学生都要达到最低的标准并向高一级标准努力。具体来说,一个课堂的练习要有多个层次,第一个层次是基本的,体现课程主要内容,第二个层次略为扩充,体现一定的技巧和算法,第三个层次就是要求学生的设计无论从界面、风格、完整型还是算法、技巧、易用性等方面接近专业程序员的习惯和水平。
经实践检验,项目驱动教学法激发了学生的自信心和积极性,锻炼了学生的程序设计综合能力,为今后较快地参与实际软件项目的开发奠定了坚实的基础。推而广之,在很多课程中都可以实施该教学法,只有在设计课程教学内容和形式时从本课程的实际应用角度出发,选取一个可以贯穿本课程主要内容的项目,使之在教学过程中一步步完善,这门课程的教学才会成功。
参考文献:
[1]谭浩强.C语言程序设计[M].北京:清华大学出版社,2000.
[2]王明富,徐人凤.高职软件专业技术课程的改革与探索[J].中国职业技术教育,2004,(12).
[3]邱建林,等.C语言程序设计教学的研究与实践[J].电气电子教学学报,2003,(8).
作者简介:
张悦(1968—),女,硕士,工程师,天津大学通信与电子系统专业研究生,深圳职业技术学院通信工程系教师,主要从事C语言、计算机网络等的教学及研究。