李 妮
(运城学院 公共计算机教学部,山西 运城 044000)
C语言程序设计课程项目教学实践
李 妮
(运城学院 公共计算机教学部,山西 运城 044000)
在C语言程序设计课程中应用项目教学法突破了传统的教学模式,将理论知识的学习与应用能力培养有机结合.根据应用目标的要求,项目课堂教学过程分解为三个阶段,课程内容和项目案例也分解为三个层次模块有效地配合项目课堂教学.
C语言程序设计;项目教学法;应用能力
在信息爆炸的知识经济时代,信息技术的普及要求现代工作者能够在解决实际问题时具备更多的信息技术技巧及能力.如何提高学生利用信息技术表述、分析问题和解决问题的能力,培养创新型和应用型人才成为高等教育的重要目标之一.
传统的教学方法很难满足信息化社会应用型人才的培养要求.因此,近二十年来,世界各国都在探索新的教育教学法或教学模式,特别是以培养实践能力为核心的项目教学法.由于项目教学法对于充分发掘学生的创造潜能,并促使其在提高动手能力、组织能力等方面起着十分重要和有效的作用,它在基础教育、职业教育、高等教育和成人教育中得到了广泛的应用,对教育的发展产生极为深刻而广泛的影响.
基于建构主义的项目教学法与传统的教学法相比,有很大的区别,主要表现在改变了传统的三个中心,由以教师为中心转变为以学生为中心,由以课本为中心转变为以项目为中心,由以课堂为中心转变为以实践为中心.项目教学法突破传统的教学模式,可以在增强学生的动手能力、思变能力、探究能力、创新能力和社会能力的同时,又能构建一个开放性、研究性的学习环境,并可使学生以足够的空间,按自己的方式去进行研究性的学习.
非计算机专业的C语言程序设计教学多用传统教学法.传统C语言程序设计教学,经常会出现课堂上学到的理论知识与实践脱节,教师用例过于理论化,学生很难用学到的知识解决实际问题.这正是教学方法不注重能力培养,学习背景没有嵌入实际情景而造成的.
项目教学法能够使理论知识与应用能力培养有机结合[1].教学过程中,师生通过共同学习理解、分解并逐步实施一个与现实紧密结合的小型项目进行教学活动.它实质上就是一种基于建构主义学习理论的探究性学习模式,强调知识意义和能力建构性,强调协作学习,在不断解决问题、实现阶段任务中完成对知识的意义建构.根据信息技术课程特点,采用项目教学法,增强学生的动手能力、思变能力、探究能力、创新能力和社会能力的同时,构建一个开放性、研究性的学习环境,使学生以足够的空间,按自己的方式去进行研究性的学习.
项目课堂教学的内容是由知识和项目一步步分解而来,知识重构和项目内容的选取是否在难度、复杂度上适合学生,项目子内容或子案例是否分解的正确合理,这些因素决定了项目教学内容的合理性及实施效果.项目的完整程序很容易地能够建立起来,但是也遇到了一些问题:项目案例是综合性的程序设计,很难将项目案例程序合理分解为较小的课堂用例[2],融入到授课过程中;在课堂教学中,往往只选取一个主要的项目案例与课程内容结合,学生从中获取的实践经验不够,能力提高不显著.
为了有效地实施项目教学法,应将项目与课程的内容相结合,分阶段分层次实现.依据“应用入手,学中建,建中学;分解项目,逐步深入与完善”的项目教学思想[3],将课堂教学过程分解为三个阶段,将项目和课程内容也分解为这三个层次模块配合项目教学三个阶段的学习.
初级阶段的知识模块主要是结构化程序设计基础,包含C语言程序设计课程的基本知识、基本数据类型及其定义与操作、程序的基本结构.初级阶段的项目模块包括设计项目软件系统的初级界面、软件菜单主界面的优化——实现人机交互、开发编写某些二级菜单软件界面和软件菜单主界面的循环显示等.项目教学初级阶段的过程如下:
第一次理论课是对C语言程序设计课程的总体介绍,为了让学生对项目教学方法有大致的了解,教师应选择简单的项目例子,向学生展示C语言在生活中的应用,例如学校信息管理系统、工资管理系统和超市商品管理系统等.介绍项目的功能,项目开发的总体过程,并要求学生以小组为单位[4]选择一个合适的项目共同去完成.教师需要提供一些项目案例供学生自由选择,学生也可以根据自己的兴趣自拟题目.要求学生课下根据自己选择的项目进行市场调研并写出需求分析.教师通过实验报告了解每个小组的项目调研情况,给出修改意见,学生继续对项目的设计做修改.
通过对基本数据类型和程序的基本结构的学习,教师总结教学项目案例中项目软件系统界面的设计特点,要求学生根据要设计项目的风格,设计项目软件系统的初级界面.学生模仿教学案例中的程序,讨论界面的内容并编程实现.教师检查每个小组的项目程序,给出修改意见,小组讨论后继续完善程序.接着进一步对软件菜单主界面进行优化:实现人机交互、软件主界面的循环显示等.
教师将此阶段的项目成果进行点评,并在教学博客上展示优秀的项目程序.
中级阶段的知识模块主要是模块化程序设计基础,包含函数的编写和调用、变量的作用域与生存期的运用.中级阶段的项目模块包括软件功能模块的划分、实现软件系统各级菜单的显示、选择、循环实现、优化某些功能函数设计,设计合理的全局变量等.项目教学中级阶段的过程如下:
教师通过分析几个典型的教学项目案例,总结函数的特点,运用模块划分方法定义合理的软件项目模块功能,讲解系统模块结构图的画法,分析各模块功能及函数功能.学生通过初级阶段对项目的调研,综合分析系统功能,讨论软件功能模块的划分,并在实验报告中画出系统模块结构图,详细描述各模块功能及函数功能.每个组内的成员都要分担一部分功能模块的实现,从中体会多人合作开发软件的方法.教师通过参与小组的讨论指导学生,给出必要的提示.
要实现每个功能模块的选择实际上就是实现软件系统中各级菜单的显示、选择、循环等操作.教师选取项目案例讲解系统中各级菜单的操作过程,例如怎样通过键盘的选择,从主菜单进入二级菜单;若想返回主菜单重新选择,主菜单怎样重新显示等.主菜单中的每个选择项都是一个功能模块,若有下一级的菜单,是对功能模块更小的划分.教师选择几个项目案例中的多个功能模块进行分析并编程实现,讲解项目中函数和变量的使用,以及如何对项目模块独立调试和综合调试等.项目小组共同完成系统的主菜单部分,其中每一个菜单项由组内成员对自己项目模块独立调试并分别编程实现,最后将所有功能模块进行综合调试.教师检查每个小组的项目程序,提出修改意见,学生继续对整个项目程序进行优化.通过教学博客展示各小组的项目程序,小组间进行相互的学习,并提出优点和改进意见.
高级阶段的知识模块主要是复杂数据结构和程序设计方法,包含数组、指针、结构体、文件的操作和应用.高级阶段的项目模块包括利用数组和指针设计、优化每个功能模块的函数,利用文件存储数据,利用结构体再次优化项目程序.项目教学高级阶段的过程如下:
结合批量数据的输入、操作、存储和输出,教师对教学项目案例进行再次优化,对以前项目程序进行改写,讲解如何利用数组和指针设计、优化每个功能模块的函数,利用文件存储数据的方法.这部分是项目教学的难点,教师需要指导学生利用数组和指针,采用不同的方法对项目程序进行改进.小组讨论后,每个组员对自己承担的那部分功能模块进行修改,最后将所有功能模块进行综合调试.
结构体数据类型可以把有逻辑联系的多种类型的数据结合在一起,可以对项目程序进行再次优化.教师讲解如何用结构体来重新设计实现数据字典中的数据结构,并用此数据结构来优化并完善程序.小组讨论后,采取统一的结构体数据类型,每个组员对自己承担的那部分功能模块进行修改,最后将所有功能模块进行综合调试.
教师将最终的项目成果在博客上展示,并对项目教学效果进行评价.评价结果由三部分组成:各小组对组员的评价、小组间的相互评价和教师对学生的评价[5].
非计算机专业计算机基础教育体系课程的教学应注重学生从实际中寻找问题、解决问题,提高实践能力和情感的培养,项目教学方法在C语言程序设计课程中的应用,提高了学生掌握并具备运用信息技术解决工作、生活中问题的能力.
〔1〕孟朝霞.C语言程序设计课程项目教学目标建设与实践[J].中国科技信息,2010(04).
〔2〕李妮,孟朝霞.案例教学法探讨——在非计算机专业本科生《C语言程序设计》课程中的应用[J].中国科技信息,2008(11).
〔3〕孟朝霞.C语言课程的应用性目标模型[J].运城学院,2009(01).
〔4〕李妮.小组合作学习教学探讨[J].运城学院,2007(05).
〔5〕李妮.大学计算机基础.课程中的项目教学法实践[J].运城学院,2009(01).
G642
A
1673-260X(2011)10-0242-02
2009年山西省普通本科高等教育教学改革研究项目(2009309);运城学院科研项目(JY-2009004)