阿不来提·吉力力 艾则孜·阿不都艾尼
摘要:“项目驱动教学法”是以一个或多个项目为主线来推进教学过程,把学生需要掌握的知识点都设计并融入到项目的各个阶段环节中,学生通过自主探索和团队协作,给出完整的项目解决方案进而掌握相关的知识和获取相应的能力。作者在面向对象实践课程中运用项目驱动教学法实施教学,取得了良好的教学效果。
关键词:面向对象;项目驱动;软件实践;建构主义
中图分类号:G642 文献标识码:A 文章编号:1009-3044(2016)03-0113-02
1 项目驱动教学法
面向对象程序设计是计算机类专业的必修课程,在计算机类专业(尤其软件方向)培养计划中一直占有重要地位,是一门介绍程序设计方法和培养学生程序设计能力的重要课程,它在软件类课程体系中起着承上启下的作用。随着软件业的飞速发展,对软件人才提出了更高的要求,程序设计教学的成败直接关系到学生创新能力的培养,关系到学生是否能够适应市场的需求成为一名合格的软件人才。由于面向对象本身是一种软件开发的理念,项目驱动法符合面向对象程序设计教学的需要,是一种有效的教学形式。项目驱动教学法是近几年教学改革才出现的一种新型教学法,它源于”任务驱动”教学法。所谓“任务驱动”就是在学习信息技术的过程中,学生在教师的帮助下,紧紧围绕一个共同的任务,在强烈的问题动机的驱动下,通过对学习资源的积极主动应用,进行自主探索和互动协作的学习,并在完成既定任务的同时,引导学生进行一种学习实践活动。而“项目驱动教学法”则是指在教学过程中以一个项目为主线来展开,把相关的知识点融入到项目的各个环节中去,层层推进。通过对问题的深化或功能扩充,来拓宽知识的广度和深度,直至得到一个完整的项目解决方案,从而达到学习知识、培养能力的目的。它是一种建立在建构主义教学理论基础上的教学法,它要求“项目”的目标性和教学情境的创建。这种教学方法使学生带着真实的项目目标在探索中学习,并且这个过程中,学生会不断地获得成就感,可以更大地激发他们的求知欲望和学习兴趣,逐步形成一个感知心智活动的良性循环,从而培养出独立探索、勇于开拓进取的自学能力和良好的分析问题和解决问题的能力。它将以往以传授知识为主的填鸭式传统教学理念,转变为以解决问题、完成任务为主的多维互动式的教学理念;将再现式教学转变为探究式学习,使学生处于积极的学习状态,每一位学生都能根据自己对当前问题的理解,运用知识和自己特有的经验提出解决方案进而解决实际问题。
2 课程内容的组织
我们在面向对象程序设计方面安排了两门课程,一门是面向对象程序设计,它重点讲解面向对象程序设计的理论知识并用C++或Java语言为例具体分析OO(Object-Oriented)的一些概念,例如:类、抽象类、具体类、对象、构造函数、析构函数、输入/输出流、友元、类模板、重载、封装、继承、派生、多态性和虚函数等;另外一门课程就是程序设计综合实践,这门课程是面向对象程序设计的后续课, 属于实践类课程,假期在机房连续集中授课,我们主要就是在这门课程中应用“项目驱动教学法”实施教学。这门课程的主要教学目标是加强学生对面向对象程序设计理论知识的理解并能够用OO的思想去分析和解决问题;初步学习并掌握使用UML统一建模语言去对一个工程或软件进行分析、总体设计和详细设计;初步了解软件工程的流程并通过项目实施去体验整个软件的生命周期;初步接触并使用MFC类库和掌握构建基于Dialog based的工程项目;训练学生使用STL标准模板库中的一些容器、迭代器和相关算法;初步了解软件测试的基本常识和简单方法。
3 项目的选择和项目驱动的实施
为了把课程的教学内容体现在具体项目的各个阶段和环节,我们设计了三个项目。项目一是简单人事信息管理程序;项目二是简单银行存取管理程序;项目三是简单英汉字典程序。课程开始就要求学生自己进行分组,每个小组3-4人,整个课程都是以小组团队的形式进行项目实施,最后也是以小组的形式进行考核。整个课程分为两个阶段。
第一阶段就是示范项目的讲解和实施。其中项目一简单人事信息管理程序就是示范项目,我们给出了项目的要求和目标并向学生提供了详细的项目分析、设计、实现、测试文档和可执行的运行界面(如图一所示),示范项目是教师逐个步骤的带领学生去完成的,所有的分析、设计和测试文档(不包含源代码)都提供给学生了,学生只需要按照教师的指导和文档逐个步骤地推动项目的实施,使用照葫芦画瓢的方法就可以完成项目。学生在被引导实施项目的过程中,很自然地就掌握了需要学习的知识、锻炼和提高了编程技能和分析能力。
第一阶段的实施也分为几个步骤:首先教师给出项目的要求和功能目标,把项目实施过程中需要用到的新知识进行讲解。
然后教师就根据软件工程的流程,逐环节地带领学生对示范项目进行需求分析、用visio画用例图;设计数据类、界面类的静态结构和类之间的动态交互以及接口;对于类的一些重点方法进行详细设计给出算法流程;对于编码中一些技能技巧也在合适的时间传递给学生。在讲解示范完每一个环节,都给学生一些时间重复完成我讲解的内容。
在完成示范项目的过程中学生仍然会碰到许多问题,在这个时候,教师并不是直接告诉学生解决办法,而是鼓励学生自己通过查阅MSDN或者上网搜索类似问题和相应的解决方法,这样可以锻炼学生把需要解决的问题提炼成若干个关键字,然后对搜索到的方法进行快速判断选择,从而找到正确的解决办法。
示范项目实施过程中教师教和学生学是相互穿插交替进行的,教师采用一环扣一环、多个任务驱动的方式使学生能够实现主动、探究式的学习,使学生在每一个阶段都有明确的学习目标和方向,这样不仅取得了良好的教学效果,还非常有效地激发了学生的学习兴趣。
课程的第二阶段称为自主项目实施阶段:在完成了示范项目之后,每个小组在项目二和项目三之间选择一个项目以团队协作的方式,只要完成项目的功能,团队可以自由发挥地分析、设计和选择编程方法。每个项目都有需要完成的程序功能目标,学生需要在了解既定目标的情况下,对项目进行需求分析并用UML的用例图进行描述;接着使用UML的类图、类之间的静态关联和动态交互图以及功能活动图进行程序的总体设计;然后对每个类的关键方法进行详细设计并给出算法描述;接着用c++语言实现所有程序功能并集成;最后使用简单测试方法对程序进行功能测试和性能测试并给出测试用例和文档。自主项目实施的过程,每个小组的组长和组员们一块统筹分配任务,有的小组成员水平差不多,则以项目功能模块来对项目进行分工,每个成员负责某几个模块的分析、设计和实现工作,最后再将各个模块集成汇总成整个项目。而有的小组成员能力有些差别,他们就根据每个人擅长的特点进行分工,编程能力强的同学负责设计和编码,其他同学负责测试、文档和UML绘图等辅助工作。在这个阶段,教师不过多参与到学生的项目中,只是从旁在适当的时候给各个小组提出一些建议和必要的时候提供一些帮助。这就要求教师对每个小组的项目实施进度和情况有充分的了解,要做到这一点是非常不容易的,尤其是学生数量比较多时。
4 课程考核和教学效果
实践类课程采用传统的闭卷考试的方法考核学生显然是非常不恰当的,为了更好的激发学生动手的积极性,我们综合考虑两个阶段的项目实施情况进行评价,示范阶段的实施情况作为平时成绩,主要判断标准是是否每个步骤都根据老师的要求完成了相应的项目任务,最后是否得到了和预期一样的程序可运行结果。而自主实施阶段则根据小组团队协作情况和最后的模型、文档、源码三个部分项目成果对小组进行考核评价。
面向对象程序设计实践课程在经过几年的“项目驱动教学方法”教学实践后,学生在面向对象分析和设计的能力、编程技巧方面、团队协作的意识、综合分析问题和解决问题的能力都得到了很大的提高,同学在课程体会中写到:在项目设计与探究的过程中,我们遇到了各种各样的问题。在解决问题的过程中,不仅对程序起到了改善和优化的作用,更重要的是学会了许多程序设计方面的知识,让我们获益匪浅。
5 总结
项目驱动教学法在面向对象程序设计实践类课程中的应用突破了传统的教学模式,极大地激发了学生的求知欲和主动探究的学习意识,是一种以教师为主导、学生为主体的教学模式的有益探索,在今后的教学研究实践中,我们将把这种教学方法在更多的相关课程中尝试和探索。
参考文献:
[1] 孙玉红. 案例教学法在“面向对象程序设计”课程中的运用[J].电脑知识与技术,2011,7(7):1703-1704.
[2] 韩明慧.《面向对象程序设计》课程教学模式探索[J].职业教育研究,2001(2).
[3] 刘瑜,孔波,杨玫.建构主义指导下的面向对象C++教学[J].福建电脑,2009(10).
[4] 柯胜男,黄明和,雷刚.基于“项目驱动”的教学研究与探索[J].教育与教学研究,2007(4).