APP下载

儿童编程教育的育人价值探析①

2023-01-11张建军王有升

中国校外教育 2022年2期
关键词:编程儿童思维

张建军 王有升

2017 年,国务院印发的《新一代人工智能发展规划》提出:“在中小学阶段设置人工智能相关课程,逐步推广编程教育,鼓励社会力量参与寓教于乐的编程教学软件、游戏的开发和推广。”[1]这进一步推动编程课程在我国中小学校的开展和普及。2018年,教育部印发《教育信息化2.0 行动计划》,提出要“完善课程方案和课程标准,充实适应信息时代、智能时代发展需要的人工智能和编程课程内容”[2]。2019 年,中小学人工智能教育项目成果发布,让《人工智能》这一学生用书走进北京、武汉、广州、西安、深圳的中小学课堂[3]。随着国家政策和有关项目的推动,很多中小学开始增设编程教育内容,编程逐渐成为一门必修课。我国编程教育处于初步发展的探索阶段,校内编程教育尚未发展成熟,儿童编程教育行业也存在良莠不齐的现象。为深入推进儿童编程教育的良性发展,有必要对其独到的育人价值展开分析。儿童编程教育的育人价值主要分为与编程领域相关的领域素养和超越编程领域的通用素养。领域素养聚焦于儿童编程教育的教育目标,通用素养主要对儿童编程教育内容与过程进行分析。

一、儿童编程工具的发展与儿童编程教育的本质

儿童编程教育的出现与儿童编程工具的诞生息息相关。从文本编程到有形编程,再到图形化编程的发展,儿童编程工具让编程变得易理解、易操作,充分适应儿童的年龄特点和发展规律,让我们体会到儿童编程教育的本质。

LOGO 语言的出现将儿童编程教育带入人们的视野。为解决以往编程语言过于抽象而不适合儿童的问题,1968 年,美国麻省理工学院人工智能实验室的西蒙·派珀特(S. Papert)率领研究团队创建了LOGO 语言[4]。自此,西蒙·派珀特成为儿童编程教育的先驱者,他提出的儿童编程教育思想指引着儿童编程教育的发展。LOGO 语言是一种文本编程语言,与自然语言非常接近,便于儿童理解。最初,儿童可以通过LOGO 语言使用向前、向后、向左转、向右转及返回等命令控制实体“海龟”机器人的行动。随着个人计算机的普及,派珀特等人又创建了基于计算机环境的“屏幕海龟”,儿童可以控制“海龟”图标在计算机上绘制几何图形。虽然LOGO 语言简单易操作,但人们通过教学实践发现,即使通过键盘输入LOGO 语言代码,也要10 ~14 岁的儿童才能实现[5]。

20 世纪70 年代,同在麻省理工学院LOGO 实验室工作的拉迪亚·珀尔曼(Radia Perlman)创造了“按钮盒”(button box)和“老虎机”(slot machine)帮助儿童进行LOGO 语言的学习[6]。这两种装置主要通过积木块或卡片代替键盘进行程序语言的输入,以进一步简化编程过程中的操作方法,打开有形编程的大门。与此同时,塔夫茨大学开发技术研究小组(DevTech Research Group)将有形编程与机器人技术相结合,使机器人进入儿童编程教育领域,推动儿童编程教育的商业化发展,产生不同种类的有形编程工具。20 世纪90 年代,日本学者铃木(Suzuki)和加藤(Kato)正式提出“有形编程”(Tangible Programming)这一概念,即可以通过物理环境的操作引起虚拟环境的变化,描述他们所设计的Alogo Block 系统[5]。

2003 年,美国麻省理工学院媒体实验室设计开发了Scratch 软件,儿童可以通过拖动程序块进行排列组合完成程序的设计,进行游戏、故事和动画的创作[6]。Scratch将编码积木虚拟化为计算机上的程序块,秉承了有形编程易操作、易理解的特点,成为最受欢迎的儿童编程软件。随后,App Inventor、Alice、Daisy、the Dinosaur、Hackety-Hack、Code Monster 及Codecademy 等各种各样的图形化编程软件一一出现。儿童编程工具经历了从文本编程到有形编程再到图形化编程的发展历程,更适合3 ~12岁的儿童使用。对12 岁以上没有接触过编程的青少年来说,这些工具也是他们编程入门的良好选择。

