冗余偶得计算思维

    李丽美

    

    

    计算思维概念的提出由来已久,随着新课改的推进,作为信息技术学科的核心素养,它热度不减。然而,中小学信息技术教师对计算思维的理解和应用现状是不容乐观的,有的教师还处于概念理解的混沌阶段,有的教师则简单地把计算思维等同于算法思维,认为只有程序设计课才要体现计算思维,只有涉及算法,才可以谈培养计算思维的设计。因此,计算思维在常态课堂中落地遭遇了一定的理解和应用阻力,亟须提供可借鉴的教育实践和经验。

    ● 计算思维是信息技术核心素养的根基

    计算思维最早由周以真教授提出,尔后经过国内外学者的讨论与实践,逐步明晰细化。笔者认为计算思维是问题解决过程中的一系列思维活动,具体包括分解、模式识别、抽象、算法思维、评估、迁移等思维活动。

    计算思维处于信息技术学科核心素养的中心位置,它将信息意识、数字化学习与创新、信息社会责任牢固地联系在一起,使其成为一个有机的整体。信息意识包含了信息搜索、信息获取、信息分析与甄别等内容,处在学生分析处理问题的初始层面,相当于对问题的预处理;数字化学习与创新考查学生运用数字化资源解决问题的能力,是其他三个要素在解决问题过程中的具体体现;信息社会责任是大概念,是学生发展及其社会化的必然要求,相当于一种最终的学习归宿与检验。

    计算思维似乎看不见摸不着,它隐藏在信息技术学科的根基和主干之中,却是核心素养的本质体现,没有它就无法快速进行信息的识别、剥离与抽象,没有它数字化学习中的技术运用就无法炉火纯青,效率会大打折扣,没有它信息社会责任的升华很难进行,没有它核心素养的大树就像没有了根基一样。因此,计算思维是信息技术学科核心素养培养的根基,更是信息技术核心素养培养的着力点。

    ● 冗余设计助力培养计算思维

    “冗余”?多余的,重复的,啰嗦的,听起来像是贬义词,却是计算思维中一种很重要的思想,而本文中的冗余有着另外的含义,它指信息技术课堂教学中的重复设计。偶然的重复录入可以唤醒学生的模式识别,有意而为之的重复操作给予学生剥离抽象的计算思维体验,程序编写中的重复模块成为创生计算思维的源泉。精心设计的冗余不是多余和重复,而是倒逼学生审视自己思考的一种方式;必要的冗余不是课堂的累赘,而是能让师生共同追寻思维的痕迹,变课堂为思维碰撞的平台。

    教学实践表明,对话最适合思维的培养,因为这种策略鼓励学生与教师进行交流。教师通过提问引导学生,刺激学生去思考;学生根据教师的问题,通过分析、讨论等一步一步地深入。以下三个案例均展示了师生间的对话,闪耀着计算思维的火花。

    1.唤醒模式识别

    模式识别指对表征事物或现象的各种形式(数值、文字和逻辑关系等)的信息进行处理和分析,实现对事物或现象进行辨认、分类、描述和解释的过程,是一种重要的计算思维。生活中模式识别的应用比比皆是,如指纹识别、车牌识别等。信息技术课堂中学生偶然的重复操作在教师的监控和引导下能够唤醒模式识别,让无意识变为有意识,把握习得计算思维的良机。

    案例1:Excel填充柄。

    在Excel公式的教学中,填充柄是必然会涉及的内容。简单的操作背后蕴含着模式识别的思维。这一课中使用的素材是学生体质健康状况,需要使用公式计算每位学生的BMI值(身体质量指数=体重/身高的平方)。学生往往会在录入公式计算出第一位同学的BMI值之后,迫不及待地无意识地用同样的方法计算下一位同学的BMI值,个别速度快的学生在下一次反馈之前甚至可以完成5~6次公式的录入,也有少数学生偶然发现或者从课本上看到填充柄的使用,却不明白它的原理。笔者常常等到大部分学生进行了两次计算,即重复地录入了公式之后,再用对话的方式给予反馈,而并非在授课之初就直接抛出填充柄。

    师:很多同学像小蜜蜂一样,辛勤地劳作着,速度快的同学已经计算了5~6个BMI值,慢的同学也已经在录入第二个公式了,非常赞!老师想问你们,如果要填完这一个班级的同学的BMI的值,你打算怎么办?

    生:一个一个来吧;肯定有别的办法。

    师:不急,我们先一起按照原方法再算一个!

    学生跃跃欲试,笔者选择学生到教师机进行操作,并把第一位学生的BMI计算公式和第二位學生的计算公式以对齐的方式都写在黑板上。

    师:同学们火眼金睛,对比分析看看这两个公式有什么特点?

    生:字母相同,数字不同;非常像;难道可以复制?

    师:数字代表什么?

    生:所在行;在哪一行;行号。

    师:同学们非常厉害,刚刚你们的大脑正在进行模式识别,老师总结一下,这两个公式的结构完全相同,只是它们所在的行不同,后面的数字正是所在行的标号。那么在计算机中,对于同样的内容,往往可以进行什么操作提高效率?

    生:复制+粘贴;可是公式不完全相同啊;行号怎么办?

    师:Excel软件的设计者也想到了这个问题,因此这里的复制粘贴有了一个高效的工具,它可以智能地识别行号,它就是填充柄,是不是已经有同学体验到了它的强大?可以分享给大家吗?

    ……

    使用填充柄之后,我们随机选择一位同学的BMI值单元格,验证一下里面填写的公式是否正确。

    生:哇,真的。

    “学生多录入几个”“原方法再算一个”“验证一下”,重复的公式录入和检查不是在做无用功,偶然的冗余是后续师生对话的基础,是唤醒模式识别思维的关键。在与学生的对话中可以清晰地追寻到学生的思维痕迹,看到学生对自己思维的审视、对比、分析、迁移,将复制粘贴的模式启动,而这里的公式复制并不是简单意义上的复制,它应用了智能识别行号和自动化填充的方式,学生也看到了软件设计者的思考,思维的再现,这又是一种模式识别的唤醒。

    2.体验抽象剥离

    抽象剥离是计算思维的重要组成部分,它可以进行问题分析、特征抓取、模型建立,从而高效地解决问题。信息技术课堂教学中模板的教学常常涉及这种计算思维的历练。

    案例2:PPT母版与模板。

    很多学生对母版与模板分不清楚,这其实是在课堂学习中对问题的抽象和剥离不到位。笔者常以“班级运动会风采”为主题,进行幻灯片的教学,为母版设计的冗余操作就是“Logo需要出现在每一页”,这里的Logo一般是班旗或者班级代表性的标志,像校标一样。

    学生常规性的方法就是复制和粘贴?这其实也是一种模式识别思维启动后而得到的解决方法,但笔者会继续提出问题。

    师:如果我们的幻灯片有100页,你打算怎么做?

    生:再……粘贴一下,是不是可以统一粘贴?是不是可以选择粘在哪些幻灯片上?

    师:假如我的幻灯片还需要每一页加上制作日期,那一直复制粘贴,效率太低了。PPT的设计者经历了和你们一样的困扰,让我们像他一样,为我们手中的操作按下暂停键,来回顾一下我们的需求。

    生:每一页固定位置放置班旗,每一页有制作日期。

    师:这两个需求是这个文档中所有幻灯片的共同点,我们抽离一下,其实我需要的一张基础幻灯片是这样的,右上角一个班级标志,左下角一个制作时间,其他的幻灯片可以在这个基础上添加制作。

    生:哪里有这样一张幻灯片?自己制作一张,做其他幻灯片的时候复制这张,再添加内容吗?

    师:你们真棒,PPT设计者一定发现我们洞察了他们的思维,其实它就是母版,在它的基础上可以衍生出我们需要的多张幻灯片,它们都像它的孩子一样!

    生:找不到哪里有……

    师:我们换个视角来看看你制作的幻灯片,去视图里发现秘密吧!

    生:有了它,我们可以以一当百啊!我对这次的PPT特别满意,明年再次介绍班级运动会风采的时候可以直接修改使用吗?

    师:你的想法很棒,那我们再把它抽象升级一下,让它常驻在你的PPT里,要用的时候直接把它的配色、版式、字体、母版设置等引入就可以了,就像报纸的几个版面一样,有一些常用的模板留存着,需要用的时候取出即可。模板比母版特权高,拥有自己的扩展名,保存后,在你下次新建的时候就可以看到它。我們还可以自己动手做个技术实验,探索你的.pptx文件即模板文件存放在哪里。

    课堂中需要给予学生充分的技术实验时间,让他们去尝试,看似冗余的操作其实倒逼着学生停下来去思考。在对话中,教师像剥洋葱一样,引导学生对自己的PPT层层剥离、分解、提取、抽象,母版呼之欲出,模板理解的难题迎刃而解(如图1)。

    3.创生模块化思维

    在程序设计中,谈到计算思维,大多数教师偏向在算法上做文章,如递归思想、排序算法。其实计算思维落实在程序教学中的点滴,也不仅仅是算法思维,函数与过程的学习就是非常明显的抽象思维,即模块化思想。

    案例3:程序设计之函数与过程。

    在函数与过程的教学中,不能直接将一个例子放在学生面前,告知这是函数,分析它的作用,因为这样的教学会让学生糊涂,即使知道了概念也未必能深刻理解,在运用上就会出现跟不上、想不起来的问题,更谈不上思维上的理解与内化。

    例如,笔者会向学生抛出问题:输入任意两个十六进制的数,以十进制的方式输出它们的差。请学生审题思考,预设方法。学生一般会给出字符串转换法,存储转换十六进制的数字,使用For循环或While循环进行每一个输入的转换。接下来,不是讲解函数的使用,而是让学生按照分析思路,常规地写两个循环,然后与学生对话引导,学生程序抽象与模块化如下页图2所示。

    师:我们看到这位同学的程序分享,出色地完成了任务,如果输入变为3个数、5个数、求它们的运算结果,你该如何修改你的程序?

    生:再把转换过程写几遍,又要重复操作了,那程序很长了。

    师:说到点子上了,我们在重复写同一段代码,你刚才已经重复了一遍,发现了吗?

    生:没错,可是对象不同,针对不同的字符串,用的语句、方法一模一样。我是复制粘贴,然后修改一下字符串名称就行了。

    师:没错,大家已经预感到应该有办法可以把这重复使用的语句简化,让主程序,也就是“main()”更简洁明了,就像生活中的黑匣子一样,它的功能很明确,将我们送进去的东西用同一种方法处理好,再还给我们,也可以理解为模子、模具,这样,我们这两段程序就可以只写一次,在用到的时候送进去处理一下。

    生:就像我们之前用到过的那些数学公式,如“sqrt()”?

    师:对,它们有比较高大上的名字:函数或过程。我们还是回过头来分析眼前重复写的这两段程序,它们都是对一个字符串进行处理,那我们要用的时候只需要告诉它对哪个字符串处理就行了,这就是参数的意思。

    生:原来我也可以简化它!这就是函数啊!参数竟然是这个意思,之前看书不太懂。

    师:恭喜你从今天开始也可以编写黑匣子了,对外只说:“告诉我你要处理谁!”

    函数与过程是程序设计学习中逐步抽象的过程,涉及封装、调用思想、模块化思维等众多计算思维。给予学生重复的机会,让学生在编写与回顾之后,蓦然回首,认识到程序功能上的相似与重复,认识到处理方法上的“雷同”,产生化繁为简的需求,精简的方法也需要教师逐步引导,水到渠成,而不是对参数的概念直接进行生硬的解释,强塞给学生。程序编写中的冗余正是学生理解函数与过程、内化封装与调用思想的关键,正是学生创造程序模块的过程,正是模块化思维生发的源泉。

    其实,认真审视信息技术课程中的内容,不难发现:冗余设计的思想也是蕴含其中的,如图层的分解、剥离、重组思维,在Flash、Photoshop中作为重要思想重复出现;计算机硬件中CPU的分时多任务是一种分解,网络数据的分包发送也是一种分解。这样的冗余设计十分必要,从某种程度上能够激发学生的元认知,唤醒模式识别,强化计算思维。

    计算思维的培养不是一蹴而就的,而是贯穿中小学信息技术教育的始终,信息技术教师有责任、有义务在日常教学中将计算思维渗透到细节中,让核心素养的培养落到实处,需要经历从模拟的量变到创造的质变,从了解、熟知、应用到建构在自己的头脑中,最终成为自身思维的一部分的过程。