颜鼎 江苏省南京市鼓楼区教师发展中心
算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。信息科技学科作为一门以“解决问题”为学习目标之一的学科,具有鲜明的算法特征:关注学生的思维过程、过程架构与创新品质的培养。在新课标背景下,在课程实施过程中,如何有效培养学生的算法,是中小学信息科技学科教师关注的重点内容。
适合儿童的编程平台具有明确的任务主线,项目目标清晰,其作品可在短期内通过一定的程序达成。作为一种显性的、具有算法思维特征的内容,编程平台具有门槛低、模块化、封装化的特点。因此,笔者认为,信息科技教学的算法内容,可依托儿童编程课程实现,通过教师的合理引导,学生可以进行程序的编写、作品的表达。借助编程平台的设计,信息科技教师可以明确算法的基本设计路径,以具体的内容载体,进行初期的教学设计尝试。
在课堂教学过程中,基于算法进行的教学设计具有鲜明的特征。本文以儿童编程课程为例,探索在信息科技学科中基于算法的设计模式。
新课标强调任务推进,在儿童编程课程的教学设计中,算法关注具有实际意义的问题,以问题求解的过程作为教学的导向,进而推动教学进程。在基于算法的教学设计中,教学课件、学件及作业形式等,都应围绕算法的演进,进行针对性的教学设计。
(1)原设计。《编程软件图章》一课的教学重点为儿童编程平台画笔模块中的“图章”“清除”命令,涉及儿童编程平台“画笔”“外观”“动作”等模块的内容。在常规课的教学过程中,教师一般采用以下的流程进行教学:介绍“图章”和“清除”命令;演示“图章”程序的搭建方法;学生练习编写“图章”命令的程序。
(2)思考焦点。在此过程中,在教师没有给予学习情境的情况下,学生为何要进行“图章”的学习?学习“图章”以后能做什么?哪些情况下需要使用“图章”模块?这些问题都未能进行有效的设问,因此学生对“图章”的算法是缺乏心理预设的。在实际上课时,学生仅仅是在模仿教师的程序搭建过程,而并没有进行有效的自我构建的过程。这样的学习过程,是机械学习的技能模仿,缺乏必要的算法过程。
(3)改进型设计。在基于算法的“图章”教学过程中,首先确定教学重点为“图章”程序的自然语言表达。选择从生活中提炼具有实际意义的活动为任务目标,将问题的解决作为推进教学过程的导向主线。在此基础上,以问题的逐步解决来分层进行教学重点的学习,通过具体的活动载体来承载学习任务。
在“图章绘百花”一课中,首先确定算法主线,进行与此相关的问题组件设计,层层推动任务行进路线,进而将认知内容得以具体化。
算法设问:教师展示只有一个花瓣的图例,询问学生,可否称之为花朵?学生质疑,花瓣数量不够→问题产生:如何能在较短时间内,形成一朵完整的花?→师生进入新授环节。
算法析问:一花一世界→解决花瓣的瞬间复制问题;五彩烂漫时→解决花朵的变色问题;动态花精彩→解决花朵的循环旋转问题。
算法追问:导入不同角色的花朵,促发学生思考如何能让这些花朵达到心仪的动作方式?→学生探索实现途径→通过修改程序、尝试程序积木的方式来进行任务的达成。
算法拷问:学生总结四个任务的实现过程,梳理出程序思考的过程,绘制出共性的流程图,并结合今天的主题进行儿童编程平台的功能链接,从而加深意义学习的过程。
在基于算法的教学设计过程中,学生带着算法思维,进行有目的的任务推进活动。在导入部分,算法的实施目标明晰、合理,符合儿童认知规律;在解决问题部分,任务层层推进,推动学生不断进行有关算法的思维过程,从四个显性问题的解决中,潜移默化地学习了隐性的知识内容。
算法分解是适应义务教育阶段学情的要求,学生不仅能够理解算法的过程,还能够通过具体的实例对算法进行分解,明晰每一个部分的具体意义。通过回溯算法等方式,将任务进行逐步的拆解,再根据实际情况进行认知内容的叠加,从而形成明晰的结构主线。
(1)原设计。儿童编程平台中“旋转方式”模块的学习是常见的内容,对应的是有关动作方式的算法内容。常见的设计方式是:教师演示工作对象的旋转过程,指出实现旋转的程序模块,引导学生进行相关的练习。
(2)思考焦点。在常规的教学过程中,工作对象自身缺乏运动意义,算法与对象的旋转只有技术关联,缺乏意义关联。在学生完成一个任务后,没有对程序进行分解的路线支架,所以学习过程机械单调,难以深入。
(3)改进型设计。教师将“旋转方式”作为一种角色运动的程序支架,让实物的旋转和程序同期出现,让学生思考角色和程序之间的关联。在完成了第一组“角色+程序”的组合之后,再出示另外的“角色+程序”组合,给学生充分的回溯思维的过程,以达到知识迁移的目的。
算法前置:从一个花瓣变成十个花瓣的脚本入手,分析脚本与动画之间的关系。
算法研读:一个花瓣是如何变成十个花瓣的,将猜测的结论通过程序来进行验证,最终得出先“向左/右旋转360/10度”,再将“复制”“粘贴”的过程“重复10次”后,可以得到十个花瓣的结论。此时,留下设问:“旋转角度”和花瓣数量之间有怎样的联系?
算法链接:依据上面活动的结论,提出“数字与逻辑运算”中的关联。课件中继续出现四瓣花、五瓣花、七瓣花,让学生对相应的脚本进行自然语言的表达。至此,突破本课中的教学难点:旋转角度和花瓣数量之间的联系。
在新课标背景下,在基于算法的教学设计过程中,教师将着力点从讲解程序的编写过程,改变为让学生分析程序的组合原理。通过每个花瓣的旋转角度的分析,学生可以理解到“数字和逻辑运算”模块中的运算的自然意义。学生在对实物与脚本进行对应分析后,加深了对程序本身的理解,也巩固了思维过程的严密性。
新课标要求对算法实际问题求解,在解决问题的策略中,具有多途径和一定的开放性,鼓励学生能够在合理的情况下,通过多种方式来解决实际问题。
(1)原设计。在《定义过程》一课中,常规的设计方式一般采用以下教学流程:教师演示一个正方形的绘制方式→讲解如何用定义过程的方式绘制正方形→让学生练习,如何通过定义过程的方法绘制正方形→教师演示如何通过“copy”与定义过程组合,绘制出较为复杂的图形→学生进行拓展练习。在实际教学中,常常出现学生只会画正方形组成的图形,而无法迁移到其他图形的情况。
(2)思考焦点。在本节课设计中,程序编写教学难度跨度较大。教师在教学中,易采用较为保守的讲授式教学模式。但是此教学过程突出的问题在于学生知其然,不知其所以然,导致学习过程模仿的痕迹明显,没有必要的迁移和拓展过程,导致缺乏个性化的作品呈现,不符合新课标的理念。
(3)改进型设计。在基于算法的教学设计中,注重从学习任务中提取出具有变量特性的元素,将其应用于学习过程,以此开展构建个性化的作品。
算法解析:从卡通兔导入,分析头部是如何演变出耳朵的?(分析其组成,找出其中的变量)
算法体验:在分析出圆形的组合规律后,进行基于圆形的图形绘制,尝试出多圆组合的形式。
算法指导:引导学生分析“利用定义好的基本图形,可以画出这样的一组图形吗?”,从课件中让学生分析组成复杂图形的变量,再给学生思考的空间,由点及面,进行多层次的变量定义。
算法实践:定义圆形→圆形组合;定义椭圆形→定义椭圆形组合。
算法再构:分析多定义命令的程序。
算法组建:定义两个基本图形→绘制正方形、三角形组合的复杂图形,并进行自我喜好的作品加工。
算法迭代:引导学生在作品中找出共性的内容,反思自己的作品,进行更富有个性化的图形绘制,绘制兔子的嘴巴、鼻子、领结等部位。
基于新课标算法的教学设计注重了变量引发的变式,及变式带来的学生个性化的问题解决方案。在基于算法的“定义过程”的设计中,教师将更多的关注点放在了引导学生思考,让编程软件真正成为个性化的创作工具。
基于新课标的算法教学设计,将学习过程进行了项目化的提升,实施中要关注以下几点:第一,算法各要素的融合方式。算法过程之间是相互依存、相互促进的关系。如果只关注分析问题,而不进行必要的数值逻辑计算,那解决问题的途径只能是纸上谈兵,无法落地。第二,避免陷入过于复杂的算法之中。不可忽视问题框架的设计,要在合理合情的情境下进行,在同等条件下,寻求最佳的解决途径、最佳性价比。第三,引导学生用信息科技学科思维全面认识和思考。算法是信息科技学科的灵魂,作为教师,要能够积极地唤起学生多角度的迁移能力和拓展意识,避免封闭的、线性的认知习惯。