通过回顾儿童编程工具的发展历程可以看出,儿童编程教育并不是学习写代码,也不是计算机编程教育的提前。派珀特认为,儿童学习编程不能只聚焦于技术本身,而应学习编程背后的问题解决方法[7]。他提出“高天花板”(high ceiling)、“低地板”(low floors)和“宽墙”(wide wall)的编程教育理念。Scratch 的主设计师米切尔·雷斯尼克(M. Resnick)将其表述为能立即轻松地创建内容(低地板),并随着时间的推移保持兴趣,同时允许学生跨越多种学习风格,创建越来越复杂的项目(高天花板),促进学生编程认知和兴趣的发展(宽墙),在此过程中,儿童的编程经验和技能随着编程工具一起成长[8]。由此可见,儿童编程教育是利用适合儿童的编程工具,通过编程体验,提升儿童的编程认知与学习兴趣,培养思维能力和问题解决能力的一种学习方式。儿童编程教育更注重“用编程学,而不是学编程”,通过编程学习,儿童可以发展领域素养与通用素养。领域素养的发展指儿童计算思维的培养;通用素养的发展指儿童的探究能力和创造力的提升,增强儿童的编程学习兴趣和互动体验,促进儿童学会学习。只有认清这一事实,才能把握儿童编程教育的真义。

二、儿童编程教育的目标聚焦于计算思维的发展

(一)计算思维的溯源与内涵

计算思维是儿童编程教育的核心目标,也是重要的领域素养。美国卡内基梅隆大学的周以真(J. M. Wing)将计算思维定义为一种运用计算机科学基本概念进行问题求解、系统设计及理解人类行为等涵盖计算机科学之广度的一系列思维工具[9]。2008 年,周以真教授对计算思维做了进一步界定,通过她的界定,我们了解计算思维是概念化而不是编程语言的开发过程,它是人的思维,是一种逻辑过程,是帮助我们解决问题的方法,是人类生活的基本技能,而不是一种抽象的哲学[10]。

计算思维概念的使用与派珀特的建构主义研究有关。派珀特师从皮亚杰,在建构主义(constructivism)的基础上提出了建造主义(constructionism),提倡在制作和建造中学习[4]。他认为形式思维不一定是解决问题的最好方式,即便使用具体思维,借助工具也能有效地解决问题。他用“bricolage”表示自己的建造主义学习过程,“bricolage”是一个法语单词,原指“原始”社会使用手头工具摆弄的“具体科学”[7],也指“走街串巷的修补者”这一职业,他们可以利用口袋中有限的工具解决不同的个性化问题[4]。计算思维强调的计算机科学基本概念被比作有限的工具,利用这些概念解决不同的问题才是形成计算思维的关键。此外,布伦南(K. Brennan)和雷斯尼克(M. Resnick)提出关于计算思维能力的测评模型,包括计算概念、计算实践和计算观念[11]。计算概念指在编程过程接触的各种概念,包括顺序(sequence)、循环(loops)、并行(parallelism)、事件(events)、条件(conditionals)、运算符(operators)和数据(data);计算实践关注的是编程的学习过程和问题解决策略,包括递增(being incremental)和重复(iterative)、测试(testing)和调试(debugging)、再利用(reusing)和再创作(remixing)及抽象(abstracting)和模块化(modularizing);计算观念指学生在编程学习过程中不断形成的对自己与他人关系及周围世界的理解[12]。该测量模型让我们进一步清楚计算思维涉及的不同方面,不仅注重对计算机科学概念的运用,还注重问题解决过程。

总之,计算思维是人用逻辑解决问题的过程,在该过程中逻辑思考和问题解决能力等因素与计算思维的发展密切相关。

(二)编程能有效促进儿童计算思维的发展

计算思维虽是人用逻辑来解决问题的过程,是人类的一项生活技能,但并不意味着儿童一定能在生活中完善计算思维。在生活中,人在解决问题时会呈现混乱、无序和无效的状态,缺乏引导计算思维发展的有效方式。编程恰恰为儿童计算思维的发展提供了有效方式。简单说,编程就是程序的编辑,是我们想让计算机完成一些任务,将自己的思维过程用计算机能懂的语言进行编辑的过程。计算机运行的原理是用逻辑解决问题,儿童进行编程能体验运用逻辑解决问题的过程,促进其计算思维的发展。在问题情境中,儿童通过编程的实践操作解决问题,计算思维的发展与情境相联,有利于儿童进行迁移,将计算思维真正发展为一项基本生活技能。计算思维的发展也为儿童进一步的编程学习奠定基础,更好地实现从有形编程到图形化编程再到代码编程的过渡。

