李素卿
摘要:本文提出,信息技术在推动社会发展的同时带动了信息技术教育的改革,信息技术课程标准明确把计算思维作为学科核心素养之一,将各类编程语言作为主要学习内容,旨在在编程中促进学生计算思维的形成,提高学生的适应力和创造力。因此,如何在小学信息技术教学中培养和提高学生的计算思维能力是亟待解决的问题。
关键词:计算思维;小学编程;学情
中图分类号:G434 文献标识码:A 论文编号:1674-2117(2021)14-0045-03
当前,人们开始追求编程技能的发展与编程文化的塑造,掀起了编程热潮,那么,编程真的适合所有的小学生吗?能有效培养小学生的计算思维吗?下面,笔者将从教学对象、教学内容和教学方法等方面来谈谈计算思维在小学编程教学中的落实问题。
● 课前准备,分析学情
社会上的编程教学机构五花八门,学习编程的学生也逐渐倾向低龄化,但是,编程真的适合所有小学生吗?结合自身多年的编程教学实践和社会经验,笔者认为并非所有的小学生都适合学习编程。
1.从学生学习能力层面分析
代码类编程和图形化编程都可以培养学生分析问题、解决问题等逻辑思维能力和创造力,但同时也需要学生具有一定的理解能力和学习能力。小学生正处于生理和心理发展的阶段,认知能力低,注意力不持久,耐性差,而编程学习要能耐得住性子去编写、调试、完善程序,才能获得最终成果,因此,编程学习因人而异。小学低年级的学生接触计算机,学习计算机工具、技术是培养思维的基础;小学高年级的学生掌握基本的数学知识和具备一定的抽象思维能力后,可以适当地接触一些编程知识。
编程学习是一种涵盖知识面、逻辑力且空间想象比较强的思维训练,需要全面的知识和计算机操作技能作为基础。因此,年龄太小或学习力比较薄弱的学生不适合学习编程。
2.从学生学习意愿层面分析
根据小学生爱玩的天性,编程教学一般都围绕制作游戏展开教学,然而小学生容易过度关注游戏本身,而忽略游戏编程背后的计算思维。为了降低学习难度,编程教学普遍的教学模式是教师出示任务,学生模仿拖动积木,这样的学习缺乏自主性,学生学习成就感低,时间一长,容易失去学习的热情。也有的教师为了培养学生的逻辑思维能力,在语法和规则的讲解上花费更多的时间,使得编程学习变得枯燥。兴趣是学生进行编程学习的驱动力,学生只有保持一颗好奇心及学习热情才能在编程学习的道路上奋勇前进。
编程教学的根本目标为遵循学生特点,具体综合学生的兴趣与天赋,让学生在持续热爱编程的过程中,循序渐进地提升计算思维。
● 课中实施,发现不足
近几年,笔者一直在进行基于计算思维的小学编程教学实践,目前看似颇有成效,课堂上大部分学生都能完成任务,教学目标基本完成,各编程竞赛也开展得如火如荼,学生、教师和家长都沉浸其中,甚至将编程对小学生计算思维的提升效果神化。但小学教学编程对计算思维的促进作用真的这么大吗?其背后的真相是:课堂上的学生作品千篇一律,程序几乎是按照教师课堂设计走流程,学生缺乏自己的设计与分析,更无创新可言。而竞赛的项目也都是事先给定,学生提前磨练,真正临场发挥的赛事少之又少。针对这些问题,笔者综合编程教学课堂分析,总结出了问题出现的原因。
1.儿童过渡关注具象动态
小学生学习编程有明显的具象性,为了降低编程的入门难度,学校引入各类积木式编程工具,让编程语言可视化,学生无需熟记烦琐的命令,只需设计流程、选择背景、添加角色,然后用鼠标拖动指令模块到脚本区组合、设定参数就能进行编程。为让学生有更为直观的体验,学校还将编程教学与开源硬件相结合,学生根据目标任务设计方案,运用工程学知识进行外观和机械搭建、选用模块、编写程序、调试修改。但是,这样的教学方式却让小学生陷入角色可以移动、跳跃、舞蹈等运动过程中,导致只学会初步的程序概念,很难主动去思考程序的逻辑,对其核心过程进行解析。
2.教师过渡关注任务分析
大部分编程课堂教学以培养学生自主学习能力为抓手,以解决实际问题为导向,采取“问题化”“情境化”的方式展开教学,在教学过程中教师往往过多关注任务本身,为了完成任务去引导学生找对应目标学习模块,这样等同于让学生模仿教师程序完成任务,缺乏对程序逻辑的理解。
真正的编程教育教学目标应该是学生在教师的指导下,从不同的视角去研究、分析问题,得出解决方案,设计相应的程序流程,采用不同的方法主动探究目标知识模块,反复尝试验证,不断优化策略,直到最终解决问题,甚至完善项目。
3.课堂缺乏关注学生思维过程
课堂的授课对象是全班学生,学生的学习水平不同,接受能力有差异,授课知识点无法过多展开,因此,在课堂中不能很好地发散学生思维。学生编写、调试程序的过程体现了学生思维的落实,但是大部分学生调试程序随意,过于追求程序的运转,没有细究调试原理,而大班授课教师很难全面关注到每个学生的调试情况,也就不能深入了解学生的思维过程。
● 课后反思,优化策略
那么,什么样的编程教学方式才适合学生计算思維发展,有利于培养学生的创造力呢?
1.因材施教,分层教学
每个学生都是具有独立意义的个体,个体之间存在着差异,因此,所有教学都要遵循因材施教的原则,根据学生学习水平的不同开展不同层级的教学活动,尽量使每个学生在编程学习中都得到最大程度的发展。
针对编程教学,笔者认为可以对授课对象进行分层教学,设置基础班和提高班。基础班进行普通教学,以激发兴趣、培养编程习惯为主;提高班主要面向对编程感兴趣,数学基础好、逻辑思维强的学生,培养学生参加编程竞赛。具体课堂教学中也要进行教学目标分层,根据学生能力水平,设置不同目标,以满足不同层次的学生,让每个学生都能积极参与课堂,收获成功的喜悦。
2.优化设计,改变方法
在编程积木式教学中,教师通常以任务驱动的方式展开教学,学生为完成任务在教师的引导下学习目标积木,然后进行简单拖动,编写出的程序与教师给定的几乎无异。可是,这样的模仿教学并非真正意义上的编程,学生没有真正参与到程序设计与分析中,计算思维在课堂教学中的落实效果不明显。
笔者曾在教学中做过这样的尝试:先给出学习目标任务——小猫绕舞台四周,让学生找到相关积木后由教师解释它们的目标积木的功能,然后让学生思考目标流程,自主尝试拼搭程序。这样一来,出现了多种完成任务的方式,如有的学生使用了“移动几步”和“转角”积木配合完成,有的学生则使用坐标相关积木完成等。
LOGO程序设计教学中通常以程序的求解为载体来培养学生的算法構建能力,发展学生的计算思维。笔者以往都是在真题中归纳总结竞赛题中所蕴含的算法,这样的教学使得学生缺少认识迁移建构的过程,容易产生笔试成绩高分易、上机测试结果不如意的情况。
笔者经过多年的探索发现,创编程序题目是在掌握程序算法的基础上,融合生活情境,构建问题。而让有一定编程概念的学生创编程序题目不仅能激发学生的挑战欲望,还能促进学生的程序框架建构和培养学生的创新思维。
3.夯实基础,综合创新
积木式编程,只要拖动积木模块,修改参数即可,看似简单易懂,但编程原理是用计算机看得懂的语言来表达,要求学生将一件事件甚至一个动作细化,而且逻辑要严谨,这对没有形成编程思维的学生来说难度较大。因此,学生只有熟练掌握程序的基本语法,才能正确使用,也就是要对基本积木模块的功能有清楚的了解。但是在有限的课堂时间里,怎样实现基础的巩固同时兼顾计算思维和创新思维的发展?笔者认为,可以利用在线学习的方式仔细介绍基础模块的功能,用简单的练习检测学生的习得效果,这样既能保证学生对基础模块的有效掌握,又能提高课堂效率。课堂教学的重点则可以放在鼓励学生开发创意,设计项目,综合运用知识完成项目的设计上。这才是真正意义上的项目式教学,项目源自学生的创意,项目设计、分析、程序编写的主体都是学生,教师只起辅导作用。
作为一名信息技术教师,笔者一方面为编程教学受到重视而欣慰,另一方面又因编程教学被神化被盲目推崇而焦虑。核心素养教育是一个可持续的、循序渐进的过程,只有坚守“核心素养”的信念,带着编程教学的初心,不断努力,不断探索,用规范合理的教学方式让“计算思维”落实到信息技术课堂教学中,才能培养出社会需要的创新人才。
参考文献:
[1]林晖.编程全民化,福兮祸兮?[J].中国信息技术教育,2019(02):97-100.
[2]程稚蔚,陆含.落实学科核心素养,精准推进信息技术课程改革[J].中国信息技术教育,2019(02):59-60.
[3]李友兴.另辟蹊径:在创编程序中培育计算思维[J].中国信息技术教育,2019(10):34-37.
[4]陈久华.基于计算思维的儿童编程教学实践[J].中国信息技术教育,2017(21):13-15.
[5]汪霞华.小学生编程教学的实践与思考[J].中国信息技术教育,2017(21):16-19.
本文系福建省教育科学“十三五”规划2020年度立项课题“计算思维三维框架在小学编程教学中的应用探究”(立项批准号:FJJKXB20-561)部分研究成果。