指向计算思维能力培养的任务驱动式编程教学研究
作者: 杨铅
摘要:本文基于计算思维三维框架(计算概念、计算实践、计算观念)和任务驱动法的任务分类(封闭性任务、半开放性任务、开放性任务)构建面向计算思维培养的任务驱动式编程教学模型,并以“火柴棒摆数字”问题为例进行编程实践。实践证明,通过该模型进行教学对学生的计算思维有一定的促进作用。
关键词:计算思维;任务驱动;Python编程
中图分类号:G434 文献标识码:A 论文编号:1674-2117(2024)24-0058-04
问题的提出
随着《普通高中信息技术课程标准(2017年版2020年修订)》的落地,计算思维的培养和贯彻已成为全学段的教学目标。因此,信息技术课程应从“知识本位”转变成“育人为本”[1],不再仅仅注重操作性的知识习得,更要注重培养学生的核心素养,特别是在编程教育中培养计算思维能力显得尤为重要。
具身认知理论认为,学习是一个心智、身体与环境间保持动态平衡的过程,强调认知的情境性和身体性。[2]因此,在高中信息技术课堂教学中,教师应创设真实的问题情境,并设计层层递进的实践任务,帮助学生形成连贯的学习内容和提升计算思维能力。而信息技术课程中最常用的教学方法是任务驱动法,即学生根据恰当的任务设置,在协作探究式学习中激活思维,运用已有的知识技能并结合新的知识去完成任务。所以,面向计算思维培养的任务驱动式教学就是为了使学生在真实的问题情境中学习,通过实践任务形成连贯的知识体系,并在解决问题的过程中发展计算思维能力,为学生的终身学习和未来职业发展奠定坚实的基础。
教学模型构建
1.计算思维的三维框架
在教育教学过程中,对教学目标的设定往往围绕知识与技能、过程与方法、情感态度与价值观三维目标展开。而在计算思维众多定义中,与三维目标较为呼应的是2012年美国麻省理工学院媒体实验室(MIT)终身幼儿园研究小组(Lifelong Kindergarten Group)开发出的计算思维三维框架,它包含了三个维度:一是计算概念,指编程中使用到的概念,如顺序、循环、事件等;二是计算实践,指编程完成作品的过程和方法,如递增和重复、测试和调试、再利用和再创作等;三是计算观念,指编程后人格塑造和思维习惯的学习结果,如表达、联系和质疑。[3]教育教学的三维目标和计算思维的三维框架在核心理念中呈现了高度的契合性,知识与技能的培养实则为计算概念的学习,过程与方法的培养实则为计算实践的训练,情感态度与价值观实则为计算观念的培养,这种对应关系印证了计算思维三维框架的全面性和科学性。
2.任务驱动法的概念及任务分类
任务驱动法就是教师将教学内容融入到任务中,学生在完成任务的动力驱动下,通过对学习资源的积极主动应用,进行自主探索和互动协作学习,并在完成既定任务的同时,进行知识的意义建构。任务驱动法的特点可以概括为以任务为主线、以教师为主导、以学生为主体,确定任务是核心,怎样驱动是关键,信息素养是目的。[4]根据任务的开放程度可以将任务分成封闭性任务、半开放性任务、开放性任务。[5]在编程教学中,封闭性任务表示的是答案唯一的情况,如教师通过预设好的问题让学生学习新的编程概念和知识;半封闭性任务表示的是答案不唯一但有参考的情况,如学生根据已有的代码进行完善或者改写;开放性任务表示的是答案不唯一且没有参考代码,学生需要自主设计算法并完成代码的编写。因此,三种不同任务的使用场景以及学习目标各有侧重,需要适时设计与应用。
3.面向计算思维培养的任务驱动式编程教学模型构建
笔者根据计算思维的三维框架、任务驱动法中的三种任务以及编程教学的实际情况构建了教学模型,具体内容如图1所示。
教学模型实施
教科版《必修1 数据与计算》主要的教学内容是围绕Python语言展开,下面,笔者以第二单元中《可以复用的代码》一节中的“火柴棒摆数字”为例进行说明。
1.教学目标设定、真实情境导入
在《可以复用的代码》一节中,学生需要了解函数的作用、使用函数的定义和调用方法,因此笔者将项目目标设置为:用函数定义的形式编写代码,解决火柴棒摆数字的问题。在常规教学中,教师通常以直接讲授知识点的方式引导学生进入学习模式,但这样会使很多学生无法跟上学习进度,从而失去学习兴趣,而生动的情境能引起学生积极的情绪体验,使其更好地投入到学习中。因此,教师可以创设真实的情境,引导学生用实物火柴棒摆数字,使学生通过对实物进行操作,提升学习兴趣。
2.任务驱动设计、合作探究学习
用火柴棒摆0~9十个数字分别需要多少根火柴棒?对于这个问题,教师可以将具体的数字存入列表中,通过对列表的操作调用所需的火柴棒数,学生比较好理解,但是对于任意自然数所需要的火柴棒数以及固定数量的火柴棒数可以摆出的自然数的问题,学生较难理解,因此,笔者设置了分层次的驱动性任务,让学生在从易到难的探究中习得知识。
(1)封闭性任务设计——一位数所需要的火柴棒数
一位数需要的火柴棒数只需要调用列表的内容即可,列表的小标正好对应数字,而列表的内容正好对应该数字所需的火柴棒数,所以先定义列表,然后调用列表即可求出一位数需要的火柴棒数,这段代码可以让学生复习“代码的定义及调用”。但是本节课是学习可以复用的代码,所以需要将一位数需要的火柴棒数的代码定义为函数,并且输入一位数进行调用,“?”表示要求学生填写代码的部分,主要学习“函数定义的关键词def”和“返回值return”以及“函数调用的代码”,具体代码如图2所示。
(2)半封闭性任务设计——6根火柴棒能摆出的自然数
对于6根火柴棒能摆出的自然数,学生需要将问题进行分解,即先确定6根火柴棒能摆出的自然数的最大值111和最小值0,然后判断这些数字哪些是需要6根火柴棒的,这样就将问题转换成了任意数需要的火柴棒数,从0到111建立循环,对每个数都要判断需要的火柴棒数是不是等于6,这就需要定义函数,学生体会到了函数的应用和使用场景。既然要求任意数需要的火柴棒数,其实可以分解为一位数需要的火柴棒数,那么只需要将任意数的每一位数字进行拆解,然后对需要的火柴棒数求和即可(如图3)。在这个过程中,学生通过探究,根据一位数所需火柴棒数的代码以及数字分解的代码,自主完成6根火柴棒能摆出的自然数代码的编写。
(3)开放性任务设计——摆出特殊的数所需的火柴棒数
开放性任务中不提供参考代码,学生根据已学的知识进行自主探索。首先,学生确定要摆出的数字类型,如水仙花数、四叶玫瑰数、五角星数等,然后查询该数的特征,并且定义判断符合数字特征的函数。接着,基于前面火柴棒摆数字掌握的知识,学生尝试编写当前程序,并且调试运行。
3.学习交流评价、代码调试优化
在编程教学的实践中,每个学生都积极投入到编写代码解决实际问题的过程中,所以最终每个小组都会形成Python代码作品集。在每一个任务完成之后,学生会在编程记录上记录代码调试过程、出现的新问题以及解决问题的过程,最后还会对Python作品进行评价(自评、互评、教师评价),每个作品根据自评、小组互评和教师评价的分数记录平均得分以及修改意见,每个小组根据修改意见对自己的代码进行调试和优化,使其更加完善和高效。
教学模型应用
通过为期一个学期的教学实践,笔者从计算概念、计算实践和计算观念三个方面对学生计算思维的发展进行分析。①计算概念。对Python基础概念的前后测试的平均分进行分析,从变量与数据类型、判断与循环、队列与栈、迭代与递归五个方面设计测试卷,满分设置为100分,教学前后学生的平均得分从35分提升到了85分,可以说明在教学前学生几乎没有任何编程基础,在经过一个学期学习之后,对Python的基础概念有了较好的掌握。②计算实践。在教学过程中,笔者每节课都收集学生的Python作品,并结合学生的编程过程记录单和作品评价单对学生的编程行为进行分析,发现学生在写代码前会对自己的作品进行整体设计,在编程过程中也会不断地迭代改进,大多数学生能独立思考并解决调试过程中遇到的问题,说明学生解决问题的能力得到了提高。同时,学生会基于生活的已有经验,或者考察他人作品,整合多项资源进行再创作,也会将现实问题和想法转换成编程问题进行探究,具备了计算实践能力。③计算观念。课后,笔者与学生进行面谈,以此了解学生学习Python语言的目的及想法。交谈后发现,大多数学生将Python语言作为创作及表达想法的一种工具,在编程过程中通过与他人交流和联系,对代码不断地优化,创造出性能更优的程序,但也有少部分学生对编程存在质疑,不清楚学习编程的目的。
结语
计算思维的培养是一个长期而复杂的过程,需要教师加强教学理论的学习以及在教学实践中不断探索和创新。本研究也存在一些不足:一是时间把控问题,学习任务一个课时无法完成,到下一课时再探究就失去了连贯性,影响探究效果;二是进度问题,不同小组完成作品的快慢,会导致小组之间的比较,从而影响学习体验。因此,在接下来的研究和教学中,笔者将继续深入研究计算思维的内涵和外延,完善面向计算思维培养的任务驱动式编程模型,以更好地适应不同学生的需求和发展,从而培养学生的计算思维能力。
参考文献:
[1]崔允漷.如何开展指向学科核心素养的大单元设计[J].北京教育:普教版,2019(02):11-15.
[2]叶浩生.具身认知的原理与应用[M].北京:商务印书馆,2017.
[3]王旭卿.面向三维目标的国外中小学计算思维培养与评价研究[J].电化教育研究,2014,35(07):48-53.
[4]钟柏昌.任务驱动教学的反思与重塑[D].南京:南京师范大学,2004.
[5]郭绍青.任务驱动教学法的内涵[J].中国电化教育,2006(07):57-59.
作者简介:杨铅,本科,二级教师。
本文系江苏省教育学会“十四五”教育科研规划2022年度立项课题“基于Minecraft游戏的结对编程教学实践研究”(课题批准号:22A04JSSZ254)的阶段性成果。