此外,大量研究表明,编程对儿童计算思维的发展具有重要作用。萨利特佩奇(M. Saritepeci)的研究表明,学生的编程自我效能感与计算思维技能发展间存在显著的相关关系[13]。马塞利诺(M.J. Marcelino)等人利用Scratch 软件,通过远程教学帮助儿童提高计算思维和问题解决能力[14]。熊秋娥等人通过研究发现,图形化编程软件对低龄儿童计算思维的发展具有促进作用[10]。

在具体的实践中,首先,儿童编程教育的主题与日常生活相联,为儿童创设真实的问题情境,使儿童融入情境之中理解问题、分析问题、制订策略及解决问题。其次,儿童编程教育拥有多样化的实体编程和图形化编程工具,这些工具简单易操作,有助于儿童理解顺序、循环、并行、事件、条件等概念。例如在编程时,儿童需知道命令的先后顺序,是否需重复执行,是否需添加执行条件,等等。具体形象的程序块或编码积木有助于儿童更简便地进行操作,从而更容易理解编程中所包含的计算机概念。除此之外,在机器人、游戏、动画及故事等创作过程中,儿童需对程序及机器人进行测试和调试,不断反思、修改和制订解决方案,最终达到解决问题的目的。最后,在儿童编程教育中,儿童能够在师生和生生互动中交流和表达对作品的看法。这种交流有助于儿童清晰阐释自己的思维过程及所理解的世界,进一步理顺自己的思路或引发自己进一步思考。

教育目标的实现需教育内容和教育过程的支持。计算思维的培养融合在儿童编程教育的内容和过程中,而内容与过程会呈现其独特的价值,发展儿童的通用素养。

三、在儿童编程工具的“微世界”中进行探究与创造

学习使用儿童编程工具是儿童编程教育的主要内容。儿童编程工具形成一种独特的“微世界”,儿童利用编程工具学习就是在“微世界”中进行探究与创造,发展通用素养。

(一)儿童编程工具所形成的“微世界”

现今中小学开展的编程教育课程各具特色,例如深圳螺岭外国语实验学校开设的Arduino 机器人编程教育,包括Code、Scratch 编程和AS 机器人等课程;中国人民大学附属中学采用“人工智能+X”的培养模式,开设了“Python 语言”“数据挖掘样本”等特色课程;南通大学附属中学开设了机器人课程并研发了《Arduino 创意机器人》校本教材[15]。国内较有代表性的儿童编程教育品牌机构包括优必选、乐博乐博、编程猫、MakeBlock、奇幻工房及妙小程等,它们的课程内容涉及Python、Scratch、AppInventor 以及C++ 等语言的学习[16]。由此可以看出,机器人和儿童编程软件是儿童编程教育的重要组成部分。计算机的虚拟环境和机器人的实物环境成为现实世界的映射,儿童的思维在这种环境中得以表达,继而形成一个供儿童探究的“微世界”。儿童编程教育的课程主题大多与日常生活相近,包括动物、植物、美食、生活用品以及其他日常事务等,这符合儿童的先前认知,能激发儿童的兴趣,同时也将“微世界”与儿童的日常生活相联系,将跨学科、跨领域的编程知识与儿童的日常经验联系起来。

(二)“微世界”中的问题解决与儿童探究能力的提升

在学习编程的过程中,儿童会遇到不同的问题,需运用数学、科学、工程、美术和音乐等不同学科与领域的知识解决。这时,儿童虽利用某种学科知识解决问题,但这些知识并不是文字形式的公式或定理,而是体现在儿童的日常经验中,并通过编程工具发挥作用。有时学习知识的困难不在科目本身,而在知识的呈现方式。对儿童来说,以文字呈现的原理、规律等过于抽象,有时会因与日常表达方式不同而产生歧义,导致儿童难以理解这些知识。但通过程序的编辑与机器人的制作,儿童会结合自己的日常经验解决问题,在探究中获得成长性经验。这种成长性经验进一步帮助儿童解决学习和生活中的问题并持续成长。经历这一过程,儿童不但能获得成长性经验,更为重要的是能提升探究能力。杜威认为:“在人类历史上,各门科学都是从有用的社会作业逐步发展起来的。”[17]在编程的“微世界”中可以模拟多种社会作业,让儿童在实践场域中体验知识的作用,在解决问题过程中提升探究能力,建构知识系统与认知模型。即使他们无法像科学家那样以符号的形式将知识展现出来,他们也在像科学家那样进行探究,逐渐学习不同的知识。

