基于Scratch编程教学的计算思维培养研究
2018-08-30张汉城
张汉城
计算思维是当今三大科学思维之一,在教学中的运用越来越受到教育单位的重视。虽然早已存在,但其被广泛认同的定义直到2006年3月才被周以真教授提出:计算思维是运用计算机科学的基础概念进行问题求解、系统设计,以及人类行为理解等涵盖计算机科学之广度的一系列思维活动。在编程教学中重视计算思维培养,可提高学生分析问题和解决问题的能力。
Scratch是一款由麻省理工学院(MIT)设计开发的少儿编程工具,笔者结合Scratch的教学,谈谈如何培养计算思维中常见的约简思维、转化思维和启发思维。
一、建构模型,培养约简思维
计算思维的目的在于解决问题,而解决问题的起点在于确定问题。在编程教学中,问题的确定往往是通过建构模型的方式实现的,即把自然语言描述的问题变成计算机能够处理的模型。这一过程具有很强的抽象性,更要求教师注重约简思维的渗透,将易于理解的生活情境置于导入环节,借助学习单让学生建构出问题模型。
对Scratch而言,授课对象为8~16岁的学生。根据此年龄段学生的认知能力特点,将程序设计的学习置于学生熟悉的生活情境,不但有助于激发学生学习兴趣,而且更易于让学生明确学习任务,并得到情感、态度与价值观的升华。如,《玩转赛道小车》课始,在观看世界级的四驱车大赛视频之后,笔者让学生结合玩四驱车的经历,谈谈四驱车在赛道中行驶的特点,了解编程参照对象运动特点,初步扫清思维障碍;然后,汇总小车智能行驶必须解决的问题,明确学习任务,并让学生意识到本课不仅是在学习Scratch程序的设计,还在参与现实社会热点问题——智能行驶汽车的设计研究,瞬间使学生对问题的解决变得更加期待,为学生约简思维的培养营造了良好的氛围。
明确学习任务后,还需要帮助学生将学习任务细化成能够运用计算机求解的模型。笔者为此设计了一种适合儿童约简思维训练的学习单,将学习任务进一步细化,分析任务中涉及哪些对象、每个对象包含哪些动作效果,进而建构出计算机能够解决的模型。在动作效果分析中,还注重学生自然语言描述的规范性训练,强化对循环、选择和顺序三种算法控制结构的认识。借此学习单,学生思维逐步理顺,需要完成的每步操作更加清晰,约简思维自然得到很好的培养。
二、化难为易,培养转化思维
计算思维的本质是抽象和自动化。学生在明白“做什么”之后,还需要让计算机知道“怎么做”。为此,如何把一个看起来困难的问题重新阐述成一个我们知道怎样解决的问题,就是转化思维的培养重点。可以通过聚焦指令、代入角色等方式,将复杂问题各个击破,从而使之转化为能够用计算机处理的形式。
编程教学中,对新指令块的学习理解属于教学重点。如果让学生聚焦新指令块的使用环境,以提问方式逐步引导,直至其发现相关指令块,在体验转化的过程中掌握使用要点,就可以让学生学得更深入、理解更透彻。如,小车在赛道中智能行驶,关键要借助“颜色……碰到颜色……”指令块实现判断。笔者让学生关注赛道背景图并进行思考:①观察封闭赛道,以及赛道外侧背景和内侧背景的颜色;②判断小车需要返回赛道的情况;③找找能让小车判断该返回赛道的指令块。这样指引学生抽丝剥茧般将小车需要返回赛道前的判断转化为左前轮碰到赛道外侧颜色、右前轮碰到赛道内侧颜色两种状态,并发现实现此判断的程序指令块——侦测类别中的“颜色……碰到颜色……”。通过聚焦指令,形象的表达转化为抽象的指令块,思维的难度得到降低,转化思维培养更显成效。
编程教学中,学生要学会赋予计算机中的角色一定的程序,让它们按照要求动起来。如果角色动作较为简单,学生编程时就得心应手;而如果角色动作较为复杂,学生编程时就常抓耳挠腮。但是,如果引导学生把自己想象成Scratch编程中的角色,按照问题要求进行运动,往往会有意想不到的收获。如,在教学小车该往哪个方向旋转时,笔者请三位学生到讲台前,左右两边的学生分别扮演赛道外侧、赛道内侧,中间的学生扮演小车,并按照前进方向两手分别扮演小车的左、右前轮。当笔者说出“当左前轮碰上赛道外侧背景的白色”时,扮演小车的学生做出向扮演赛道外侧背景学生倾斜的动作。笔者顺势提问:“小车该向哪个方向旋转呢?”全班学生马上知道要向相反方向旋转,“向右旋转……度”指令块就水到渠成了。通过这样的方法,学生体验得到增强,思维也顺利实现转化训练,难点便不攻自破了。
三、纠错优化,培养启发思维
编程教学中,随着脚本搭建的完成,检查程序运行能否与预期情况一致便提上日程,纠错与优化就成为主旋律。在这不确定性因素很多的阶段,学生将面临更大挑战。为此,要注重启发思维训练,引导学生联想、领悟,让启发思维成为一种常态。
当脚本运行结果与预期情况不相符时,纠错便开始了。由于Scratch软件的特点,出现的错误往往是更具隐蔽性的逻辑错误。因此,笔者采取“大胆假设→小心求证”的启发思维训练模式:“大胆假设”指针对程序调试中观察到的非预期现象进行启发,鼓勵学生勇敢地猜想可能产生问题的要素;“小心求证”指针对可能产生问题的要素进行启发,引导学生在尽可能排除干扰的情况下逐步调试,逐个排除怀疑对象,直至程序调试成功。如,针对小车冲出赛道这个常见错误,学生猜测是由车速过快、旋转方向错误、旋转角度不合理等因素引起的,并进行逐个求证。在“车速过快”的求证中,学生将“移动……步”指令块的参数调成“1”,发现小车慢悠悠地在赛道中智能行驶,纠错过程顺利完成。在纠错调试的过程中,学生再次经历问题解决的全过程,预设求证的启发思维入脑入心。
脚本能够按照预期情况执行,代表问题得到了解决,但并不代表计算思维培养的结束。此时,笔者从程序是否最简洁、执行效果是否最合理、能否进行再创作等角度让学生放飞思维,在对程序进行优化提升的过程中达到启发思维的再训练。如:学生发现,紧随旋转指令块后面的“移动……步”指令块不是必须的,一下子就减少了两个指令块的使用,使程序变得更加简洁;学生也发现,通过改变旋转的角度和移动的步数两个参数,小车运行速度会出现差别;一部分同学甚至开始设计更复杂的赛道来挑战自己的编程能力。整个阶段,学生思维得到有效发散,程序的优化提升更具条理性。
利用编程教学培养学生的计算思维,并非一朝一夕可以达成。但在小学阶段充分利用Scratch编程教学,合理渗透约简、转化、启发等计算思维的培养,能为提高学生今后学习、生活中的问题解决能力打下良好的基础,从而使之成为合格的数字化公民。
(作者单位:福建省厦门市集美区内林小学?摇?摇?摇责任编辑:庄严?摇?摇?摇黄晓夏)