摘 要:职业学校的程序设计类课程采用任务驱动法进行教学,在此基础上学生分组进行学习,以学习小组的形式由学得好的学生带动其他学生学习,培养学生程序制作的自我开发的能力过程中养成学生团队合作精神和工作方法,并且使程序设计教学课程能够使软件制作人才脱颖而出,适应信息产业对软件开发“精英带领团队”的人才需求。本文阐述的就是笔者应用任务驱动加分组进行程序设计课程教学的尝试。
关键词:程序设计教学 分组 任务驱动程序设计课程要求学生具有较强的逻辑思维和细心制作的能力,计算机真实地检验学生的程序是否做得出来而且有无错漏,这些要求使许多初学程序设计的学生有畏难情绪;传统的大班式教学从讲理论到上机编程验证程序的教学方法,往往使学生所做的程序达不到学习内容要求的结果,学生编程练习错漏多,学习效果参差不齐,制作软件的创造能力得不到提升,为此我们上程序设计课采用任务驱动教学法。
“任务驱动”是一种建立在建构主义学习理论基础上的教学方法,它将再现式教学转变为探究式学习,学生的学习活动必须与大的任务或问题相结合,以探索问题来引动和维持学习者学习的兴趣和动机,教师创建真实的教学环境,让学生带着真实的任务学习;在任务驱动教学法中学生必须拥有学习的主动权,教师则不断地挑战和激励学生学习取得进步。
在程序设计课程的教学中,教师采用任务驱动教学法大多是把任务布置给学生并作简单讲解后,由学生自己看书学习完成任务,学生的创新能力和独立分析问题、解决问题的能力明显提高,但这种教学法也有缺陷,主要是学生自学太多,总体学习效率较低,学生各自为证统一性差,而且没有改变不同层次学生学习的问题,鉴于这些原因,我们可把“任务驱动”和“分组”两种教学法结合起来应用,教学效果会更好。
一、分组
1、分组前的工作
分组前要对全班各个学生的学习能力和知识基础有全面深入的了解,要发现和培养学生中的学习带头人,这个过程往往要占去全部课程学习时间的1/3左右,在分组前的教学可用不分组的任务驱动教学法或讲解——上机——点评归纳的教学法,边教学边了解学生,同时教学的进行使学生打下一定的理论基础和制作技能。
2、怎样分组
一个班级有几十个学生,可分为若干个学习小组,但分组数不宜超过5组,组数太多使每组人数太少不便于对学生作统一要求,教师兼顾太多组亦会顾此失彼;每个小组要确立一至二名学习带头人作为学习小组长,同时兼顾学生间的友情和合作,方便互相学习,好中差三类学生适当搭配完成分组。
二、任务驱动下的分组学习
1、设置任务
教师精心设置任务是教学成功的第一步,如果要学习的新知识点多,我们可把教材中的每一章设计成一个大任务,再将大任务分为若干小任务,每一节又由一个或几个小任务组成;在教材和各种参考资料中会有许多练习题,任务驱动学习要求精选习题配合新知识点学习,而不是做大量习题的“题海战术”;如果已经把大多数的新知识点学完,我们就要设置综合程序设计任务,培养学生综合运用知识技能进行程序开发设计的能力。
对于同一章节的学习或同一部分内容所设置的任务,任务可准备多个,便于把任务分配到各个学习小组使用。
2、任务的分配
在分配任务到各个小组之前,教师应招集各个小组长进行研讨学习,小组长在教师的提点下提出自己学习并完成任务的思路,教师甚至可以让小组长先行去完成任务,使小组长能更好地带领全组同学完成任务。当这些准备工作做好后,就可以把任务分发到各个小组的学生中去,要让每个学生都明确完成任务要用到的新知识点和任务要求所要达到的目的,使他们有的放矢去学习并完成任务。各个小组间的任务可以相同,也可以不同。如果任务相同,在学生学习完成同一任务的过程中,教师把各个小组完成任务的优劣进行对比讲评,在各个小组之间形成竞争,提高学习效率,同时使对全班学生的统一要求达到更好的效果。如果各个小组的任务不同,可以使全班分小组学习应用不同的知识点,各个小组完成任务后进行小组之间的交叉对比学习,最终使各个小组都能完成多个任务,全班学生接触到更广阔的知识面,取得更高的学习效率。
3、任务的完成
完成任务的过程就是学生学习运用知识点进行程序设计的过程,在这个过程中学生是学习的主角,因为教师在之前已经培训了各个小组长,他们在各个小组学生学习完成任务的过程中要起到以点带面的作用,其实由已经学会了的学生去教那些正在学习的学生会有不错的教学效果。教师在这个过程中要做的就是督促和鼓励学生去完成任务,当然,对于学生的典型问题教师可以分小组或在全班进行讲解,保证不会因为“卡壳”造成学习效率的降低。
当各个小组的任务完成到一定程度时,教师要及时调用学生的程序,在全班进行演示点评,造成班级中各个小组之间一种竞争为了更好地完成任务的态势,同时也是小组之间相互借鉴学习的机会。通过这样的学习并完成任务的过程,各个学生按任务要求所做的作品既有个人的创造性,又能达到任务要求的统一标准,学生作品的水平普遍比其它教学方法要高得多。
4、任务的总结和测试
许多使用任务驱动教学法的教师并不重视对学生完成任务和学习情况的总结,认为这样做浪费学生的学习时间,其实这是一个误区。尽管教师在学生完成任务的过程中已经对各个学习小组所做的任务进行点评比较,但在每部份的任务完成后,教师再次对学生作品进行演示评价,并找出学生作品中的典型案例作为样板,进而对所学习和运用到的知识点做归纳是必要的,这样做会使任务驱动下的分组学习法的教学效果得到升华,承上启下为后继内容的学习和完成更多的任务打下基础。任务驱动分组学习法强调学生之间的互助学习,会造成一些学得差学生的依赖性,甚至有的学生把组内别人的作品抄袭复制上交了事,所以教师的还有一个重要任务就是在各个任务学习和任务制作阶段完成后对学生进行测试,这样教师才能掌握各个学生的学习情况,也使得学生看到自己的差距,激励学生把差距变成学习的动力,特别是测试后发现差生,就要由学习小组长帮助他们学习,以达到共同进步的目的。
我们在职业学校的程序设计课程教学中使用任务驱动分组学习法进行教学,包括C语言、C++、Visual BASIC和数据库等门课程,不仅在当前的课程学习上效果良好,更重要的是这种教学法对学生将来的发展有两方面的教育效果,一是“任务驱动”的使学生养成独立探索、勇于开拓进取的自学能力,又能够培养学生的团队合作制作软件的精神,这是现代IT教育培养软件制作人才的方向。二是任务驱动下分组的小组长们日后不少能够成为软件开发的佼佼者,适应软件产业对精英人才的需求。