基于“卓越工程师”培养目标的Java教学模式
2013-12-29桂冰
摘要:针对“卓越工程师培养计划”中工程和创新能力培养目标,通过实际对比Java课程不同教学模式产生的效果,探讨理论与实践并重的教学方法,总结项目式Java程序语言课程的关键改进环节,利用合作企业的项目资源考核学生的理论及实践能力并验证教学改进的实际效果。
关键词:Java课程;理论与实践并重;工程和创新;教学模式
文章编号:1672-5913(2013)03-0093-04
中图分类号:G642
强化培养学生的工程和创新能力是“卓越工程师培养计划”的特点之一。工程能力亦称生产技术能力,是人们将科学知识或技术发展的研究成果应用于生产过程的能力。创新能力则是探索未知领域和对已知领域破旧立新的研发能力。因此,“卓越型人才”必须兼具应用与研发能力。当前基于“卓越计划”的课程改革往往过于侧重应用型人才培养,在课程设置上也过于案例化、项目化和实践化,导致学生在实践应用过程中知其然而不知其所以然。然而,创新的过程是基于客观规律和科学理论的,扎实的理论基础才是学生进行创新研究的原动力。如何令实践应用充分围绕理论知识并权衡实践与理论教学的尺度,是笔者针对Java课程改革所要讨论的问题。
1 理论型与实践型教学的对比
为了实际了解理论教学与实践教学的授课效果,笔者以上海应用技术学院软件工程专业2个班级的82名学生为调查对象,对Java课程同一章节的2种教学方法产生的教学效果进行对比。此章节为Java程序语言中具有代表性的面向对象编程技术。教学方法是教师对其中一个班级(理论班)进行传统的课堂理论授课,详尽讲述继承和多态的概念并布置相关内容的课后作业;对另外一个班级(实践班)则采用实践教学的方法,以银行账户管理系统为项目案例,讲述继承和多态的概念并让学生完成程序的编写和调试。教学效果的对比采用在不提前告知学生的情况下布置小型项目以测试学生掌握情况的形式。测试项目为继承和多态的典型应用案例,如编写形状父类并派生出矩形、圆及三角形子类,然后使用多态的方法计算各形状的面积,规定完成的时间为1课时。测试采取闭卷的形式。
根据测试结果,学生掌握的情况大致可分为完全掌握(完整可运行程序)、部分掌握(能写出父类、子类或多态的方法,但程序无法正确运行)和没有掌握(无法正确写出任何程序)。教学情况统计如表1所示。
完全掌握的学生中,实践班的人数多于理论班。我们进一步分析这些学生的答案后发现,实践班15名学生基本以课堂案例为模板进行程序功能的修改,因此程序相似度很高;而理论班的5名学生运用继承和多态的概念,从项目要求出发编写具有个人特色的程序,因此程序相似度很低。显然,从教学效果上来说,理论教学相较实践教学更适合培养具有应用创新能力的人才;而从对比的数据结果来看,理论教学只适合少部分拔尖学生,实践教学则更易于被学生接受。
部分掌握的学生中,理论班的人数多于实践班。从这部分学生的答案中发现,理论班中的大部分学生能够正确地定义父类、子类或多态,却无法根据项目要求写出完整的程序;而实践班学生的错误大多是由于死板或错误地套用课堂上的案例所造成的,学生对于案例背后的理论知识一知半解。完全没有掌握的学生出现问题的原因与部分掌握学生出现问题的原因类似,即实践应用缺乏理论支撑,理论运用缺乏实践指引。
由上述对比结果可见,2种单一的教学模式均无法获得良好的教学效果。那么,是否结合2种教学模式就能取长补短并提升教学效果?笔者就此问题进行如下探索。
2 理论结合实践教学的探索
理论结合实践的教学模式已被广泛应用于Java课程的教学。使用较广泛的模式有以下2种。1)非项目模式。教学以理论授课作为主要内容,结合幻灯片等多种手段分析小型案例,进行代码的演示与讲解,并在理论课之间穿插实践上机课程,以帮助学生巩固课堂理论知识并进行实际应用。2)项目模式。教学以实际项目作为驱动,从开始授课就为学生布置项目任务并根据Java课程的各部分理论将项目划分为模块,结合教学进度让学生分阶段进行各模块的开发,逐步完成整个项目。
2.1非项目模式教学
非项目模式教学是理论型教学模式结合实践教学的一种改进,采用的教学方法依然是以教师为主的讲授式教学,辅以实践课程帮助学生理解和应用理论知识。Java语言课程理论知识众多,在非项目模式教学中,理论课与实践课的课时比例一般为2:1或3:1。充足的理论课时使任课教师能够详尽地讲解Java的各类基础理论,可以为学生应用Java程序语言完成各类Java软件开发打下扎实的理论基础。然而Java程序语言中必然存在枯燥且抽象的语法、定义和概念等,一些自制能力较差和对困难准备不足的学生在面对不断出现的抽象知识时会产生厌烦和畏缩心理。
此外,由于实践课时的限制,在实践项目的安排上,非项目模式教学一般以课本例题或具有理论针对性的案例为主。虽然此类实践项目具有理论针对性强以及答案可控性高的优点,但由于案例的片面针对性,使实践项目缺乏实用性。学生学会的只是简单应用某特定知识点,对于相对复杂且综合性知识要求高的系统开发依然无从人手,从而产生“学习这门课程做不出任何有用软件”的挫败心理,打击了学习积极性并产生应付考试的不良学习态度。
2.2项目模式教学
针对上述问题,笔者对上海应用技术学院卓越工程师试点班的38名学生采用项目模式的试点教学,期望通过开发具有实际应用价值的小型项目让学生了解Java程序语言的实际用途,激发学生的兴趣并帮助学生明确学习目标,从而改善非项目模式存在的问题,探索适合培养“卓越工程师”的教学模式。
在试点教学开始前,笔者首先需要确定实践项目的内容。考虑到试点班学生将在最后1学年进入合作企业(塔塔信息技术股份有限公司)接受培训,因此实践项目小规模地模拟了该企业的主要开发产品——ERP系统,名为企业货物进销存管理系统。该项目涵盖Java程序语言的主要知识点,包括程序流程控制、数组、类和对象、系统类、输入输出系统、GUI图形界面设计、数据库操作等。同时,该项目各模块关联教材各章节的知识点,也为学生明确了各阶段学习的目标。
在课时安排上,为了保障项目开发所需的时间,笔者将理论与实践课时调整为各占50%;同时,考虑到学生已具备C++、数据库等先修课程的基础,因此在理论课中尽量减少纯理论知识的讲解,着重以项目和程序案例代码讲解为主。目的是让学生对案例化的理论知识产生直观的应用感受,进而逐步将代码中具有特例性的知识内容泛化,归纳为教材中的抽象理论,从而使学生在知识转化的过程中学到知识,而并非单纯地记住知识。
值得注意的是,在试点过程中,笔者发现项目模式的授课计划不能依照教材中的目录顺序制订。以试点项目为例,完整的管理系统开发一般从数据库操作出发创建项目,进而设计系统的模块类和GUI图形界面,并在开发过程中使用流程控制和数组等一系列Java程序语言内容。因此,项目模式的教学必须根据项目开发的流程,安排教材中各章节内容的先后授课次序。实践证明,这样的授课计划有利于实践课程的顺利开展,减少学生由于学习枯燥理论而产生的厌烦情绪。根据试点班学生的反馈得知,在实际开发项目的过程中,许多具有创造性的想法是无法通过套用案例实现的。此时,他们会回顾理论课的授课内容并通过教材或互联网探索适用的理论知识,每当成功运用理论知识实现想法时,都会产生豁然开朗的感受,从而对融会贯通并灵活应用理论知识的重要性有了更深刻的认识。
项目开发需要团队,更需要积极向上的团队,不合理的团队组合会造成学生的依赖性,甚至有些学生根本不动手实践。在试点中,考虑到同寝室学生交流机会多和生活规律类似的特点,笔者将团队以寝室为单位进行划分,同时根据个别学生的要求进行微调。为了调动团队每位学生的积极性和责任心,笔者采用根据项目模块轮换组长的机制。每次轮班的组长负责安排各组员的职责和工作,组织讨论模块需求和设计方案,统筹书面的工作计划、设计方案和模块代码。学生在组长和组员角色的轮换中,纷纷感受到作为组长的压力和责任、作为组员协同合作的重要性以及自身努力对于整个团队的影响。在每一次的模块开发中,组员间相互激励并相互约束,分享成功的喜悦,增进了集体荣誉感以及学习的主观能动性。
当然,除了学生自身的努力以及团队的协作外,教师的指导和引领也至关重要。笔者在试点教学过程中发现,对于一些知识点涵盖量大和逻辑性强的模块,教师需要启发学生思路,指导学生运用知识,准备相关的资料并及时与学生进行交流,从而时刻掌握项目开发的进度,避免学生犯不必要的错误。此外,在理论授课中,教师应根据项目开发进度对内容作针对性的调整,着重纠正开发过程中出现的错误,从理论层面分析错误的原因,配以相关案例启发学生找到正确的解决方案。
项目的考核采用教师模拟客户的形式,从程序的强壮性、功能性以及友好性等方面对软件的质量进行评判。从项目的整体质量评判团体分,并参照各模块中分工和职责的难易度评判个人分,进而得出综合分。在总评分方面,将项目分纳入考核成绩中,并将其所占分数比例提高到50%,真正在成绩上反映出实践和理论的并重。
3 项目式Java程序语言教学的关键环节
通过实践探索,笔者可以对本文第1节最后提出的问题作出肯定回答,即实践结合理论的教学方式可以提升教学效果,但前提是必须把握如下几个重点环节。
1)实践项目内容的选取。Java程序语言的应用极为广泛,案例项目众多。在项目的选取上必须注重内容的实用性和趣味性、知识的涵盖量以及开发的周期。选取合理的项目,可以激发学生的兴趣,加深学生对理论知识的理解,为学生运用创新思维创造空间。
2)授课计划和课时的安排。多数情况下,项目模式教学方法需要更长的实践课时,这就导致理论课时的缩减。因此,在授课计划的制订过程中必须精炼理论课的内容。教师可以根据学生对于C++等类似于Java程序语言的课程掌握情况以及理论与实际项目的关联程度,针对性地筛选授课内容,并在理论课中通过案例教学加深学生对抽象理论的理解,在实践课中培养学生从项目开发中归纳泛化理论知识的能力。
3)团队的组织。由于学生之间存在着学习习惯、生活习惯、兴趣爱好等差异,团队的组织应从学生的主观意向出发,让关系较亲近的学生组成一个团队,这样有利于团队凝聚力的培养。此外,教师可在项目开发过程中创造客观条件,培养团队中每位组员的主观能动性,安排每位学生轮流扮演组长和组员的角色,让学生感受组长工作的难度,体会组员协同组长工作的重要性,在团队工作中培养集体荣誉感和责任心。
4)教师的作用。Java程序语言是一门应用性强和理论多样的课程。学生容易对日渐增多的理论产生厌烦情绪,更容易在屡次失败的实践中丧失学习信心。因此,教师需要把控课程的进度,突出每一次授课的重点,避免照本宣科。对于较难的抽象理论,教师需结合趣味性强且实用性高的案例以帮助学生理解。同时,教师必须及时对学生遇到的困难和问题进行指导,可用相似例子或相关理论启发学生思路,鼓励学生通过自己的努力解决问题。此外,对于授课的内容,教师应根据学生对于实践和理论的掌握情况进行调整,尤其应针对学生对理论理解的偏差以及在实践中出现的错误,及时进行分析和纠正。
5)考核的方式。除了传统的以试卷形式考核学生对于理论知识的掌握情况,实践项目的完成情况同样应作为考核重点。实践项目的考核应合理评估学生的实践应用能力,让学生理解实际应用的重要性。教师在考核中需大幅增加实践成绩的比例,在实践评分中除了需要根据项目的完成情况给出团队成绩外,还需要根据每一位学生阶段性的工作量、工作难度、团队贡献等,综合评判学生的个人成绩。
4 企业参与的合作人才培养
检验上述教学模式好坏的最好方式是让学生面向社会,接受企业对他们能力的检验。“卓越工程师培养计划”也重点提出学校与企业合作培养的要求。利用企业资源,将企业培养纳入教学环节是提高Java程序语言课程质量的关键。
以上海应用技术学院的合作企业(塔塔信息技术股份有限公司)为例,该企业以Java作为主要程序开发语言,具有众多的项目开发小组,是学生检验和发挥所学知识的理想平台。合作过程中,企业培养由专任的培训人员负责,根据企业项目的需求,对学生Java程序语言的应用能力进行强化培训,采用面试的方式对学生进行考核。只有符合企业能力要求的学生才能直接进入项目小组进行程序开发,而不符合要求的学生则需要接受进一步的培训。这种“优胜劣汰”的模式能够让学生提前感受到社会的竞争压力,对于实现学生从毕业到就业的“零过渡”具有很大益处。
此外,与学校的项目开发方式不同,企业化的项目管理涉及一系列的需求文档、规格说明、测试准则等,具有高度的规范性和严谨性。小组中每一位项目组长均由经验丰富的开发人员担任,对于组员的管理、工作职能安排、开发进度跟踪均有独到之处。学生通过比较自己在校内项目中的管理和开发方式,很容易就能找到自身的不足之处,迅速明确努力的目标和方向。同时,企业中的学生也是员工,需要对自己编写的程序和工作进度负责。对于无法完成工作安排的学生,企业除了进行培训指导以外,还必须根据企业的相关条例对其进行相应的处罚。严格的企业化管理会给学生造成压力,但同时也促进学生自学、自律、团队合作等综合能力的培养。
笔者从企业的反馈中得知,相较于传统教学模式培养的学生,新教学模式培养的学生能够迅速理解开发项目的需求,掌握相关知识的应用,明确自身在团队中的职责,完成项目开发的任务。更可喜的是,多名学生在完成培训后直接被合作企业聘用,这是对学生能力最有力的证明,更是对教学模式改进效果的肯定。
5 结语
通过对项目式教学以及校企合作培养的探索与实践,笔者总结出权衡理论与实践的教学模式,有效地提高了学生的工程与创新能力。上海应用技术学院将软件工程专业列为“卓越工程师培养计划”的首批试点专业,将积极深化这一新的教学模式,通过加强与企业的合作,进一步完善这一教学模式中的关键环节,从而更好地培养创新工程能力强和适应社会发展需求的高质量人才。
(编辑:宋文婷)