庞尔丽
摘要任务驱动下的协作学习是学习C语言程序设计课程的好方法,教师在教学实践中通过布置任务的方式,为学生创造一个协作学习的情景,指导学生进行协作学习。
关键词C语言程序设计任务驱动协作学习
大学生计算机公共教学中的C语言程序设计被学生认为是一门难以掌握的课程,师生在教学实践中往往付出很大努力,但还是不能达到预期的效果。寻求合适的教学与学习方法是取得良好教学效果的必由途径,其中任务驱动下的协作学习尤其具有重要的实践价值。
1任务驱动下的协作学习与C语言程序设计
协作学习是一种通过小组的形式组织学生进行学习的方法,注重培养学生的创造能力、求异思维、批判思维、探索精神与合作能力。任务驱动是指教师把教学内容设计成一个或多个任务,让学生通过完成这些任务来掌握教学内容的教学与学习方法。任务驱动下的协作学习是指将协作学习与任务驱动二者有机结合起来,即由教师设计任务,学生在完成共同任务的动机驱动下结成小组,在教师的指导下完成指定任务,是教师教学方法与学生学习方法的统一。它的特点是目标性、协作性,重点是任务的设置与小组的划分。
C语言作为结构化程序设计的中级语言,它的特点是语法严谨、功能强大、程序效率高、可移植性好等,但其丰富的功能所带来的众多的数据类型和复杂的语法结构对非计算机专业的学生来讲,非常难以掌握,从而造成学生在学习过程中水平参差不齐。C语言支持模块化的程序设计,这样可以将一个程序分割成几个独立的模块并行开发。基于这些特点,笔者认为,任务驱动下的协作学习对于C语言程序设计的课程教学与学习具有特别的价值,不但可以照顾不同层次学生的学习需求,而且有利于学生的自主探究学习,同时可以培养学生的团队精神。
2任务驱动下的协作学习构想
笔者认为,教师要在教学实践中为学生创造协作学习的环境,指导学生完成协作学习任务,需要做好以下几项工作。
2.1分组
分组是进行任务驱动下的协作学习的前提。可以根据学生的兴趣爱好、专业、特长等规则进行分组。要求学生上课时必须以组为单位就坐,问题的讨论和回答也都以组为单位来进行,学生可以在小组内和小组间展开讨论。每个学生作为某个组的组成成员,他们在完成小组共同任务时是协作关系,但每个成员在组内又担任特定的任务,在完成自己的任务时又具有独立性。为了协调组内关系,需要确定一个组长,主要负责小组内任务分配、协调组内成员等工作,以保证小组内和谐共处。
2.2任务的设计与分配
教师所指定的任务是任务驱动下的协作学习的基础。教师指定任务为协作学习的展开创造了一个环境,除了平时课堂上有意识地提出一些供小组讨论解决的问题外,可以在期中、期末各设计一个任务,要求小组协作完成。任务的设计尽可能具有综合性、可分割性,保证学生既是对已学知识的综合应用,同时又可以把任务分割成几个独立的模块分配给不同的小组成员完成。
2.3教师的指导
教师的指导是协作学习得以展开的保证。教师的角色主要是信息资源的提供者,协作学习的协调者、监督者、帮助者、管理者。
2.4协作学习的评价
结果的评价是激发学生进行协作学习的动力。对学生的评价,要充分考虑协作与独立的关系,所以对每个学生的评价是将小组整体得分与组内个人得分进行综合,这样既考虑小组协作的效果,也考虑学生作为小组成员的个人成效。
3任务驱动下的协作学习实践探索
笔者对自己所教的北京师范大学生命科学学院生物技术和生物科学两个专业的2002、2003级学生采用了任务驱动下的协作学习方法,效果良好。现将其中的一次具体实践过程描述如下。
3.1分组
以宿舍为单位进行分组,组长就是他们的舍长,负责任务分配和协调组内关系。
3.2任务的指定与分配
任务为编写一个DNA信息统计程序。笔者从NCBI网站上以Genbank的格式下载了一些物种的DNA片段,并把它们组成一个文本文件,要求学生从中提取指定的信息并完成相应的统计。要求:(1)提取每个DNA片段及其所对应的物种名和序列号;(2)把提取的信息存放到另外一个文本文件中;(3)统计物种数;(4)对每个DNA片段统计A、T、C、G的百分含量。任务完成后要求以Word文档上交。这个文档包括设计思路、设计分工、设计特点等,而且要求对各模块的功能及使用方法加以说明,必须附程序源代码。最后做一个演示文稿进行任务报告、评比。在任务的设置中预含了模块的划分,这样就可以把每一个分解的任务分给小组内不同的同学完成,同时还有一个同学完成数据结构的确立与主程序的编写,最后,组长再根据每个人的特长进行其他任务的分配。
3.3指导
给学生提供一些学习资源,包括一些C程序设计论坛以及NCBI网站等。在学生每周的统一上机时间里,教师主动去机房及时与学生沟通,平时遇到问题则以E-mail的形式或面对面的形式进行讨论。同时,对协作学习中遇到的其他问题随时加以协调。
3.4评价
作业提交后,对学生的协作结果进行评估,我采用的评分规则是:个体所得分值;小组得分。(个体在组内得分/小组内所有个体得分的平均值)。小组得分是任务评比所得的结果,是小组间竞争和小组内合作的结果。任务评比时,每个小组对自己的任务进行汇报时,其他小组和教师对其打分,最后所有打分的算术平均数就是该小组最后的得分;成员的组内得分则是在组长的组织下,由所有的成员对其打分取算术平均数。
4任务驱动下的协作学习反思
笔者在教学实践中使用了任务驱动下的协作学习,虽然取得了一定的效果,但也遇到很多问题,其中既涉及到如何完善这种教学方法本身,又涉及到其与教学内容、教学大环境等的关系,这里提出自己的几点体会。
4.1分组的规则有待细化
协作学习不同于简单的小组讨论,它是一种系统的、有计划的学习方式。根据任务设置的不同以及学生来源的不同,可以采取不同的规则来进行分组。组长的人选尤其需要谨慎对待,作为组长,必须熟悉小组内每个成员的情况,必须具有组织、协调能力。组内要处理好竞争和协作、协作与独立的关系,只要这样才能既保证小组共同完成任务,又保证个体的自主学习与竞争关系。
4.2任务的设计需要技巧
任务设计既要具有综合性,能够对前面知识有系统的总结、回顾,同时又应该具有可分割性,有利于分组状态下的协作分工。组内任务的分配要有科学性,最大限度达到各尽其能。
4.3教师必须注意角色的转变及评价结果的分析
教师不是传统的单纯传授知识,而是引导学生去协作研究、完成任务。结果评价的公正性直接影响学生学习的热情,所以对学生学习的评价结果必须加以验证,教师必须监督小组间评分以及小组内成员评分的合理性,必须制定适当的约束机制。
4.4任务驱动下的协作学习的适用范围
C语言程序设计课程的教学内容是十分丰富的,教学方法的采用应当以服务教学内容为准则,并不是所有的教学内容都可以或者说都需要采用任务驱动下的协作学习,具体情况还要具体处理。