(三)“微世界”中儿童创造力的发展

儿童编程教育的“微世界”为儿童创造力的发展提供了有效的环境。通过游戏、动画及机器人的制作,儿童逐渐习得编程和拼装机器人的技能,理解每一个部件或程序块的作用。这种技能并不是依靠反复操作某一部分获得的,而是通过做一件事情,即在这个“微世界”中完成一个主题任务获得的。所以,这时的技能不再是单纯的肌肉和记忆训练的结果,而被赋予一定的意义,与情境相联。通过这种方式获得的技能可被有效地迁移,有助于儿童充分发挥创造力。同时,不同的程序块或积木能够产生多种多样的搭配,给予儿童自由发挥的空间。在创造过程中,儿童灵活应用自己获得的技能,例如儿童可以用积木搭建建筑物、动物、植物、武器和交通工具等,并通过编程赋予它们不同的功能。儿童也可以用软件设计自己想要的动画人物形象、语言、动作和故事情节等创造属于自己的动画故事或游戏。没有规定目标的束缚,儿童在创造过程中会产生很多新奇的想法。儿童有一套自己的“世界观”,他们看待世界的方式与成人不同,所谓的常识或习惯对儿童的束缚也比较小,这也意味着他们的想法难以在现实世界中实现。然而,通过编程和机器人的创造,他们可将自己的想法付诸实践,例如创造一座会飞的或漂在水上的城堡等。创造的过程不是一帆风顺的,儿童需经过反复尝试与修改。在尝试中,儿童或许有新的创意并再次进行验证,直至实现自己的想法。儿童的创造不是产生一个全新的成果,而是儿童对自身未知的世界的认识与思考,是儿童运用获得的知识与技能实现自己想法的过程,存在改变现实世界的潜能。

四、在编程学习过程中激发和保持学习的动力,促进儿童学会学习

在实施儿童编程教育的过程中,教师会注重激发和保持儿童的学习动力,促进儿童学会学习。“学会学习”作为促进个人幸福与社会发展的核心素养之一,被世界各国所重视。“学会学习”并不只是学会认知,而是认知、情感、身体、自信心和意志力等智力因素和非智力因素的统一。1996 年,芬兰将“学会学习”分为认知维度和情感维度。其中,情感维度主要指与自我和情境有关的激发并维持学习的动力因素[18]。可见,情感是学生学会学习的重要因素。儿童编程教育能够营造积极的学习氛围,激发并维持儿童的学习动力,培养儿童的学习品质,促进儿童学会学习。

(一)多元条件支持下儿童编程学习兴趣的增强

与自我相关的动力因素包括学习动机、自我概念、自尊、自我效能感、失败恐惧等[19]。兴趣是重要的学习动机,也是儿童编程教育的重要理念。

在编程工具的使用上,实体编程工具和图形化编程工具简单易懂,儿童可以利用其进行游戏、动画和故事的创作,这本身对儿童就有极大的吸引力。威尔逊测量了儿童关于Scratch 感兴趣的程度,结果表明,学习Scratch 能给儿童带来很多乐趣,成为积极的学习体验[5]。

在教学方法上,中小学编程课堂除频繁使用讲授法外,就是使用任务驱动法[20],这为儿童提供更多动手操作的机会,提升了儿童的编程学习兴趣。不同的编程教育机构在教学方式上各具特色,例如乐博乐博通过情境导入、探索体验、反思学习、总结重构这一项目管理中的P-D-C-A 模式进行教学;编程猫以游戏、动画和图形为主要媒介,采用PBL 项目式教学[16]。这些不同的教学模式不是刻板地传授程序的编辑步骤、聚焦于技术的获得,而是让儿童的学习过程变得灵活多样、生动有趣。这有助于儿童有效体会编程学习给自身带来的作用,满足不同儿童的需求,并给他们带来积极的学习体验。

在教育评价上,儿童编程学习的结果是以作品的方式呈现的,比赛是评价儿童编程作品的重要途径。比赛是编程教育的重要组成部分,能让更多的儿童提升编程学习兴趣。编程教育机构会与各类比赛相衔接,不同机构所衔接的比赛有所不同。编程比赛大致可分为商业赛、行政赛和国际赛。商业赛是由非政府组织、机构或个人举办的,参赛者获得的证书不被政府机构和学校认可;行政赛主要是由教育局、中国科学技术协会、工信部、电教馆或少年宫等政府部门和团体主办的赛事,参赛者获得的证书有时能为其加分;国际赛主要指一些全球性的比赛。这些比赛包含各种各样的项目,项目多以问题为导向,儿童完成这些项目就如做游戏一般,能感受到很多乐趣。儿童自愿参加比赛,由编程教育机构提供培训。例如,参与行政赛时,学校会同校外编程机构合作,由编程机构的教师对学生进行培训。这让更多的儿童有更长的时间参与编程学习,体会编程的乐趣,增加儿童的积极学习体验。

