论文部分内容阅读
摘要:实体编程具有无屏幕、操作简单、编程指令实物化等特点,成为儿童计算思维培养的有效载体。该文从面向计算思维培养的编程教育形式出发,梳理国内外七种实体编程工具的特征与教育功能;结合相关案例,形成五种面向计算思维发展的儿童实体编程教学策略,包括编程主题生活化,编程任务细化分解、融合STEAM跨界素养、编程过程具象化、游戏化互动教学;并对我国儿童编程教育提出相关建议,为人工智能时代我国儿童计算思维的培养提供参考思路。
关键词:实体编程;计算思维;编程教育
中图分类号:CJ434
文献标识码:A
数字智能时代,计算思维已成为个体面临复杂社会问题所应具备的基本素养。编程教育是培养计算思维的主要方式,伴随社会需求与教育供给不断改革与调整,儿童编程教育受到各国的高度重视。芬兰与2016年起规定所有小学生学习编程,欧盟推进编程素养数字化议程,美国计划十年普及中小学编程教育,英国规定5-16岁儿童学习编程,日本要求全面实现小学编程教育必修化,我国于2017年7月发布《新一代人工智能发展规划》,明确提出编程进中小学课堂,在2018年1月教育部宣布人工智能、机器人进入全国高中新课标,同年8月浙江省将信息技术(含编程)列入高考科目。此类政策的发布表明编程教育趋向低龄化,有力推动儿童编程教育学校化进程,逐步实现由个体层面的白组织学习到学校层面的系统融合式学习,像语文、数学等基础性学科一样成为助力儿童发展的基石。
相比之下,我国编程教育实践处于初步发展阶段,校外主要以企业推广为主,呈现一种无序、自由发展的状态;校内多以社团、兴趣班、竞赛突击班等小众的方式进行。此外,编程教育资源和项目建设缺少创新高效性,大多从国外引进,教师编程水平有限,不利于引导学生应用教育资源掌握知识。当前学校常用的编程教育形式以文本编程、图形化编程为主。儿童编程教育核心人物西蒙·派珀特(Seymour Papert)认为,形象化编程工具可改变儿童机械记忆事实的方式,在发现和探索中建构知识,实现自己的想法[1]。对于幼儿和小学低年级学生而言,过早接触电子产品对其视力发育十分不利,他们首先需要学习的不是编程语言,而是策划构思、逻辑分析、模式识别、问题分解、测试纠错的编程思維。相对于传统图形化编程,将语言学习变成关卡,通过实际操作指令引导学生角色过关,有利于编程知识扩展。实体编程作为促进计算思维培养的工具,以实物块为操作指令,将复杂问题简单化,由抽象到具体,关注儿童在简单的算法实践中发展起来的思维能力。本文系统阐述实体编程的特征与功能,探讨发展儿童计算思维的教学策略,为新时期我国儿童计算思维发展实践提供参考。
一、不同编程类型及其比较
随着编程教育的发展,编程教育形式趋于多样化。Humble等人认为编程教育主要有文本编程(Textual Programming)、块编程(BlockProgramming)、不插电编程(Unplugged Programming)三种编程类型[2],傅骞等认为编程形式可分为文本编程、图形化编程、实体编程(TangibleProgramming)[3]。其中,块编程也被称为图形化或可视化编程[4],然而关于不插电编程与实体编程之间的界定目前仍无统一定论。Krpan等认为不插电活动是实体编程的一种形式[5],Song等认为不插电的块编码系统是一种实体编程,它可以通过组合不插电的块来编码[6],Wohl等认为不插电编程、实体编程均为教授计算科学的工具[7],顾俊认为实体设备、“不插电”活动是促进计算思维培养的两种类型[8]。目前而言,尚少有文献资料直接对不插电编程与实体编程进行界定。表1对不同编程类型的内涵、特征、操作、价值等进行了比较。
文本编程通过语句、选择、迭代、常量和变量的组合作为文本代码在文件中执行[9]。当前,绝大多数程序都是用高级语言编写,例如Python等编程语言一条指令可以对应几十条或几百条机器指令,强调高可读性和可写性,适合有一定编程基础的学习者和程序员编写。块编程被称为图形化或可视化编程,其开发是从LISP-LOGO编程语言开始。相较于文本编程,块编程门槛相对较低,易于学生学习计算机编程,提高编程学习动机[10]。不插电编程不使用计算机,通过命令或书面指令来控制彼此或其它东西,与传统需要依托数字设备的编程相比,不插电编程对于技术资源较低或缺乏稳定互联网的学校以及低龄儿童更具优势。教师通过使用卡片、绳子、蜡笔和大量跑动的游戏和谜题等向学生传授计算概念,教授基本编程和机器人操作。例如,Computer Science Unplugged (CS Unplugged)是国外著:名的青少年免费计算机课程,主要面向中学生,重点培养学生对计算机科学的兴趣[11]。实体编程的代码块是儿童能够熟练操作的物理对象,相较于图形化编程更受低龄儿童欢迎。目前,文本编程、图形化编程已为大众所熟悉,但关于实体编程的了解还稍显欠缺。
二、实体编程的内涵与价值
(一)何为实体编程
实体编程(Tangible Programming)由日本学者铃木英之、加藤浩提出,用来描述类似AlgoBlock在物理空间排列程序块的编程工具,将屏幕代码块实物化[12]。实体编程基于现实世界的物化编程方式,为儿童适应图形化编程过渡,较为适合低龄儿童的认知发展。20世纪中期,麻省理工学院拉迪亚·珀尔曼(Radia Perlman)指出影响儿童计算机编程能力发展的两大障碍:语言和用户界面,其中按钮盒(Button Box)和老虎机(Slot Machine)是其设计的儿童编程设备[13]。此后,麻省理T学院媒体实验室推出实体用户界面及可编程程序块等系列产品[14]。塔夫茨大学开发技术研究小组(Dev Tech Research Groupof Tufts University)将实体编程工具与机器人技术结合,设计实体编程T具KIBO(原称为KIWD并将其应用在课堂,这种具体化、实物化的编程T具使儿童更好地理解编程语言的逻辑性[15]。图1展示了当前比较典型的实体编程T具。 (二)实体编程与儿童计算思维培养
实体编程是培养儿童计算思维的关键工具。计算思维成为各个国家青少年发展的核心素养,2021年国际学生评估项目(PISA)数学评估将计算思维纳入测评范围。周以真认为计算思维是运用计算机科学的基础概念进行问题求解、系统设计等系列思维活动,使个人能够像计算机科学家一样的思考,来更有效地解决问题[16]。计算思维是一种思维T具,经常被用来解决问题,是多种思维技能的综合应用,包括抽象和模式概括、系统性信息处理、结构化问题分解、递归及并行思维。在分析问题、解决问题的过程中还会涉及到逻辑思维、数学思维、创造思维、算法思维。相关研究发现儿童阶段的教育干预措施成本更低、教育效果更持久[17]。对于低龄儿童而言,丰富的计算环境和计算思维培养工具需要具有低门槛和高上限两个特性[18],既需要满足初学者入门,又要有较好扩展性,便于学习者进一步拔高。
实体编程是适合儿童编程学习的重要模式。美国儿科协会认为,应限制小孩每天面对电脑、电视屏幕的时间,5岁以下儿童每天最多看1小时屏幕,长时间盯着屏幕会损伤视力。实体编程是没有数字界面和屏幕的编程玩具,通过组合包含流程图命令符号块的小板或传感器,教授孩子们“实物化”的编程语言[19],帮助学习者从流程图学习过渡到编程学习。实体用户界面(Tangible User Interfaces,TUD没有鼠标、键盘,是儿童天生就能够熟练操作的物理对象,为儿童或新手提供创新的游戏和学习方式。实体编程应用实物块表示操作指令,操作简单,含有拓展功能,提供多种玩法和模块支架便于进一步提升。
实体编程符合现阶段我国中小学计算思维教育需求。我国儿童编程教育起步较晚,目前仍处于初步发展阶段,但在国家政策引导和儿童编程制作规模扩大的背景下,短时间内呈现爆炸式增长,未来或将继续保持火热。儿童编程教育备受教育工作者、投资者、家长的重视,但在实际推行过程中仍存在诸多问题。编程理念普及、政策落实保障、教育教学活动体系、教材完善、编程环境、师资配备方面存在不足[20]。除此之外,在编程课程实际开展过程中,还存在着时间不足、教师负担过重、课程过于耗时等课程设置问题[21]。幼儿编程教育缺乏明确的教育政策导向、课程体系不完整、师资力量不足圈。简而言之,儿童编程教育的核心问题可归纳为师资匮乏、课程体系不完善、编程工具适切性不足。麻省理工学院媒体实验室、塔夫茨大学开发技术研究小组作为儿编程教育的主要研发团队,认为实体编程无需依托屏幕编程,將计算机指令具象化为直观易懂的实物图标,非常符合儿童的认知发展,可帮助儿童很好理解编程代码背后所指代的实际意义。就教育本质来说,编程是为了让学生获益良多,核心不是掌握多少编程代码,而是培养孩子的计算思维.通过编程实践帮助学生定义、拆解、分析问题,而这种思维能力的掌握对于学生未来学习、就业均大有益处。
三、实体编程工具的特征与功能
实体编程已进入儿童教学课堂、培训机构及家庭教育中。许多学者在实体编程教育领域进行了实践和研究,并探讨实体编程教育对儿童计算思维的影响。有研究者认为,实体编程减少了用户为学习系统所付出的努力,而将注意力更完全集中在编程本身[23],实体编程相较于图形化编程界面对儿童更具吸引力[24]。编程和计算思维对很多学生来说,都是一个比较抽象的概念。编程教育中的分析问题、合理组织问题、解决问题等特征均与学生的计算思维培养存在相关关系,有研究者对27篇基于编程的计算思维培养实证研究进行分析,发现大中小学生均可采用编程培养计算思维[25]。Bers等人在儿童课堂中以实体编程工具KIBO作为编程教育载体,探讨实体编程对儿童编程技能和计算思维的影响,发现学生的沟通、合作和创造力均有提升[26]。编程教育包括分析问题、合理地组织问题,以及通过超越现有编程的算法思维与同伴合作解决问题。韩国将编程教育作为培养计算思维技能的有效方法[27]。这里以实体编程工具KIBO套件、Cubetto、Mabot、Aieggy、Botley、Matatalab、KUBO为例,阐述实体编程工具的特征与功能,如表2所示。
实体编程通过一系列物化的编程指令,让低龄儿童通过触摸,理解传感器模块事件的触发,发展他们的抽象、观察、分析和创造能力,儿童像创客一样应用实体编程工具DIY设计、制作、批判性思考,为未来创客公民的培养做好准备[28]。综合起来,实体编程工具的特征与功能主要包括:(1)零基础启蒙,无门槛,附带拓展功能,适合进阶学习;(2)无屏幕编程,不需要借助其它电子设备,保护儿童视力,提供真实的交互体验;(3)游戏化编程、玩中学,引导学生主动探索、创造与尝试;(4)融合STEAM教学理念,抽象概念具体化,将工程、艺术、历史等内容结合在一起,使编程学习不再是枯燥的代码;(5)塑造儿童的思维方式,实体编程以具象化的物体模拟儿童遇到的困境,锻炼学生的计算思维,发现问题,拆解问题,分析问题,抽象思考,模拟结果从而解决问题。
四、面向儿童计算思维发展的实体编程教育策略
国际上许多国家、地区出台编程教育政策规划,保障编程教育实践。近日,国家发改委等13个部门提出大力发展OMO(线下与线上的融合)模式在线教育,构建线上线下教育常态化融合发展机制,形成校内外联动良性互动格局。其中,校内编程课程是发展编程教育的主力军,在课程建设、教材研发、人才评价等方面仍需投人大量人物力。本文将从编程课程设计与开发的角度谈及实体编程教育策略。
(一)编程主题生活化
生活主题项目式学习以日常生活故事情景为主线,以解决问题为目的,以实体编程工具为支持,在一段时间内团队共同解决一个复杂问题或一项综合性任务,学生通过亲身参与体验,能更加深刻理解项目的教育价值,下面以“设计消防车最佳灭火路径”为例,展现以生活为主题开展项目式学习。
比如,“设计消防车最佳灭火路径”项目中,教师要引导学生细化和分解问题。首先,要确定火灾发生地点,设置火灾发生地;其次,要设计一个灭火消防车,引导学生根据已有经验对编程工具车进行装扮;然后,要设计消防车行驶路径,遇到障碍物怎么办?如何搭建实物编程指令,到达火灾发生地;最后,要计算消防车最短行驶路线,引导思考、修正方案。在任务分解完以后,学生要积极思考参与到每个环节中,在地图上设置火灾发生地,用编程工具车模拟消防车,用其他积木块设置路障等模拟真实情景,从顺序执行→路径选择→设计路径,不断尝试、修正,最终得出最短路径,每一个环节都需联系日常生活实际,启发学生思考。在这个过程中,教师带领儿童将生活中遇到的真实复杂问题分解成若干可以解决的问题,这是一种递归思维,采用抽象和分解来控制巨大复杂问题,而这种思维方法的训练也正是计算思维培养的核心。 (二)编程任务细化分解
编程学习涉及的问题往往比较复杂,可以在具体学习活动中尝试对编程任务进行细化分解,借助实体编程工具逐一突破。在此过程中,学生需要有一定的问题意识,在教师的引导下能将任务分解成一个个可完成的小任务,将复杂问题简单化,提升儿童的计算思维。比如,在“赛龙舟”学习项目中,教师创设了相关情境:端午节的赛龙舟是我国的一大特色,开展一场极具传统文化特色的龙舟赛对于儿童非常有吸引力。在情境创设完后,儿童可在教师的引导下将赛龙舟这个主题任务分解成若干小任务。第一,赛龙舟至少要有两个龙舟,如何应用已有编程工具车及相关素材DIY;第二,要制定一个龙舟行驶路线,龙舟怎么移动?第三,当龙舟遇到障碍物时,实物编程块如何发布指令避障?在任务细化分解完后,儿童可在教师的引导下,依次进行操作,直至顺利完成比赛,在这个过程中要不断进行调试[29]。
为了使龙舟竞赛活动极具真实性,可事先下载打印好龙舟素材,DIY装扮编程工具车,绘制龙舟行驶地图,设置起点和终点。赛龙舟可以同伴合作竞赛的形式开展,龙舟由编程工具车模拟,龙舟的行驶路线可以用实体编程的实物模块发布指令,通过比较龙舟从起点到终点的行驶时间,决出输赢。此外,儿童可自行对龙舟行驶过程进行路障设置。從提升素养发展的角度来看,制作过程需要有一定的艺术素养,会简单的手工绘制与裁剪,装扮龙舟,绘制龙舟行驶路线。龙舟的行驶需要依托实物编程指令,整个过程儿童的空间方位感与逻辑思维均有提升,通过龙舟竞赛活动,促使儿童不断修正行驶路线,锻炼数学思维和计算思维。
(三)编程融合STEAM跨界素养
计算思维培养注重艺术、数学、计算机等跨学科创作,展现科技与艺术结合之美,强调儿童创造力培养,这实际上是一种STEAM跨界素养追求。实体编程教学需要融合STEAM多维能力素养进行跨界培养。以“造风车”为例,风车是一种深受儿童喜欢的常见工具,借助实体编程制作手工风车,考验儿童的美感与基础实物指令模块的应用,结合风车历史故事,做到玩中学。在正式开始制作前,儿童可在教师的引导下将“造风车”分解成若干小任务,帮助学生塑造解决问题的思维过程,培养计算思维。首先,如果想制作一个颜色较为丰富的风车,需要提前准备好画笔、彩纸、吸管等基本工具;其次,引导学生回忆起脑海中风车的形状,让学生尝试制作一个基本风车,然后涂色;随后,在教师的引导下,学生一起手工制作风车;最后,风车制作完毕后,思考如何让风车动起来。在任务细化分解完后,学生可根据细化的任务依次完成[30]。
看上去,整个案例只有“让风车动起来”这一步骤是借助编程工具车,应用实物编程块多点指令遥控风车移动,让儿童熟悉和了解简单的编程逻辑指令,在此之前的诸多步骤会考验儿童的美感能力、数学思维、工程思维、逻辑思维、耐力、反复试错的精神。对于儿童来说,他们全身心参与和投入的过程是最为关键的。在这个过程中,他们接触丰富的颜色,无意中会形成自己喜欢和不喜欢的色调,会认识很多基本形状。虽然,他不一定能准确说出这个形状特质,但他知道这个形状折叠以后可以用来干什么。正如Angelic所言,计算思维关注的是孩子们在编程和算法实践中发展起来的技能,并使抽象思维、问题解决、模式识别和逻辑推理等素质的发展成为可能[31]。
(四)编程过程具象化
“实体编程 手TDIY”是一种较好的儿童教育开展形式,一方面激发儿童的学习兴趣,另一方面又锻炼孩子的创作能力,手工拼搭带给儿童成就感。下面以“上学记”“立体迷宫”为例阐释游戏化的编程课程体系。“上学记”是一个由儿童自己创编的场景故事,以自身上学故事为原型,在地图上设定上学的起点和终点,准确通过实物编程块指令使机器人到达目的地[32]。起点和终点的路线可以不断设置,刚开始对实物编程指令不熟悉时上学路线可以稍微简单点,当学生对上述指令较为熟悉后,可以设置路障,不断提高难度,体验闯关乐趣。“上学记”主要为路线行驶,相对简单,主要考察学生对实物编程指令的掌握程度,重在提升儿童的计算思维与逻辑思维,可作为学生的课后小游戏,在课上做分享,学生可自行在地图上创建学校、图书馆、商店、马路等日常上学路上遇到的元素,充分发挥学生的创造思维和动手能力,鼓励儿童发散性思维,勇于分享想法。
(五)游戏化互动教学
游戏化学习是当今儿童学习的主流形式,可提高学生的编程兴趣。比如,“迷宫”是非常受儿童喜爱的游戏活动,考验儿童耐心和空间想象力的智力游戏。“上学记”游戏在某种程度上课理解为平面的迷宫玩法,而“立体迷宫”游戏则相当于更复杂和逼真,玩法同样也有多种扩展。同其它实体编程工具玩法类似,“立体迷宫”游戏正式开始之前需要将游戏分解成一个个可完成的小任务,然后解决,这对儿童计算思维的培养非常有益。首先,思考和准备搭建立体迷宫需要的“建筑材料”。对于立体迷宫的形状大小,儿童可在教师的引导下用纸张制作较简单的围墙,在明白其中原理后可白行更改。为了使迷宫更具有主题特色,儿童可根据自己喜好,将围墙涂成自己喜欢的风格,互相协作共同发挥创意。其次,搭建迷宫。搭建迷宫对于儿童而言,可能稍微有点难度,学生可在教师的指导和演示下,明白迷宫搭建的原理,在搭建时不断修正迷宫摆放位置,思考每张纸的粘贴位置,这个过程非常锻炼孩子的耐力和手工搭建能力,将平面东西立体化对于儿童空间思维的发展具有较大促进作用。最后,开始玛塔的迷宫之旅。
编程是一门学科,更是一种工具,在设计程序过程中,儿童需要调用所学的数学、科学等书本里的知识点,通过对编程玩具的设计,将这些知识体系在实践中应用,帮助学生梳理整个知识体系。通过实体编程工具的使用,让学生知道实体器件如机器人的工作原理,任凭儿童自己摸索、纠错、创造,将编程工具当作学习伙伴,培养儿童问题解决能力、专注力、耐力和创造力。在该案例中,玛塔作为迷宫探险者,儿童应用实物编程块的操作指令,控制玛塔的行走,帮助玛塔避障,成功走出迷宫[33]。立体迷宫游戏既让儿童综合考量机器人行进的路径,快速反应出直行或者转弯等简单编程指令,促进儿童思维训练,又帮助他们认知简单的几何图形。最为重要的是让儿童在玩中进行在编程和算法实践,促进计算思维发展。 五、结论与建议
儿童编程的最大意义不是让孩子去学习一门特长课程,而是通过学习编程背后的逻辑,锻炼孩子的思维能力。实体编程具有无屏幕、操作简单、编程指令实物化等特点,成为儿童计算思维培养的有效载体。不同于文本编程工具的抽象,实体编程工具在颜色、现状等外观设计方面较为符合儿童认知特点,容易激发儿童的学习乐趣。本文系统梳理国内外七种实体编程工具的特征与教育功能;结合相关案例,形成五种面向计算思维发展的儿童实体编程教学策略,包括编程主题生活化,编程任务细化分解、融合STEAM跨界素养、编程过程具象化、游戏化互动教学,为中小学计算思维教育提供一种新视角,丰富低龄学习者计算思维教学策略和方法。
当前,我国儿童编程教育存在师资匮乏、课程体系不完善、编程工具适切性不足等问题,结合本文,提出如下建议:(1)细化不同学习对象的编程教育要求。美国的CSTA K-12 CS Standards(计算机教师协会K-12计算机教育标准),按年龄段分级,将编程的学习内容及难度划分为6个等级Level A-F.根据孩子的年龄,选择对应的编程难度和编程工具。我国各地区可结合本地区编程教育实际发展状况,制定区域性编程教育课程标准,从而更好地规范和落实编程教育。(2)促进编程教学与多学科融合。北歐四国都将编程课程融人中小学教育,作为单独科目设立专门课程或以跨学科的方式融人现有科目。例如,芬兰和瑞典小学阶段的编程课程主要有两种形式,一是整合到数学课程中,让学生应用可视化编程工具编写简单程序;二是整合到手工课中,引导学生编程控制机器人等实物。我国应该鼓励有条件的地区开发编程类地方课程与校本课程,将编程教学作为课程体系的重要内容纳入学科教学基本规范,强化编程教学要求,同时要针对不同学段的教学要求精心设计编程教学内容,组织开展好启蒙、体验、拓展编程教育三部曲。(3)大力提升学科教师编程素养。教师编程素养提升是儿童编程教育教学开展的基础。北欧各国开展了丰富多彩的白上而下及白下而上的公益性编程教育项目,比如瑞典一些大学为中小学数学教师提供基本的编程培训,挪威信息技术教育中心为教师提供“慕课”培训课程。(4)开展趣味性的项目化学习。在儿童编程教学设计中,让学生参与趣味性的教学活动可激发其学习兴趣,在实际项目操作中锻炼学生的计算机技能。(5)设计开发多样化编程教学资源,形成科学的编程课程体系。现阶段,实体编程教具集中在产品开发上,缺少理论研究、实证研究、教学资源开发,与教育实践联系不紧密,存在编程教育属性不突出、实证匮乏、教育功能单一的问题[34]。编程教育内容需要匹配学生的年龄特征、知识结构和生活经验,从资源生态建设角度开展多方协作研发,从儿童认知发展水平、课程标准、教学实证出发,设计实体编程工具和编程教育资源。
参考文献:
[1] Papert S A.Mindstorms:Children,computers.and powerful ideas(2ndedition) [M].New York:Basic Books.1993. 126-128.
[2][4] Humhle N.Mozelius P,Sallvin L.On the Role of UnpluggedProgramming in K- 12 Education [C].Denmark:Academic Conferencesand Puhlishing International Limited.2019.224-230.
[31][34]傅骞,章梦瑶.实体编程的教育应用与启示[J].现代教育技术,2018.28(12):108-114.
[5] Krpan D.MladenoviC S,et al.Tangihle programming with augmentedreality[C].Valecia:IATED.2018.4993-5000.
[6][19] Song J B.The Effec.tiveness of an Unplugged Coding EducationSystem that Enables Coding Education without Computers[J].INTERNATIONAL CONFERENCE ON FUTURE INFORMATION
关键词:实体编程;计算思维;编程教育
中图分类号:CJ434
文献标识码:A
数字智能时代,计算思维已成为个体面临复杂社会问题所应具备的基本素养。编程教育是培养计算思维的主要方式,伴随社会需求与教育供给不断改革与调整,儿童编程教育受到各国的高度重视。芬兰与2016年起规定所有小学生学习编程,欧盟推进编程素养数字化议程,美国计划十年普及中小学编程教育,英国规定5-16岁儿童学习编程,日本要求全面实现小学编程教育必修化,我国于2017年7月发布《新一代人工智能发展规划》,明确提出编程进中小学课堂,在2018年1月教育部宣布人工智能、机器人进入全国高中新课标,同年8月浙江省将信息技术(含编程)列入高考科目。此类政策的发布表明编程教育趋向低龄化,有力推动儿童编程教育学校化进程,逐步实现由个体层面的白组织学习到学校层面的系统融合式学习,像语文、数学等基础性学科一样成为助力儿童发展的基石。
相比之下,我国编程教育实践处于初步发展阶段,校外主要以企业推广为主,呈现一种无序、自由发展的状态;校内多以社团、兴趣班、竞赛突击班等小众的方式进行。此外,编程教育资源和项目建设缺少创新高效性,大多从国外引进,教师编程水平有限,不利于引导学生应用教育资源掌握知识。当前学校常用的编程教育形式以文本编程、图形化编程为主。儿童编程教育核心人物西蒙·派珀特(Seymour Papert)认为,形象化编程工具可改变儿童机械记忆事实的方式,在发现和探索中建构知识,实现自己的想法[1]。对于幼儿和小学低年级学生而言,过早接触电子产品对其视力发育十分不利,他们首先需要学习的不是编程语言,而是策划构思、逻辑分析、模式识别、问题分解、测试纠错的编程思維。相对于传统图形化编程,将语言学习变成关卡,通过实际操作指令引导学生角色过关,有利于编程知识扩展。实体编程作为促进计算思维培养的工具,以实物块为操作指令,将复杂问题简单化,由抽象到具体,关注儿童在简单的算法实践中发展起来的思维能力。本文系统阐述实体编程的特征与功能,探讨发展儿童计算思维的教学策略,为新时期我国儿童计算思维发展实践提供参考。
一、不同编程类型及其比较
随着编程教育的发展,编程教育形式趋于多样化。Humble等人认为编程教育主要有文本编程(Textual Programming)、块编程(BlockProgramming)、不插电编程(Unplugged Programming)三种编程类型[2],傅骞等认为编程形式可分为文本编程、图形化编程、实体编程(TangibleProgramming)[3]。其中,块编程也被称为图形化或可视化编程[4],然而关于不插电编程与实体编程之间的界定目前仍无统一定论。Krpan等认为不插电活动是实体编程的一种形式[5],Song等认为不插电的块编码系统是一种实体编程,它可以通过组合不插电的块来编码[6],Wohl等认为不插电编程、实体编程均为教授计算科学的工具[7],顾俊认为实体设备、“不插电”活动是促进计算思维培养的两种类型[8]。目前而言,尚少有文献资料直接对不插电编程与实体编程进行界定。表1对不同编程类型的内涵、特征、操作、价值等进行了比较。
文本编程通过语句、选择、迭代、常量和变量的组合作为文本代码在文件中执行[9]。当前,绝大多数程序都是用高级语言编写,例如Python等编程语言一条指令可以对应几十条或几百条机器指令,强调高可读性和可写性,适合有一定编程基础的学习者和程序员编写。块编程被称为图形化或可视化编程,其开发是从LISP-LOGO编程语言开始。相较于文本编程,块编程门槛相对较低,易于学生学习计算机编程,提高编程学习动机[10]。不插电编程不使用计算机,通过命令或书面指令来控制彼此或其它东西,与传统需要依托数字设备的编程相比,不插电编程对于技术资源较低或缺乏稳定互联网的学校以及低龄儿童更具优势。教师通过使用卡片、绳子、蜡笔和大量跑动的游戏和谜题等向学生传授计算概念,教授基本编程和机器人操作。例如,Computer Science Unplugged (CS Unplugged)是国外著:名的青少年免费计算机课程,主要面向中学生,重点培养学生对计算机科学的兴趣[11]。实体编程的代码块是儿童能够熟练操作的物理对象,相较于图形化编程更受低龄儿童欢迎。目前,文本编程、图形化编程已为大众所熟悉,但关于实体编程的了解还稍显欠缺。
二、实体编程的内涵与价值
(一)何为实体编程
实体编程(Tangible Programming)由日本学者铃木英之、加藤浩提出,用来描述类似AlgoBlock在物理空间排列程序块的编程工具,将屏幕代码块实物化[12]。实体编程基于现实世界的物化编程方式,为儿童适应图形化编程过渡,较为适合低龄儿童的认知发展。20世纪中期,麻省理工学院拉迪亚·珀尔曼(Radia Perlman)指出影响儿童计算机编程能力发展的两大障碍:语言和用户界面,其中按钮盒(Button Box)和老虎机(Slot Machine)是其设计的儿童编程设备[13]。此后,麻省理T学院媒体实验室推出实体用户界面及可编程程序块等系列产品[14]。塔夫茨大学开发技术研究小组(Dev Tech Research Groupof Tufts University)将实体编程工具与机器人技术结合,设计实体编程T具KIBO(原称为KIWD并将其应用在课堂,这种具体化、实物化的编程T具使儿童更好地理解编程语言的逻辑性[15]。图1展示了当前比较典型的实体编程T具。 (二)实体编程与儿童计算思维培养
实体编程是培养儿童计算思维的关键工具。计算思维成为各个国家青少年发展的核心素养,2021年国际学生评估项目(PISA)数学评估将计算思维纳入测评范围。周以真认为计算思维是运用计算机科学的基础概念进行问题求解、系统设计等系列思维活动,使个人能够像计算机科学家一样的思考,来更有效地解决问题[16]。计算思维是一种思维T具,经常被用来解决问题,是多种思维技能的综合应用,包括抽象和模式概括、系统性信息处理、结构化问题分解、递归及并行思维。在分析问题、解决问题的过程中还会涉及到逻辑思维、数学思维、创造思维、算法思维。相关研究发现儿童阶段的教育干预措施成本更低、教育效果更持久[17]。对于低龄儿童而言,丰富的计算环境和计算思维培养工具需要具有低门槛和高上限两个特性[18],既需要满足初学者入门,又要有较好扩展性,便于学习者进一步拔高。
实体编程是适合儿童编程学习的重要模式。美国儿科协会认为,应限制小孩每天面对电脑、电视屏幕的时间,5岁以下儿童每天最多看1小时屏幕,长时间盯着屏幕会损伤视力。实体编程是没有数字界面和屏幕的编程玩具,通过组合包含流程图命令符号块的小板或传感器,教授孩子们“实物化”的编程语言[19],帮助学习者从流程图学习过渡到编程学习。实体用户界面(Tangible User Interfaces,TUD没有鼠标、键盘,是儿童天生就能够熟练操作的物理对象,为儿童或新手提供创新的游戏和学习方式。实体编程应用实物块表示操作指令,操作简单,含有拓展功能,提供多种玩法和模块支架便于进一步提升。
实体编程符合现阶段我国中小学计算思维教育需求。我国儿童编程教育起步较晚,目前仍处于初步发展阶段,但在国家政策引导和儿童编程制作规模扩大的背景下,短时间内呈现爆炸式增长,未来或将继续保持火热。儿童编程教育备受教育工作者、投资者、家长的重视,但在实际推行过程中仍存在诸多问题。编程理念普及、政策落实保障、教育教学活动体系、教材完善、编程环境、师资配备方面存在不足[20]。除此之外,在编程课程实际开展过程中,还存在着时间不足、教师负担过重、课程过于耗时等课程设置问题[21]。幼儿编程教育缺乏明确的教育政策导向、课程体系不完整、师资力量不足圈。简而言之,儿童编程教育的核心问题可归纳为师资匮乏、课程体系不完善、编程工具适切性不足。麻省理工学院媒体实验室、塔夫茨大学开发技术研究小组作为儿编程教育的主要研发团队,认为实体编程无需依托屏幕编程,將计算机指令具象化为直观易懂的实物图标,非常符合儿童的认知发展,可帮助儿童很好理解编程代码背后所指代的实际意义。就教育本质来说,编程是为了让学生获益良多,核心不是掌握多少编程代码,而是培养孩子的计算思维.通过编程实践帮助学生定义、拆解、分析问题,而这种思维能力的掌握对于学生未来学习、就业均大有益处。
三、实体编程工具的特征与功能
实体编程已进入儿童教学课堂、培训机构及家庭教育中。许多学者在实体编程教育领域进行了实践和研究,并探讨实体编程教育对儿童计算思维的影响。有研究者认为,实体编程减少了用户为学习系统所付出的努力,而将注意力更完全集中在编程本身[23],实体编程相较于图形化编程界面对儿童更具吸引力[24]。编程和计算思维对很多学生来说,都是一个比较抽象的概念。编程教育中的分析问题、合理组织问题、解决问题等特征均与学生的计算思维培养存在相关关系,有研究者对27篇基于编程的计算思维培养实证研究进行分析,发现大中小学生均可采用编程培养计算思维[25]。Bers等人在儿童课堂中以实体编程工具KIBO作为编程教育载体,探讨实体编程对儿童编程技能和计算思维的影响,发现学生的沟通、合作和创造力均有提升[26]。编程教育包括分析问题、合理地组织问题,以及通过超越现有编程的算法思维与同伴合作解决问题。韩国将编程教育作为培养计算思维技能的有效方法[27]。这里以实体编程工具KIBO套件、Cubetto、Mabot、Aieggy、Botley、Matatalab、KUBO为例,阐述实体编程工具的特征与功能,如表2所示。
实体编程通过一系列物化的编程指令,让低龄儿童通过触摸,理解传感器模块事件的触发,发展他们的抽象、观察、分析和创造能力,儿童像创客一样应用实体编程工具DIY设计、制作、批判性思考,为未来创客公民的培养做好准备[28]。综合起来,实体编程工具的特征与功能主要包括:(1)零基础启蒙,无门槛,附带拓展功能,适合进阶学习;(2)无屏幕编程,不需要借助其它电子设备,保护儿童视力,提供真实的交互体验;(3)游戏化编程、玩中学,引导学生主动探索、创造与尝试;(4)融合STEAM教学理念,抽象概念具体化,将工程、艺术、历史等内容结合在一起,使编程学习不再是枯燥的代码;(5)塑造儿童的思维方式,实体编程以具象化的物体模拟儿童遇到的困境,锻炼学生的计算思维,发现问题,拆解问题,分析问题,抽象思考,模拟结果从而解决问题。
四、面向儿童计算思维发展的实体编程教育策略
国际上许多国家、地区出台编程教育政策规划,保障编程教育实践。近日,国家发改委等13个部门提出大力发展OMO(线下与线上的融合)模式在线教育,构建线上线下教育常态化融合发展机制,形成校内外联动良性互动格局。其中,校内编程课程是发展编程教育的主力军,在课程建设、教材研发、人才评价等方面仍需投人大量人物力。本文将从编程课程设计与开发的角度谈及实体编程教育策略。
(一)编程主题生活化
生活主题项目式学习以日常生活故事情景为主线,以解决问题为目的,以实体编程工具为支持,在一段时间内团队共同解决一个复杂问题或一项综合性任务,学生通过亲身参与体验,能更加深刻理解项目的教育价值,下面以“设计消防车最佳灭火路径”为例,展现以生活为主题开展项目式学习。
比如,“设计消防车最佳灭火路径”项目中,教师要引导学生细化和分解问题。首先,要确定火灾发生地点,设置火灾发生地;其次,要设计一个灭火消防车,引导学生根据已有经验对编程工具车进行装扮;然后,要设计消防车行驶路径,遇到障碍物怎么办?如何搭建实物编程指令,到达火灾发生地;最后,要计算消防车最短行驶路线,引导思考、修正方案。在任务分解完以后,学生要积极思考参与到每个环节中,在地图上设置火灾发生地,用编程工具车模拟消防车,用其他积木块设置路障等模拟真实情景,从顺序执行→路径选择→设计路径,不断尝试、修正,最终得出最短路径,每一个环节都需联系日常生活实际,启发学生思考。在这个过程中,教师带领儿童将生活中遇到的真实复杂问题分解成若干可以解决的问题,这是一种递归思维,采用抽象和分解来控制巨大复杂问题,而这种思维方法的训练也正是计算思维培养的核心。 (二)编程任务细化分解
编程学习涉及的问题往往比较复杂,可以在具体学习活动中尝试对编程任务进行细化分解,借助实体编程工具逐一突破。在此过程中,学生需要有一定的问题意识,在教师的引导下能将任务分解成一个个可完成的小任务,将复杂问题简单化,提升儿童的计算思维。比如,在“赛龙舟”学习项目中,教师创设了相关情境:端午节的赛龙舟是我国的一大特色,开展一场极具传统文化特色的龙舟赛对于儿童非常有吸引力。在情境创设完后,儿童可在教师的引导下将赛龙舟这个主题任务分解成若干小任务。第一,赛龙舟至少要有两个龙舟,如何应用已有编程工具车及相关素材DIY;第二,要制定一个龙舟行驶路线,龙舟怎么移动?第三,当龙舟遇到障碍物时,实物编程块如何发布指令避障?在任务细化分解完后,儿童可在教师的引导下,依次进行操作,直至顺利完成比赛,在这个过程中要不断进行调试[29]。
为了使龙舟竞赛活动极具真实性,可事先下载打印好龙舟素材,DIY装扮编程工具车,绘制龙舟行驶地图,设置起点和终点。赛龙舟可以同伴合作竞赛的形式开展,龙舟由编程工具车模拟,龙舟的行驶路线可以用实体编程的实物模块发布指令,通过比较龙舟从起点到终点的行驶时间,决出输赢。此外,儿童可自行对龙舟行驶过程进行路障设置。從提升素养发展的角度来看,制作过程需要有一定的艺术素养,会简单的手工绘制与裁剪,装扮龙舟,绘制龙舟行驶路线。龙舟的行驶需要依托实物编程指令,整个过程儿童的空间方位感与逻辑思维均有提升,通过龙舟竞赛活动,促使儿童不断修正行驶路线,锻炼数学思维和计算思维。
(三)编程融合STEAM跨界素养
计算思维培养注重艺术、数学、计算机等跨学科创作,展现科技与艺术结合之美,强调儿童创造力培养,这实际上是一种STEAM跨界素养追求。实体编程教学需要融合STEAM多维能力素养进行跨界培养。以“造风车”为例,风车是一种深受儿童喜欢的常见工具,借助实体编程制作手工风车,考验儿童的美感与基础实物指令模块的应用,结合风车历史故事,做到玩中学。在正式开始制作前,儿童可在教师的引导下将“造风车”分解成若干小任务,帮助学生塑造解决问题的思维过程,培养计算思维。首先,如果想制作一个颜色较为丰富的风车,需要提前准备好画笔、彩纸、吸管等基本工具;其次,引导学生回忆起脑海中风车的形状,让学生尝试制作一个基本风车,然后涂色;随后,在教师的引导下,学生一起手工制作风车;最后,风车制作完毕后,思考如何让风车动起来。在任务细化分解完后,学生可根据细化的任务依次完成[30]。
看上去,整个案例只有“让风车动起来”这一步骤是借助编程工具车,应用实物编程块多点指令遥控风车移动,让儿童熟悉和了解简单的编程逻辑指令,在此之前的诸多步骤会考验儿童的美感能力、数学思维、工程思维、逻辑思维、耐力、反复试错的精神。对于儿童来说,他们全身心参与和投入的过程是最为关键的。在这个过程中,他们接触丰富的颜色,无意中会形成自己喜欢和不喜欢的色调,会认识很多基本形状。虽然,他不一定能准确说出这个形状特质,但他知道这个形状折叠以后可以用来干什么。正如Angelic所言,计算思维关注的是孩子们在编程和算法实践中发展起来的技能,并使抽象思维、问题解决、模式识别和逻辑推理等素质的发展成为可能[31]。
(四)编程过程具象化
“实体编程 手TDIY”是一种较好的儿童教育开展形式,一方面激发儿童的学习兴趣,另一方面又锻炼孩子的创作能力,手工拼搭带给儿童成就感。下面以“上学记”“立体迷宫”为例阐释游戏化的编程课程体系。“上学记”是一个由儿童自己创编的场景故事,以自身上学故事为原型,在地图上设定上学的起点和终点,准确通过实物编程块指令使机器人到达目的地[32]。起点和终点的路线可以不断设置,刚开始对实物编程指令不熟悉时上学路线可以稍微简单点,当学生对上述指令较为熟悉后,可以设置路障,不断提高难度,体验闯关乐趣。“上学记”主要为路线行驶,相对简单,主要考察学生对实物编程指令的掌握程度,重在提升儿童的计算思维与逻辑思维,可作为学生的课后小游戏,在课上做分享,学生可自行在地图上创建学校、图书馆、商店、马路等日常上学路上遇到的元素,充分发挥学生的创造思维和动手能力,鼓励儿童发散性思维,勇于分享想法。
(五)游戏化互动教学
游戏化学习是当今儿童学习的主流形式,可提高学生的编程兴趣。比如,“迷宫”是非常受儿童喜爱的游戏活动,考验儿童耐心和空间想象力的智力游戏。“上学记”游戏在某种程度上课理解为平面的迷宫玩法,而“立体迷宫”游戏则相当于更复杂和逼真,玩法同样也有多种扩展。同其它实体编程工具玩法类似,“立体迷宫”游戏正式开始之前需要将游戏分解成一个个可完成的小任务,然后解决,这对儿童计算思维的培养非常有益。首先,思考和准备搭建立体迷宫需要的“建筑材料”。对于立体迷宫的形状大小,儿童可在教师的引导下用纸张制作较简单的围墙,在明白其中原理后可白行更改。为了使迷宫更具有主题特色,儿童可根据自己喜好,将围墙涂成自己喜欢的风格,互相协作共同发挥创意。其次,搭建迷宫。搭建迷宫对于儿童而言,可能稍微有点难度,学生可在教师的指导和演示下,明白迷宫搭建的原理,在搭建时不断修正迷宫摆放位置,思考每张纸的粘贴位置,这个过程非常锻炼孩子的耐力和手工搭建能力,将平面东西立体化对于儿童空间思维的发展具有较大促进作用。最后,开始玛塔的迷宫之旅。
编程是一门学科,更是一种工具,在设计程序过程中,儿童需要调用所学的数学、科学等书本里的知识点,通过对编程玩具的设计,将这些知识体系在实践中应用,帮助学生梳理整个知识体系。通过实体编程工具的使用,让学生知道实体器件如机器人的工作原理,任凭儿童自己摸索、纠错、创造,将编程工具当作学习伙伴,培养儿童问题解决能力、专注力、耐力和创造力。在该案例中,玛塔作为迷宫探险者,儿童应用实物编程块的操作指令,控制玛塔的行走,帮助玛塔避障,成功走出迷宫[33]。立体迷宫游戏既让儿童综合考量机器人行进的路径,快速反应出直行或者转弯等简单编程指令,促进儿童思维训练,又帮助他们认知简单的几何图形。最为重要的是让儿童在玩中进行在编程和算法实践,促进计算思维发展。 五、结论与建议
儿童编程的最大意义不是让孩子去学习一门特长课程,而是通过学习编程背后的逻辑,锻炼孩子的思维能力。实体编程具有无屏幕、操作简单、编程指令实物化等特点,成为儿童计算思维培养的有效载体。不同于文本编程工具的抽象,实体编程工具在颜色、现状等外观设计方面较为符合儿童认知特点,容易激发儿童的学习乐趣。本文系统梳理国内外七种实体编程工具的特征与教育功能;结合相关案例,形成五种面向计算思维发展的儿童实体编程教学策略,包括编程主题生活化,编程任务细化分解、融合STEAM跨界素养、编程过程具象化、游戏化互动教学,为中小学计算思维教育提供一种新视角,丰富低龄学习者计算思维教学策略和方法。
当前,我国儿童编程教育存在师资匮乏、课程体系不完善、编程工具适切性不足等问题,结合本文,提出如下建议:(1)细化不同学习对象的编程教育要求。美国的CSTA K-12 CS Standards(计算机教师协会K-12计算机教育标准),按年龄段分级,将编程的学习内容及难度划分为6个等级Level A-F.根据孩子的年龄,选择对应的编程难度和编程工具。我国各地区可结合本地区编程教育实际发展状况,制定区域性编程教育课程标准,从而更好地规范和落实编程教育。(2)促进编程教学与多学科融合。北歐四国都将编程课程融人中小学教育,作为单独科目设立专门课程或以跨学科的方式融人现有科目。例如,芬兰和瑞典小学阶段的编程课程主要有两种形式,一是整合到数学课程中,让学生应用可视化编程工具编写简单程序;二是整合到手工课中,引导学生编程控制机器人等实物。我国应该鼓励有条件的地区开发编程类地方课程与校本课程,将编程教学作为课程体系的重要内容纳入学科教学基本规范,强化编程教学要求,同时要针对不同学段的教学要求精心设计编程教学内容,组织开展好启蒙、体验、拓展编程教育三部曲。(3)大力提升学科教师编程素养。教师编程素养提升是儿童编程教育教学开展的基础。北欧各国开展了丰富多彩的白上而下及白下而上的公益性编程教育项目,比如瑞典一些大学为中小学数学教师提供基本的编程培训,挪威信息技术教育中心为教师提供“慕课”培训课程。(4)开展趣味性的项目化学习。在儿童编程教学设计中,让学生参与趣味性的教学活动可激发其学习兴趣,在实际项目操作中锻炼学生的计算机技能。(5)设计开发多样化编程教学资源,形成科学的编程课程体系。现阶段,实体编程教具集中在产品开发上,缺少理论研究、实证研究、教学资源开发,与教育实践联系不紧密,存在编程教育属性不突出、实证匮乏、教育功能单一的问题[34]。编程教育内容需要匹配学生的年龄特征、知识结构和生活经验,从资源生态建设角度开展多方协作研发,从儿童认知发展水平、课程标准、教学实证出发,设计实体编程工具和编程教育资源。
参考文献:
[1] Papert S A.Mindstorms:Children,computers.and powerful ideas(2ndedition) [M].New York:Basic Books.1993. 126-128.
[2][4] Humhle N.Mozelius P,Sallvin L.On the Role of UnpluggedProgramming in K- 12 Education [C].Denmark:Academic Conferencesand Puhlishing International Limited.2019.224-230.
[31][34]傅骞,章梦瑶.实体编程的教育应用与启示[J].现代教育技术,2018.28(12):108-114.
[5] Krpan D.MladenoviC S,et al.Tangihle programming with augmentedreality[C].Valecia:IATED.2018.4993-5000.
[6][19] Song J B.The Effec.tiveness of an Unplugged Coding EducationSystem that Enables Coding Education without Computers[J].INTERNATIONAL CONFERENCE ON FUTURE INFORMATION