项目驱动教学法在《C#程序设计》中的应用
2012-01-26邹晓兵
邹晓兵
(重庆教育学院计算机科学系,重庆400067)
1 引言
C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。它是一种安全的、稳定的、简单的、优雅的语言,是由C和C++衍生出来的面向对象的编程语言。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性,比如指针。C#综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言[1]。目前很多高校的计算机相关专业都开设了《C#程序设计》这门课,但是采用的教学方法仍然是传统的教学方法,学习过程中主要强调基本语法,没有将学生的能力培养放在首位。其次,学生在学习《C#程序设计》之前大多学习过C语言,C#语言和C语言在内容上有很多相似之处,但是也有很多内容差异较大,比如数组、类、结构体等。因此,如果在《C#程序设计》这门课程中仍然采用传统的教学方式,学生容易将C#与C语言混淆,而且需要重复一些基本的语法知识,达不到学习C#的真正目的。在传统的教学模式中,也有一些项目或实例,但是这些项目或实例是分散的,学生学习起来也是孤立地,缺乏系统性和对课程整体的把握。有许多学者已经对项目教学法进行了研究[2-6],本文主要讨论项目驱动教学法在《C#程序设计》课程中的应用。
2 项目驱动教学法
项目驱动法来源于建构主义学习理论[7]。项目驱动教学法,就是运用构建主义的思想,并将整个学习过程分解为一个个具体的工程项目,设计出一个个项目教学方案,并认真设计出教学思路,不仅传授给学生理论知识和操作技能,更重要的是培养他们的职业能力,这里的能力已不仅仅是知识能力或者是专业能力,而是涵盖了如何解决问题的能力[8]。
项目驱动教学法是一种灵活多样,且生动的教学方法,它打破了传统的教学观念,对学生进行全方位的培养,使学生从被动的学习知识转变为主动地探索知识。在这种模式中,关注的重点是学生的能力培养,而不是知识本身。教师的任务是根据学生已有的知识、经验和专业,选择适合他们的项目,然后对学生进行指导,让学生置身于探索知识的情境中,从根本上解决传统教学中的满堂灌。学生在学习过程中通过对项目的分析、设计和实现,从而将理论和实践进行有机结合,学生在学习过程中由被动的知识接受者转变为主动参与者,而且通过项目的实现即既可以提高学生分析问题、解决问题的能力,又可以增强他们的自信。
《C#程序设计》是一门实践性很强的专业技能课,该课程注重的是学生能力的培养和提高,因此,改革传统教学方法,在《C#程序设计中》合理运用项目驱动教学方法,以全面提高学生的分析问题和解决问题的能力、创新能力、团队协作能力等。
3 项目驱动教学的实施
3.1 前期准备
在项目驱动教学中,项目是核心,整个教学过程都围绕项目展开。学生通过学习,可以体会实际项目的开发过程,可以为以后的实际项目开发积累经验。因此,项目的选择将直接影响教学效果。
首先,项目要具有一定的代表性,最好是和学生生活、学习相关的一些项目。只有选择学生感兴趣的项目,学生的学习积极性才高,参与意识才强。选择项目前,教师必须仔细分析学生的情况,比如已有的基础知识、专业技能、实际动手能力等。选择项目时,根据学生的实际情况选择难度适中的项目。如果项目太简单,达不到培养学生能力的目的;如果项目太难,学生学习时难于完成项目规定的任务,就会失去学习的动力和兴趣。根据学生的情况和学校的实际背景,我们可以选择“图书馆管理信息系统”作为教学项目(当然也可以选择其它的项目,只要能让学生在学习知识的同时,能力得到提高就行)。选择该项目的目的是学生对图书的借阅流程熟悉,而且该系统所涉及的知识包括软件设计的需求分析过程、系统平台的搭建、系统实施、系统调试,在系统的具体实现过程中将用到C#语言的主要知识,包括窗体设计、基本语法、类、数据库编程等相关知识。学生通过该项目的学习,即可以掌握C#的基本知识,又可以培养其分析问题和解决问题的能力,尤其是可以提高学生开发实际项目的能力。
其次,对项目进行合理分解,以检验项目及其内容设置的合理性。C#涉及的知识较多,从基本语法、类的定义、类的继承与多态、窗体设计、控件使用、数据库连接与访问到文件的输入输出。因此,在选择好项目后,就需要重点考虑如何将项目分解为多个小模块,使得每个小模块恰好能够覆盖C#的一个知识点。这部分工作主要检验项目的合理性和内容的适当性。将项目分解为多个小模块后,每个模块对应相关的知识点,它既能检验项目内容是否覆盖了相关的知识,又能对项目的合理性进行检验。在这部分工作中,如果发现项目的不合理部分,或者项目内容没有覆盖主要知识,就需要对项目内容适当调整,从而保证知识覆盖的全面性。在项目的分解过程中,也不一定非要将相关的知识都放到一个模块中。可以根据学生的基础和已学的内容将一个知识点分布到几个小模块中。这样,学生通过各模块的学习,既掌握了相关的理论知识,又增强了学生的成就感,从而提高了学生的学习兴趣,充分调动了学生学习的激情。
最后,对学生进行分组,以培养学生的团队协作能力。一般来说,一个完整的项目涉及的模块多,结构复杂,此时就需要多人合作完成一个项目。在项目驱动的教学中,教师事先已经选好了一个项目,为培养学生解决实际问题的能力,仍然提倡让学生自己选择项目。学生首先采取自由结合的方式进行分组,然后教师根据分组的情况进行小范围调整,调整时需要考虑优差生的搭配。为保证教学的顺利实施,组数不能太多。
3.2 项目驱动的教学过程
在课堂教学一开始,教师从软件工程的角度讲解软件开发的五个阶段,每个阶段应该做的工作,然后引导学生分组选择项目。教师一定要注意引导学生选择和他们密切相关的项目。这个阶段看起来与我们的教学矛盾。既然我们已经选择了项目,就可以根据项目模块的划分,学生在教师的指导下完成项目,这也是绝大多数项目驱动教学的采用的方法[9-11]。但是这样做没有体现出“以生为本”的思想,学生还是以被动接受为主,学习的主动性不能得到有效的提高。针对这一问题,我们倡导让学生自己找项目,然后分组讨论,在多个项目中选择比较合理的项目。在讨论中对学生提出的观点予以肯定,并对一些比较好的观点进行鼓励,并从中发现教师事前准备项目存在的一些不足。在讨论和确定项目的过程中,教师要尽量引导学生选择教师事前准备的项目。项目确定后,引导学生对项目进行模块划分,并讨论划分的合理性和科学性,覆盖知识的全面性,最终确定出项目的小模块。
传统的教学模式是教师先讲理论,然后学生上机操作。由于学生在理论课前没有相应理论知识的感性认识,导致上机时教师又要重复相关的理论。为此,我们探索了一种先上机,后理论的教学方式。这种教学方式让学生先上机,完成项目中的相应模块,在完成模块的过程中,学生就可以了解模块中涉及的相应知识,以及他们对该部分知识的掌握和理解情况,教师也可以通过学生的上机情况了解学生存在的问题,以便在理论教学中强调相关知识。在这种教学模式中,学生是主体,教师是主导。学生总是带着问题来学习,通过这种不断强化和训练,既可以提高学生的实际动手能力,又可以培养学生分析问题和解决问题的能力。在项目的实现过程中,教师应该对问题进行适当延伸(比如数据库操作部分对表和视图的操作处理判断等),以培养学生的创新能力。
表1 考核评价标准
3.3 项目驱动教学中学生成绩的评价
传统C#程序课程的考核方式主要是纸质试卷,考核学生对基本语法的掌握情况。项目驱动教学是以培养学生的能力为主,强调对学生分析问题、解决问题能力的培养,而传统考核方式关注的是学生对书本知识的掌握情况,很少关注学生的实际能力。为更好的测试学生对C#程序的掌握情况,可以将测试分为5个部分:(1)出勤;(2)小组合作情况;(3)各小模块完成情况;(4)答辩;(5)期末考试。每个部分考核的内容和权重如表1所示。由表1的评价内容和评价方式可以看出,通过这种评价,学生参与度较高,从而保证了考核的公正、公开和公平,并且评价结果能够真实反映学生的实际能力。
4 小结
传统的教学方法已经不能适应专业技能课的教学,它制约了学生分析问题和解决问题能力的培养,而项目驱动教学方法更加关注学生分析问题和解决问题能力的培养,同时关注学生创新能力的培养。本文对项目驱动教学法在《C#程序设计》中的教学模式进行了探索,提出了以生为本的教学模式,以一个完整的项目为教学主线,相对独立的小模块为教学内容,先上机后理论的教学方法。从而提高学生的学习主动性,增强学生的主体意识,避免了传统教学中的被动学习模式。
[1]崔群法,唐有明,王俊伟.Visual C#2008从入门到精通[M].北京:电子工业出版社,2009.
[2]吴立春.项目教学法在高职《办公自动化》教学中的应用[J].重庆教育学院学报,2008,21(3):135-136.
[3]蒋述东.高职旅游管理专业建构项目课程体系的思考[J].重庆教育学院学报,2010,23(3):45-47.
[4]王荻.项目驱动教学探索[J].2007,36:17-18.
[5]沈维政,苏中滨,赵洁.项目驱动教学法在Java语言程序设计教学中的应用[J].东北农业大学学报(社会科学版),2010,2:66-67.
[6]陆芸婷.基于工作过程的《数据库基础》课程教学设计[J].中国科技信息,2009,15:269-270.
[7]王明金.基于构建主义的项目教学法的拓展[J].安徽科技学院学报,2010,24(3):73-75.
[8]胡必波.项目驱动教学法应用研究[J].合作经济与科技,2008,14:77-78.
[9]陈玉发.项目驱动教学法在《Visual Basic可视化程序设计》课程教学中的应用[J].时代教育,2010,12:57.
[10]袁桂霞.“C语言程序设计”课程创新教学法研究[J].中国电力教育,2009,151:131-132.
[11]张志杰.“项目驱动教学法”在高职程序设计类课程教学中的应用[J].山西经济管理干部学院学报,2009,17(4):111-113.