儿童在编程课堂和比赛时几乎全程自己动手操作,这给予儿童极大的自主性和掌控感,能进一步激发和维持儿童的学习兴趣。儿童自己完成作品或取得比赛的胜利,也能获得成就感和荣誉感,提高自信心和自我效能感。在编程学习或比赛过程中遭遇的问题与困难对儿童来说是一种挑战,但适度的挑战能激发部分儿童的兴趣与斗志。对解决问题和完成挑战的渴望,能增强儿童的求知欲和意志力,使他们全身心投入编程学习中。儿童编程教育作为一种解决问题的学习方式,能培养儿童的学习兴趣、自信心、自我效能感和意志力等,从而促进儿童学会学习。

(二)多元条件支持下儿童互动体验的提升

与情境相关的动力因素不只包括客观情境对儿童的支持,还包括家人、同学和教师等的支持。儿童编程教育不仅给予儿童“微世界”环境的支持,还让儿童与教师、同学和家长互动,为儿童的编程学习提供帮助。

在编程教育机构,师生关系相对较和谐,儿童的自主性较强。儿童大多是根据自己的兴趣自愿选择进入编程教育机构的,他们会主动进行编程学习。机构中的教师在一定程度上又是儿童的服务者,对儿童的束缚较小,师生关系更加融洽。这种关系会产生“师导生创”的教育模式,师生之间在身体或思想观念方面不存在明显的管束或依附关系[21]。在这种模式下,儿童和教师在一起就像和一群大朋友在一起一样。在课堂上,儿童和教师一起进行制作和编程,可以在课堂上就自己的疑惑随意提问,教师也能风趣地给予学生解答,从而摆脱了知识权威与教师权威对师生的束缚。在这种关系下,教师能更方便地了解不同儿童的学习、性格及家庭环境等方面的情况,以便给予儿童个性化的教育和支持。儿童和教师如同游戏伙伴一样,这让儿童产生了良好的互动体验。

在课堂上,儿童可与其他同学讨论自己的作品,这有助于进一步激发儿童创造性的想法,对作品进行创新。在比赛中,儿童有时需要团队合作完成任务,不同的儿童负责管理器材、编程或操作等不同的工作。这种团队配合、交流讨论成为积极的学习体验,促进儿童全身心投入编程学习中。

亲子活动是编程教育机构的重要活动之一。通过亲子活动,家长与儿童一起学习编程,体验编程的乐趣、理念和作用。这有助于家长了解儿童编程学习的过程,更好地与儿童互动。基于此,家长能以同理心对待孩子,避免出现强制孩子学习的现象。充分理解编程教育后,家长能和教师一起为儿童提供良好的教育环境,采取合适的教育干预措施,让儿童在编程学习过程中产生积极的学习体验。

学习不只发生在大脑中,还具有社会性和情境性。儿童编程教育为儿童与教师、同学、家长互动提供了开放的环境,也就是说,它为儿童的学习提供了社会性情境的支持,激发了儿童的学习动力,促进儿童学会学习。

五、结语

我国学校编程教育处于发展初期,尚未形成完善的课程体系,缺乏统一的教材、课程标准和教学目标,缺乏师资和完整的培训体系,个别学校甚至不认可编程教育。有些编程教育机构存在虚假宣传、师资质量不过关及片面追求利益等问题。然而,通过探寻儿童编程教育的育人价值可知,儿童编程教育有助于发展儿童的领域素养和通用素养,有助于儿童发展计算思维,提高探究能力并发展创造力,有助于儿童学会学习。聚焦儿童素养的发展,能在学校编程课程的建设、教学内容的选择、教材的编制、教师专业性的提升、编程教育机构的规范等方面提供帮助,促进儿童编程教育的良性发展。

猜你喜欢

编程儿童思维
思维跳跳糖
思维跳跳糖
思维跳跳糖
思维跳跳糖
编程,是一种态度
元征X-431实测:奔驰发动机编程
编程小能手
纺织机上诞生的编程
留守儿童
六一儿童