多感官学习让编程教育充满活力
2022-09-02刘军程展中国人民大学附属中学朝阳学校
刘军 程展 中国人民大学附属中学朝阳学校
魏书生曾说:“找到自己的20个长处,并看明白,想明白,说明白,写明白,做明白……”作为初中信息科技教师,笔者深受启发,编程教学何尝不是如此:将每一个程序看明白、听明白、想明白、说明白、写明白、做明白……学生通过听觉、视觉、动觉及触觉等多感官获取信息,多角度、多层面探究编程,理解编程,应用编程,让编程教育充满活力,提升编程教学的学习效率。
● 勤用眼,多读程序,看明白程序中的问题
多读、多看程序才能看明白程序中的数据、语法和算法可能出现的问题,这是学习编程的有效途径。流程图是学生进行程序表达的重要工具,多看流程图可以有效培养学生的逻辑思维能力和问题解决能力;多读优秀程序可以理清程序的设计思路,体会其中的逻辑关系,理解如何调用积木实现相应功能,从而提升编程水平;多读程序中的问题,用多种方式发现问题,更能锻炼提升学生的编程能力,使其体验“山重水复疑无路,柳暗花明又一村”的快乐。
编程项目:太空垃圾是围绕地球轨道的无用人造物体,由小到人造卫星碎片、漆片、粉尘,大到整个飞船残骸构成。千万别小看了这些零零碎碎的太空垃圾,据统计,与直径大于10厘米的太空垃圾碰撞或可损毁航天器。而这些太空垃圾如果坠落地球将产生更大的危害。为了帮助大家认识太空垃圾的危害,请设计一个躲避太空垃圾的小游戏。
学生们编写的程序出现了问题,血量到了设定值时程序也没有执行相应动作。问题出在哪里?这就需要回读程序,查找BUG。学生经过检查发现,判断语句“如果……那么……”中的血量是输入的汉字,而不是引用的变量。在课堂上,编写程序经常会出现各种各样的问题和错误,教师可将此转化为生成性教学资源,让学生自我诊断、相互学习,以引导学生逐步形成严谨全面的思维习惯。
● 勤动脑,多思考,想明白算法的功能意义
思考是思维的一种探索活动,思考力则是在思维过程中产生的一种具有积极性和创造性的作用力。思考是学习、做事的核心和主导,更是分析问题、解决问题的关键,对学习编程起主要作用。在编程中多思考,一是思考程序的设计思想、编写流程,理解编程的计算思维;二是思考解决问题的方法和步骤,及相应功能和效果实现的策略,理解算法是编程的核心,是解决问题的关键;三是思考分析问题程序,解决问题,让程序顺利执行;四是思考优化完善程序,还包括多问为什么,因为问题是思考的发端,也是思考的延续,没有问题就不会有思考,要不断发现、提出问题,培养问题意识,问题越多、越有质量,思考就会越深,就更能发展计算思维,思维能力是学习能力的核心,也是中小学编程教育的重要目标。
编程项目:小明的奶奶有一个密码箱,箱子里放着奶奶最爱的首饰。今天是爷爷奶奶的结婚纪念日,奶奶想拿出首饰,可怎么也想不起箱子的密码。小明的妈妈记得密码是三位数的回文数(正读反读都一样的数叫做回文数,如121、232、343),且个位、十位、百位的乘积是252,请帮小明编程计算出这个密码是多少。
“密码是多少”这个问题提出来了,怎么解决呢?有的学生会说用枚举法,但不是所有学生都知道这种算法,继续提问:什么是枚举法?如何列举出所有可能的密码并一一验证呢?……还有继续追问的问题串:枚举对象是什么?枚举范围是什么?验证条件是什么?首先引导学生画出个位、十位、百位逐一验证的算法流程图。根据流程图,继而提出拓展问题:程序还能优化吗?有问题,就会有思考;只要思考,就会有发现;有创新,就会产生智慧的火花。例如,个位和百位一样,只需要枚举个位和十位就行了,于是产生了优化后的算法流程图。
● 多动口,交流评价,说明白编程中的得与失
建构主义倡导知识的自我建构,提倡做学习的主人,将学习的主导权还给学习者。在编程学习中,应鼓励学生大胆发言,让学生交流、展示、评价、讨论甚至辩论,多动口,说明白编程作品与思想的得、程序问题与困难的失。在这个过程中,学生锻炼了语言表达能力,主动建构了知识体系,体验了编程获得感。
不同学生的认知水平、学习能力、思维方式不同,因此需要展示、交流、评价。在展示编程作品过程中,展示的学生先要述说编程的设计思想、策略,再展示脚本,逐一说明用什么算法、结构、模块、函数、语句,怎样实现相应功能,这样便于理清思路,编织知识网络。在讨论、辩论中,头脑风暴的方式使得不同的思想和方法高效碰撞,激发出的思想更加丰富、跳跃,产生的方法更加多样、新奇,在这个过程中学生面对困惑、直击问题,研判、选择解决方法,思维走向深入。评价是一个肯定、否定,甚至是批判的环节,学生在评价中汲取方法,优化代码、优化功能、优化架构,这个过程需要充分发挥批判性思维能力,批判性思维是创新的发端和动力源,从而激发起更强烈的学习追求。
● 勤动手,多写程序,做明白的编程探究
纸上得来终觉浅,绝知此事要躬行。程序设计的知识、能力来源于编程实践,还要回到实践中去才能有价值实现、淬炼提升。在编程教学中,教师应多从趣味性、生活性、互动性、挑战性、开放性几个方面设计活动,采取玩中学、学中探、探中创形式,让学生爱上编程,体验编程之美。
编程项目:假如你手里有一张A4的白纸,把它一次次反复对折起来,最多能折叠多少次?能把这张纸叠多高呢?可以肯定的是,折叠的次数最多不会超过30次,这是为什么呢?假设这张白纸的厚度为0.1毫米,对折30次后的总高度是多少?比珠穆朗玛峰(约8848米)还要高;如果继续对折下去,对折42次的时候,厚度可达43万公里,比月球到地球的距离(38万公里)还要多出5万公里!
趣味性和挑战性的例子有很多,如棋盘麦子、汉诺塔等;真实性、生活性的例子也很多,如入校测体温等。通过编程项目的设计,可以持续调动学生学习的动机,满足学生的需求,让学生热衷于做自己探究的程序。
荀子曰:“君子之学,入乎耳,箸乎心,布乎四体,形乎动静。”在编程教学中,要让学生动耳、动眼、动脑、动口、动手甚至动身体,多感官沉浸于编程学习活动中,培养学生的编程能力,提升其计算思维,培养学生的创新能力、实践精神和未来学习生活发展能力,从而使他们能融入数字社会,拥抱智能时代,用智慧引领未来,用智能改变世界。