郭克华,奎晓燕,雷 皓
(中南大学 信息科学与工程学院,湖南 长沙 410083)
程序设计课程是计算机相关专业学生提高动手能力,提升实践技能的重要内容。近年来,如何提高学生的学习效果,成为教学教改研究的热点问题;而在实际教学的过程中,如何让学生掌握复杂知识点,是授课教师面临的重要问题。对于复杂知识点教学方法的研究,已经在高校程序设计课程教学中起到了越来越重要的作用[1]。复杂知识点一般分布在程序设计课程的高级模块中,这些知识点往往实践性较强,教师备课较为复杂,需要课外花一定时间才能掌握,而由于课时量的限制,仅凭上课时间,无法很好地完成知识的讲解。类似的知识点有Java Web程序设计中的“Ajax”、JavaEE程序设计中的“轻量级框架开发”“EJB”等。
因此,提升复杂知识点的教学效果显得非常重要,但是传统的教学方法,对于复杂知识点的教学存在课时量不够、学生畏难情绪导致主动学习动机减弱、备课工作量较大、作业难以评估的问题。如果还采用传统课堂讲授、课后作业的教学模式,可能导致部分学生无法清楚地掌握知识的实质,了解原理却无法开发,造成了教学资源的浪费[2]。
任务驱动式教学法是翻转课堂的一种有效组织方式,该教学方法的思想基础是以“任务”为中心,通过让学生完成“任务”来让学生学会理论,而不是直接让学生来学习理论并进行讲解,对学生任务的完成设计完善的量化评估体系,激发学生兴趣,培养其自学能力和创新精神。
在程序设计课程中,复杂知识点不仅对于学生是学习难点,而且对于教师也是讲授难点。一是课时量的问题,复杂知识点的讲解,需要较多的背景知识,利用有限的课时,将其讲透较难;二是学生主动性不够的问题,学生在对复杂知识点的理解上,如果难度较大,则会导致部分学生上课失去主动学习的兴趣;三是备课工作量的限制,有些复杂知识点,需要进行预先开发原型系统,教师工作量较大;四是作业难批改,复杂知识点布置的作业,一般都有一些规模,教师难以针对具体情况进行评分。
如果采用传统课堂讲授、课后作业的教学模式,会出现较大问题:首先从教师方来说,在课时量的限制下,无法深入讲解,只能从教案的美观、课堂的生动、视频课程、开发师生交互平台等方面下工夫;但从学生角度,如果上课无法接收有效的信息,就会完全变成被动学习,出现大量学生不听课、玩手机、睡觉的情况,顶多关注一下教师讲的一些故事。虽然理解了皮毛,课后还是无法进行开发。
理想的课堂应具有如下特征:学生的价值得到体现;学生的激情得到激发;学生不仅学知识,还锻炼集体感、口才、合作度等综合素质;学生能学会老师没教到或者不会的知识。因此,我们将传统的“课堂学习—课后复习”,转换为“课前预习—课上讲解—完成任务—最终答辩”的模式。在这种情况下,教师和学生的功能转换见图1。
图1 任务驱动教学法中教师和学生的功能
值得一提的是,任务驱动式教学不同于传统项目式教学[3],项目教学一般以整个项目为背景,可能到了课程末尾才能完成项目,而任务驱动式教学,任务嵌入在课程之中;任务驱动式教学也不同于传统分组讨论和教学[4],任务驱动式教学中,学生只参与项目开发和自己项目展示,不讲解理论知识,理论知识点仍由教师讲解;任务式教学也不是课程设计,而是贯穿于理论课教学中的小型任务。
表1是一个任务驱动式教学法的一般组织过程。
每个任务,学生课后学习投入的时间约8~10小时,一般分为3~4人1组。任务驱动教学的精髓为:解决实际问题、燃起学生兴趣、培养学生自学能力、给学生展示机会。由于任务比理论更加容易被学生了解,并且任务可以复制,支持不断迭代更新,一次设计,后期减少劳动量,可以降低教师备课的负担,也提高学生的参与度。
表1 任务驱动式教学法的组织过程
在对教师的要求上,若对内容足够熟悉,完成任务驱动式教学不难,关键在于任务的设计和学生的参与;特别是针对程序设计课程,完全采用案例教学也不难,因为程序设计课程本身就是要解决实际问题。
在课程的组织上,教师需要考虑如下问题:①任务的设计:需设计相对简单的任务,1~2周的周期之内能够完成;②基础理论的讲解:能够较清楚地讲解基础知识,推荐纯编程教学模式,知识讲解应紧贴任务;③课时量:任务驱动式教学方法理论上延长传统教学方法课时1.5倍左右,课时可能不够,因此,可将演示改为在实验课上进行,实验室需安排投影仪等设备;④成绩评定:可以给组打分,与组内评分相结合,保证公平性,在助教充足的情况下,可以考虑每个学生进行演示。
笔者以JavaWeb程序设计课程为例来阐述这个问题。JavaWeb程序设计是高校程序设计专业的一门专业选修课,对于从事基于Java的Web应用开发并从事Web智能研究的学生,是一门基础性课程。该课程学习之前,学生已经学习了JavaSE的基本知识和基本的HTML、JavaScript语法以及常见的系统配置方法。以笔者2016年出版的《JavaWeb程序设计》[5]为例,该课程中较为复杂的知识点列于表2中。
表2 JavaWeb程序设计中的复杂知识点
针对以上5个复杂知识点,可以设计出整个课程周期中的5个重要任务,见表3。
每个任务在相应学习之后可以安排。表4以任务2为例,描述了该任务的安排。
为较好地激发学生的学习兴趣,一般3~4人分为1组。必须与学生明确:任务完成情况与成绩挂钩、建立团队荣誉感、必须较好地完成自学内容、在较短时间完成项目展示、时间不够的,可采用视频等方式展示。
每组评分标准如下:①功能性,主要考察所有功能是否实现;②界面友好性,主要考察界面是否具有较好的用户体验;③展示的组织,主要考察PPT是否清晰,语言是否流畅得体。具体可根据任务的难易程度进行分值比例权重的调整。
如果遇到任务需要持续1周以上的情况,可以在任务布置后接下来的1周继续讲课,答辩向后延续。成绩的评定上,每组答辩10分钟,可由其他组组长进行打分最后平均。遇到大班的情况,可以每组答辩10分钟,分好几个群同时答辩,此时需要较多的助教参与。为避免大班情况下各群标准不一的问题,可建立适当的标准将群组分数归一化到同一个值。在组员的赋分上,可将组内的分数由组员自行分配,平均分保持不变即可。
针对任务驱动式教学方法,我们也设计了实验,随机抽取2个班的本科学生,一个班(A班)采用“任务驱动式教学方法”,一个班(B班)采用普通方法,表5显示了问卷调查和期末考试的结果。
表3 针对5个复杂知识点的任务设计
表4 任务2的安排
表5 实施效果
从以上表格中可以看出,在采用任务驱动式教学后,学生评教,表示压力大,但满意度广泛提高;学生满意度中,案例教学满意点凸显度最高;不过,期末考试班级平均分并未提高,高分(近满分)学生反而减少;但是,不及格的学生数量减少了,极低分学生也减少;学生参加创新活动、竞赛的比例显著提高。虽然并未起到提高班级考试卷面平均分的作用,但提高了满意度,降低了差生率,提高了学生的创新创业能力。
任务驱动式教学法取得了较好的效果,但是也存在以下几个问题。
(1)不能设置太多的任务,也不能设置太难的任务;32学时的课程,3~5个案例即可;每个案例在1~2周必须能完成。
(2)必须重视学生价值观的引导,具有展示积极性的学生在大多数,不积极的学生也会受到正面影响。
(3)任务驱动式教学方法不适合大班上课,30人左右最好,60人左右就比较困难;如果对课程不熟悉或者不耐心组织,可能会导致无续情况的出现。
任务驱动式教学法以“任务”为中心,通过让学生完成“任务”来让学生学会理论,借助完善的量化评估体系,可激发学生兴趣,培养其自学能力和创新精神。实践证明,该教学方法能够加强学生对知识的理解,培养其综合素质,取得了较好的教学效果。