研究报告 | 日本小学编程教育必修化的思考
2021年01月09日 09:33 来源:未来基因课堂
本研究报告系
【未来基因(北京)人工智能研究院出品】
作者:龚超 王冀
【摘要】自中国国务院发布《新一代人工智能发展规划》提出要在中小学阶段设置人工智能相关课程,逐步推广编程教育三年以来,中国小学编程教育事业取得了长足的进步,同时也存在一些问题。2016年,日本政府提出要在2020年开始实施日本小学编程教育必修化,近四年的时间里,日本小学编程教育工作开展得如火如荼,涌现出不少新理念、新思路、新做法。本文通过对日本小学编程教育的相关情况和举措进行梳理分析,希望能为中国小学编程教育工作的开展带来一些借鉴与思考。
【关键词】 日本小学 编程教育必修化 计算思维 人工智能
中国小学编程教育的背景和现状
2017年7月中国国务院发布的《新一代人工智能发展规划》(以下简称《发展规划》)中明确指出:实施全民智能教育项目,在中小学阶段设置人工智能相关课程,逐步推广编程教育,鼓励社会力量参与寓教于乐的编程教学软件、游戏的开发和推广。在人工智能教育上升到国家战略的同时,中小学编程也在如火如荼地进行。
中国教育部先后出台了一系列促进中小学编程教育的政策文件,如《中小学综合实践活动课程指导纲要》、《教育信息化2.0行动计划》、《关于引导规范教育移动互联网应用有序健康发展的意见》、《教育部关于加强和改进新时代基础教育教研工作的意见》、《教育部关于加强初中学业水平考试命题工作的意见》、《教育部关于加强和改进中小学实验教学的意见》、《教育信息化和网络安全工作要点》等。
2020年11月,教育部公布了《关于政协十三届全国委员会第三次会议第3172号(教育类297号)提案答复的函》,其中给出了下一步工作的主要安排,即推动编程教育纳入信息科技课程标准以及进一步培训提升相关教师软件编程能力 。
尽管《发展规划》发布三年多的时间内中国小学编程教育工作取得了长足的进步,然而依然存在一些需要注意的问题:
第一,方向性问题,编程与人工智能 “纠缠不清”。有一些学者、机构等将编程冠以人工智能,推出“人工智能编程”, 仿佛离开了人工智能,编程就不再是编程。其实,编程课除了在课程/教材中加入少量人工智能基本概念介绍外,与人工智能课程毫无关系 。
第二,内容设计问题,编程需要重点培养学生们的计算思维,而不是培养码农。有一些针对小学生的入门编程教材,将大学编程内容简单下放,充斥着大篇幅的代码,这样的结果可能会让小学生产生抵触的情绪,在本应是兴趣和思维培养的阶段,却让孩子们丧失了学习编程的兴趣。
第三,教师素质问题。无论是中小学编程教育还是人工智能教育,各方均将关注重点放在了学生的教育上,针对教师素质培训相对少之甚少,尤其是一些偏远地区的学校。
第四,生态搭建问题。现在似乎存在着一种误区,即中小学编程教育是学校的事情。其实不然,在中小学编程教育上,政府、中小学、大学、机构、企业等的作用都至关重要。只有社会各方力量都参与,才能搭建好中小学编程教育的生态,推动其良性发展。
日本小学编程教育的发展脉络
自2016年日本科学文部省提出2020年正式在全国实施小学编程教育必修化政策以来,日本各界均为之做出了诸多探讨与努力,本文聚焦日本小学编程教育必修化的相关内容,以期为中国小学编程教育事业的发展带来一些借鉴与思考。
一、日本小学编程教育必修化的背景
2016年4月,日本文部科学省颁布发布了下期《学习指导要领》 ,提出到2020年将在小学全面实施编程教育必修化。小学生编程教育一时间成为日本全民关注的焦点,近几年来多次成为各类主流刊物探讨的主题。
《东洋经济》多次聚焦日本小学编程教育
其实,日本重视编程教育可以追溯到20世纪80年代。1989年,日本曾提出在小学中引入编程教育,1992年正式在小学中开始执行,初中则在1993年开始执行。之所以在2016年重新提出小学编程必修化,笔者认为有以下几个主要因素:
第一,时代变化。随着大数据、云计算、物联网、人工智能等信息技术的发展,世界迎来了第四次工业革命。在《日本再兴战略2016》中,物联网、大数据、人工智能和机器人等技术革新所带来的“第四次工业革命”的实现被日本视为增长战略的一大支柱。日本政府提出了社会5.0(Society5.0)的概念,即通过第四次工业革命实现的超智慧社会体系。为了实现社会5.0,人工智能技术作为最重要的手段之一必不可少,而编程作为人工智能的基础则显得尤为必要。
第二,国家竞争。世界不少国家已经将发展人工智能上升为国家战略层面,未来国家之间的竞争,人工智能必将扮演着重要的角色。日本的现实问题是人工智能人才相对于需求来说严重不足。据经济产业省称,2020年、2025年和2030年的人工智能人才缺口分别为4.4万人、8.8万人和12.4万人。从企业确保人工智能人才的实际情况来看,即使是IT企业,也有85%的日本企业回答“没有确保人工智能人才”。而有预测指出,2020年和2030年日本IT人才缺口将分别达到36.9万人和78.9万人。 作为人工智能技术基础的编程教育是实现人工智能人才战略的重要保障。
第三,经验教训。日本其实很早就提出了在小学进行编程教育,然而,由于每周给编程开设的学时太短(每周最多1学时),授课内容也在反复摸索中,因此教育效果并不显著。
第四,他国之鉴。日本一些学者认为,日本虽然是发达国家,但编程教育的实施却比其他国家落后 。一些国家很早就在小学实施了编程教育必修化,在文部科学省制定相关政策的数年前,就开始对各科目的教育进行重新评估,调研了不少国家的现状。笔者根据相关材料,梳理总结了小学编程教育必修化的国家及其开始的年份,如表1所示:
表1 小学编程必修化的国家及开始年份
表1 小学编程必修化的国家及开始年份
数据来源:《国外编程教育相关调查研究》(日本文部科学省平成26年信息教育指导力量提高援助项目报告书)
[1]英国从1995年开始设置了“IT”这一科目,1999年从“IT”改名为“ICT”。然后,从2014年9月开始,“Computing”这一科目被新设为必修科目。加入了算法的理解和编程语言的学习等,成为能够学习更正式的编程的内容。分为初等教育(5岁到10岁)和中等教育(11岁到15岁),使用的编程语言是:初等教育是Scratch, LOGO, Kodu,中等教育是Scratch, Kodu, Python。
二、定位清晰明确,聚焦编程教育与计算思维培养
日本文部科学省指出,编程是随着时间推移普遍需要的一种能力,无论将来会从事什么专业,计算思维都十分重要。要让孩子们具有指示计算机按照其意图进行操作的体验,其目的是培养计算思维,而不是培养码农。计算思维指的是为了实现自己的一连串动作, 应该如何组合、编排各种动作。也就是说,用不同的记号代表不同的动作,并考虑如何编排、改善记号方式,使得其结果更贴近自己脑中目标这类逻辑性的思维方式。
2018年3月,日本文部科学省发布了《小学编程教育指南(第一版)》,同年11月,《小学编程教育指南(第二版)》发布。2020年2月,日本文部科学省发布了《小学编程教育指南(第三版)》,从日本文部科学省短时间内容相继出台三版《小学编程教育指南》来看,日本的小学编程教育正在不断更新完善。
尽管日本政府非常重视人工智能,相继出台了一些人工智能政策,如2016年7月发布的《日本下一代人工智能促进战略》、2017年3月发布的《人工智能技术战略》、2019年6月发布的《AI战略2019》等,2020年7月发布的《综合创新战略2020》,并在《AI战略2019》以及《AI战略2019(2020.06修订版)》中重点强调了人工智能教育战略对于小学的重要性,《小学编程教育指南》依然不改初心,围绕编程教育与计算思维培养进行指导,几乎不涉及任何人工智能的内容 。
在这点上,笔者十分赞同日本科学文部省的做法。编程、机器人学与人工智能有着本质的不同,不可张冠李戴。之所以在中国出现“伪人工智能”现象,笔者认为是没有理清编程、机器人学和人工智能的定义所致。在讨论一个事物之前,一定要对该事物的定义有一个清晰界定,否则就会方向不明、论述不清。编程、机器人与人工智能的定义如下:
编程,又称程序设计(Programming),是给出解决特定问题程序的过程。程序设计过程一般包括分析、设计、编码、测试、调试等不同阶段。 编程的一个目的,是培养计算思维(Computational Thinking)。
周以真教授最早提出并倡导“计算思维”的概念,是运用计算机科学的基础概念进行问题求解、系统设计、以及人类行为理解等涵盖计算机科学之广度的一系列思维活动,正如她在文章中所说,计算思维代表了一种普遍适用的态度和技能,不仅仅是计算机科学家,每个人都应该学习和使用。
一些学者认为,在K-12阶段,计算思维则主要包括以下一些特征:
使用抽象和模式识别以新的和不同的方式来表示问题。
逻辑地组织和分析数据。
把问题分解成更小的部分。
使用编程思维技术,如迭代、符号表示和逻辑操作来解决问题。
将问题重新表述为一系列有序的步骤。
确定、分析和实施可能的解决方案,以实现最有效的步骤和资源的结合。
将解决某个问题的过程推广到更广泛的问题当中。
1956年达特茅斯会议的策划发起者之一、斯坦福大学的约翰·麦卡锡(John McCarthy)等学者认为,让机器达到与人类具有同样的行为,就能被称为人工智能。
《人工智能:一种现代的方法》一书中,就按照思考与行动、像人与理性的维度将人工智能划分为:像人一样思考,像人一样行动,理性地思考与理性地行动等四类。《世界知识大辞典》中给出的人工智能定义是指利用电子计算机模拟人类智力活动、研究智能的一门科学。《辞海》中给出的定义是,人工智能是利用电子计算机模拟人类智力活动的科研领域,即由计算机代替人的智能来完成某项工作。人工智能的研究对于人类的学习、记忆和思维活动提供了新的研究方法及理论。从已有的这些定义不难看出,人工智能的概念均涉及某种模拟、延伸和扩展人的智能。
机器人学(Robotics)是一项涵盖了机器人的设计、建造、运作以及应用的跨领域科技。机器人学涉及的科目主要有:运动学和动力学、系统结构、传感技术、控制技术、行动规划和应用工程等。 美国于20世纪50年代末制造出世界上首台工业机器人,日本于20世纪60年代末制造出第一台工业机器人,中国则于20世纪70年代初开始研制工业机器人。中国早已形成了完备的机器人学课程教育体系,以及机器人学的科普工作和相关比赛。
编程、人工智能、机器人学关系图
编程、人工智能、机器人学既有区别,又有联系,三者定义不同、研究问题不同、学科体系不同。但是,作为高度交叉跨学科的人工智能与机器人学早已你中有我、我中有你,同时,它们都需要一定的编程基础实现最终的目标。总之,在学习编程时,更多的关注在于计算思维的培养;学习人工智能时,聚焦在如何模拟、延伸和扩展人的智能;而机器人学,则更多的是研究机器人的控制及与被处理物体之间的相互关系。
三、并未独立设科,而是将编程全面融入各科当中
2016年5月,文本科学省举行了一次专家会议,会议的一个议题是如何将编程纳入到理科和数学等现有科目当中,而不是将其作为一个独立的科目 。会议最终的结论是,尽管要在小学实现编程必修化,然而并不需要增加编程这一科目(见表2),而是在现有的课程中加入学习编程思维的要素。
表2 日本小学各学科的课时数
[1]相当于国内小学自然课,理科会在初高中逐渐分为物理化学地理等科目。
值得一提的是,芬兰的小学编程必修化思路与日本相同,并未将编程独立列为一个科目,而是将其作为一项新的学习技能,与相应课程结合,让编程融入学生的学习生活中。
芬兰从2016年开始将编程教育作为小学必修课,其目的并不是为了培养程序员,而是为了给所有人提供学习编程的机会。如在小学1到2年级的学生,可以通过实际的游戏学习向电脑发出指令;3到6年级的学生,则使用Scratch等图形化软件进行编程学习;从7年级开始学习正式的代码编程语言。
这种融入各学科的编程教育与单独设置编程课的做法,各有利弊,本文不作过多的探讨。但就编程与各学科紧密的结合这一做法来说,它能够让学生们更好地了解编程所带来的实际用处,能够进一步扩展计算思维的培养。
由前文可见,日本中小学编程教育,从一开始就是“编程+X”。在编程必修化提出不久后,日本陆续出版了一系列针对小学编程的图书。随着小学编程必修化的邻近,更多授课书籍也相继出版,其中不乏关于编程与各学科相结合案例的图书。
日本2017年1月出版的探讨小学编程教育的图书
日本2019年7月出版的《Scratch编程图鉴》
四、编程教育的目标与能力培养
《小学学习指导要领解说总则篇》中阐明了小学进行编程教育的目的:
第一,培养计算思维;
第二,编程的实操性以及可以充分利用计算机来解决身边的问题并建立更美好的社会;
第三,通过编程教育加深对每个学科学习的理解。
日本将计算思维的培养放到了首位,提倡儿童在编程和使用计算机时要体验到乐趣和成就感,提升程序能够解决问题的意识,激发他们的好奇心,充分培养计算思维。在编程过程中,要充分结合身边的问题,热心参加各种活动,进一步强化更多利用编程完成任务的意识以及建立美好社会的态度。最后,利用编程巩固各个学科的内容,丰富学习方式。
根据《小学编程教育指南(第三版)》的内容可以得知:小学编程教育是让儿童在体验让电脑按照自己想法执行某些问题处理的同时,培养计算思维及灵活运用信息的资质和能力,这是各学科学习的基础。尽管希望通过编程教育让孩童自然而然地记住计算机语言并掌握编程技术,但这本身并不在教育目标范畴中。
小学编程培育的信息素质和能力包括:
1、知识和技能
2、思考力、判断力、表达能力
3、向学之心和人性
知识和技能是指灵活运用信息以及信息技术来发现、解决身边生活问题的一种意识。进一步说,在小学阶段最重要的是培养日常生活中利用编程解决问题的意识和解决问题的步骤,而非专门的程序设计。在参与官方研讨的一些专家认为,小学阶段的编程教育重在培养意识思维,知道解决问题的步骤;初中则进一步了解编程在社会中发挥的作用和影响,编制简单程序;高中则科学理解计算机工作原理,灵活运用编程解决实际问题。
思考力、判断力和表达能力是指利用信息及信息关联的视角去思考、分解以及重新组合事物,从而达到解决问题的目的,即一边思考、一边试错、一边修正从而解决问题。这集中能力的培养是无法在短时间内得到提升的,是一个长期不断的迭代试错的过程。教师不是直接教给学生们正确的答案,而是教给他们利用不断试错得出正确的答案。
通过学习编程,不仅可以培养逻辑思考力和解决问题的能力,还可以培养判断能力、自主学习能力和创造性。
计算思维的示意图
图片来源:《小学编程教育指南(第三版)》
向学之心和人性更多的是指利用编程培养改善生活和社会的一种态度。因此,关于信息利用能力、与信息相关的道德伦理、与他人合作时顽强的品质、版权的意识、信息安全意识等等都是需要培养的。
从以上内容可以看出,日本小学编程教育,不仅仅是教给学生计算思维的能力,还将能力的培养与生活和社会问题结合在了一起,从而深化了学生对编程教育目的的认知。
五、授课形式多样,内容丰富分类明确
《小学编程教育指南(第三版)》中指出,编程教育需要培养计算思维,以及充分利用计算机的态度,其不仅仅包含小学的各年级的科目,也包含各种课程之外的情形,并将小学阶段的编程相关的学习活动进行了分类:
A. 《学习指导要领》中要求实施的内容及示例
B. 尽管并未在《学习指导要领》中给出示例,但给出了具体要求的内容
C. 在教育课程体系内,各学科分别实施的内容
D. 俱乐部活动等,以特定的儿童为对象,在教育课程体系内进行实施
E. 将学校作为活动场地,但是属于教育课程体系之外的课程
F.学校之外的编程学习机会
其中,A类与B类均给予了详细的说明;C类则是为了更好的培养学生的计算思维以及对编程的认识而设计的,并期望各学校进行具有趣味性、成就感以及兼备创造性的案例开发,但不要加重学生们的负担;D类是指参加俱乐部的这类特定学生需要参与的编程活动;E类和F类则是针对校外的各方提出的小学生编程课程及活动等相关内容。
以A类学习活动为例,其中就已经提出了让小学生利用编程发现和探索信息社会的要求,并使用顺序结构、选择结构及循环结构等信息对生活的方方面面问题进行重构,并且不乏城市魅力与信息技术、智能家居、自动驾驶、自动贩卖机及手工制作等案例。与此同时,在学习编程的同时,还积极引导学生思考一些与编程有关的社会和道德问题。
尽管日本小学编程没有设置单独的科目,然而为了保证编程教育能够有效的实施,《小学编程教育指南(第三版)》也指出了在不增加小学生的负担下,学校可以自主决定是否教授一些编程基础内容。
日本认为在小学的编程教育中,应该根据各个地区的实际情况和特点进行,并积极探讨各地之间的协作。有学者认为,日本的编程思维不能被“编程”所”矮化”,为了不让编程止步于单纯的编程学习和体验,对于学生来说,编程结合生活实际更为重要。而在结合生活实际方面,将编程教育与学生学习生活所在地的地域信息、文化风俗等结合,既能学习编程又能加深对地区的了解,是一个非常值得深入研究的课题。
六、师资的培养以及设备与环境的保障
日本政府认为,小学编程必修化不能作为一时的心血来潮或者一个噱头,而是一个长期不断完善迭代的过程。从日本小学编程的思考与实施来看,一个非常棘手的问题就是师资,毕竟在日本小学编程教育中,是几乎所有老师均要面对编程授课。另外就是编程教学对设备和环境提出了具体要求。
比如,日本在推行中小学编程教育的过程中发现了如下的几个问题:
1、面对于在职40万小学教师,立即进行编程教育相关进修是不可能的;
2、很难在普通教室进行编程教育;
3、要同时确保负责编程教育教师的教学水平。
为了应对上述问题,“大篷车式”的教育模式得到了提案,其内容如下:
1、外校讲师每日进驻一校,每个学校每天保证要有两名讲师
2、将笔记本电脑等设备带入学校
3、建设并确保校内的网络通讯环境
4、通过上述形式积累经验,旨在2030年前后能从大篷车方式过渡到专职教师培训模式。
另外,利用机器人教学以及机器人教材引入的有效性已经得到证明,在这方面,一些小学使用瓦楞纸的机器人教材embot设立了编程教室,引发了广泛的关注。 embot编程教育机器人是在2020年全国小学的编程教育将成为必修的情况下,为了让孩子们“更近距离地感受编程”而开发的。
embot编程教育机器人
但是教育过程中的成本问题也是一个重要的考虑因素。为了能够让编程教育可持续,如何编写不使用电脑、平板电脑、机器人等不插电教材,并根据不同学段和内容有效降低成本成为日本小学编程教育必修化的一个重要课题。
七、多方力量参与,共建编程教育优良生态
日本中小学编程教育一个现状是,进行编程教育的教师大多没有接受过正规的编程训练,在课程教案制作以及教学等方面仍处于摸索状态。为了解决这一问题,无论是政府还是学界,均认为小学编程教育需要企业和机构等多方力量的援助。
在与公司、团体以及跨地区合作能够有效促进小学编程教育效果已经在日本得到了证实。外部力量的参与已经成为学校编程教育课程管理的内容之一。
首先,有经验的校外人士可以按照教学目标要求作为校外讲师来给学生们授课;其次,有实力的企业可以以公益的形式捐赠一些教学设备助力教学;再次,以一定的形式进行师资培训,并通过将老师与技术支持人员建立联系等多种方式,提升教师们的编程水平。招募志愿者也是小学编程教育的一个重要举措;最后,就是利用跨地区的产业、企业、人才等资源合作来推动小学编程教育。
日本的做法对中国小学编程教育的启示
通过对日本小学编程教育必修化的梳理,我们认为日本的经验对于中国小学编程教育工作有如下启示:
第一,厘清概念,编程教育做好分内之事。编程教育的主要目的是培养学生们的计算思维,这与人工智能的主要目的和课程体系截然不同。因此,无论是文献发表、图书出版还是授课,切勿再将编程与人工智能混为一谈,编程不需要也没必要戴上人工智能的“高帽”。
第二,贴近现实,教学案例力求生动有趣。日本小学将编程教育融入各门学科,既学习了编程、培养了计算思维,又加深了对其他各学科的理解。此外,日本还规定小学编程需要与实际生活和社会发展相结合,可以说,日本小学编程教育天然就是“编程+X”,这种将编程紧密贴近学习、生活和社会的做法值得学习和借鉴。
第三,重在思维,知识技能并非一朝一夕。从日本相关政府部门的发布的政策以及专家的评论中可以看出,日本小学编程教育十分重视计算思维的培养,将计算思维视为一种无论选择何种课程或从事哪种专业都该具备的一种能力。因此,在小学编程教育上更多的是让学生进行体验,而并非进行专业的知识和技能训练。目前我国国内有一种误区,认为让小学生学习当下流行的Python语言要比Scratch“更加专业”,其实这就是一种典型的重技能轻思维的心态。事实上,无论利用何种语言,培养能够分析问题、解决问题的思维才是最关键的。
第四,全面培养,意识伦理需要同步跟进。日本小学编程教育中除了计算思维培养、知识技能传授以外,还利用编程同步进行道德教育、参与社会调研、思考社会现象等,这些做法值得借鉴。编程教育涉及信息的收集、整理、分析以及汇总和表达等几个主要环节,因此需要同步培养学生对信息的敏锐性、来源的真实性以及对外发布信息的积极性,以及信息社会责任意识。通过编程了解社会的发展也是小学编程教育中一个值得深入探讨的话题,比如在讲述自动驾驶时,日本官方就明确指出需要以交通出行为大背景,思考引发事故的原因,汽车应该具备何种功能才能安全舒适,如何利用技术进行改善以及未来社会的交通可能处于何种状态。这种从小将编程教育结合实践的做法也应该在我国小学的编程教育中得到推广。
第五,共建生态,积极引入校外专业力量。小学编程教育离不开社会各方力量的参与,日本政府最初就将学校与外部合作的思路及对策写入到官方文件,通过与大学、团体、非营利组织、企业等机构的合作,不但给小学编程课堂的学生带去更多的生动实际案例,同时也对教师水平的提升给予了很大帮助。