对于现如今十分流行的儿童学编程,很多家长提过编程是否要从小学习的问题。
答案是:只要孩子不是特别排斥,教孩子学习编程是可以尝试的。
掌握了编程这种计算机语言,孩子的认知广度又进一步得到了扩展。在人工智能的时代,机器语言的应用会变得很广,懂得编程的人会变得越来越有价值。
儿童编程到底是什么呢?
编程啥啥啥家长都不懂,也不懂怎么启蒙?
今天我们详细的聊聊关于儿童编程的那些事。
最近看到朋友家6年级小姑娘的课外项目,被惊到了。
一个朋友家的孩子正在用IPAD正在玩编程。这个小姑娘用Tensorflow做了一个AI深度学习(Deep Learning)项目。
TensorFlow可是目前最流行的深度学习的Python平台。
大名鼎鼎战胜了人类专业选手的阿尔法围棋(AlphaGo)用的就是深度学习模型。
有些家长觉得自己真是快要跟不上这个时代的节奏了!
所以家长们就想:
是不是该让自己的孩子开始接触编程呢?
阿尔法围棋(AlphaGo)对战世界排名第二的专业围棋选手Lee Sedol
我们经过一翻调研,发现家长对儿童编程还有一定理解误区。
儿童编程的两大误区
1. 学习编程可不是职业培训
让孩子学编程,并不是为了让他们日后成为程序员。
儿童时代是人生中非常珍贵的学习时间,比起技术性、技巧性的技能,更重要的是思维方式以及解决问题能力的培养。
而孩子们以后想做什么,还需要他们自己去探索。
2. 语法并不重要,思维方式才是重点
让孩子学编程,并不是让他/她掌握编程语言的具体语法。
编程语言的具体语法并不重要,重要的是编程里的思维方式。
编程语言的更新换代是非常快的。
而且根据教育者的职业经验,再往未来发展,通用性的编程语言将越来越少,各种编程语言将会呈现百花齐放的状态。
但是,编程中的工程思维以及解决问题的思考方式却是通用的。
到底为什么要学习编程?
为什么要带孩子开启编程之旅呢?我们总结一下。
1.锻炼逻辑思维能力
编程需要把一件事情以清晰的方式传达给电脑,这就要求小朋友自己首先能够把这件事情的逻辑理解透彻。
比如小朋友要编写一个简单版的超级玛丽,需要遇到障碍就跳跃。
那么清晰地理解这个“如果……那么……”(if-else)条件逻辑,才能用编程语言简单明了地表达出来。
2. 发展创造能力
编程就像是一个工具。
有了工具在手,就可以创造很多东西。
学龄前儿童的编程作品主要集中在电脑游戏、音乐、动画等等。
当然不必对孩子设置任何限制。
编程这个工具很灵活,还可以鼓励孩子设计闹钟、电子日历等帮助到自己生活的工具。
在创造的过程中,孩子体验到自己的设想转化为实际作品,可以进一步帮助孩子建立自信心。
3. 扩展以及发散思维能力
拿小朋友用编程来制作动画来说。
一般一开始只有一个简单的人物,后来加入动作、背景等等。
完成一个阶段性作品后,还可以鼓励孩子在此基础上进一步扩展。
使孩子可以在自己已经完成的基础之上,进一步扩展、发散和拔高。
4. 批判性思维的能力
讲一个程序员亲身经历。写个程序只花了30分钟,结果调试程序Debug搞了有一下午。
如何从失败的运行结果,往前追溯到错误的源头,是非常考验一个人的批判性思维的能力。
运行失败,就会引起孩子的好奇,促使他思考他之前的每一步骤是否有错误.
比如哪些步骤是可以排除在外,哪些步骤是需要重点查验的。非常锻炼批判性思维的能力。
但是刚开始接触编程,一定要注意不要让debug打击了孩子的积极性。必要的时候要积极干预。
5. 促进高维度的思考能力
高维度的思维考能力HOT,是懒妈从美国早教协会(National Association of Education of the Young Children,NAEYC)里学到的概念。
高维度思考能力(HOT),来自美国早教协会NAEYC(https://www.naeyc.org/)
以创造简单的电脑游戏为例。
从初步设计,到具体计划,到动手执行以及解决每一步中遇到的问题,再到根据执行结果进一步提高、完善最初设计。
编程让孩子把不同时间点、不同层面、不同维度的思考连接在一起,锻炼孩子高维度的思考能力。
6. 编程是科技社会的另一种读写能力
掌握编程就找到深入理解科技社会的切入点之一。
如何开始孩子的编程之旅
图像编程语言Scratch
我们在网上一查少儿编程,有好多资源,让人应接不暇。
我们花了一个周末,细心调研了一番:访问了各个网站,尝试了它们的适用产品/课程等等。
我们发现,这些资源虽然各有特色,但是它们在的核心都是差不多。
而这些核心的内容,都可以这种视觉编程语言中体现出来——这就是本文的主角:由麻省理工大学媒体实验室(MIT Media Lab)里的“终身幼儿园”(Lifelong Kindergarten)研究组开发的视觉编程语言(Visual Programming Language)Scratch。
麻省理工大学媒体实验室(MIT Media Lab),Scratch创始机构
Scratch适用的年龄范围非常广,3岁就可以开始。
那么Scratch到底有什么好呢?
1.编程视觉化
用scratch来编程,并不需要键盘输入。孩子们只需要用鼠标点击和拖动代表不同指令的图形模块就可以。
每个图形模块都代表着一段代码。完成编程后,可以点击执行程序,那么scratch的动画人物就会执行这些指令。
Scratch小程序:不停地往前走10步,遇到边界就返回,来自https://scratch.mit.edu/
比如在这幅图中,一共有四个图形模块,代表的指令是当程序开始执行,不停地(forever黄色),走10步(蓝色move10 steps),如果碰到边界就返回(if on edge, bounce蓝色)。
是不是简单直接而且很容易上手?
非常适合刚开始接触编程的孩子,能马上引起他们的兴趣和创造欲。
开源免费,拥有庞大活跃的用户社区、丰富的学习资源和专业支持团队。
自从2008年12月6日Scratch被创造以来,就有团队来专门维护和更新。现在依然在活跃的更新中。
2018年1月,Scratch 3.0的Alpha版本正式发布,Beta版本正式版本在2019年1月发布。
Scratch 3.0 Beta版本,来自https://scratch.mit.edu/
Scratch现在正在被150多个国家的孩子们使用,被翻译成40多种语言,包括中文。
Scratch还有庞大活跃的用户社区。
既有各种各样的教程来教小朋友如何开始、如何进阶,还有各种平台和活动鼓励孩子们发表、分享自己创作的游戏、音乐或者动画Scratch作品。
还可以跟其他小朋友们一起合作来创造Scratch项目。
世界各国小朋友们地Scratch项目,来自https://scratch.mit.edu/
比如在MIT Scratch官方社区里,已经有4千万个Scratch项目被分享。
Scratch官网中文论坛
2. Scratch囊括现代编程的核心元素和思想
Scratch虽然是为孩子们开发的视觉编程语言,但是麻雀虽小,五脏俱全。
懒妈之前就强调过,学习编程不是要学习具体语言的语法,而是学习编程的思维方式。
Scratch虽然是视觉化编程语言,但在编程的思维方式上丝毫不逊于现代流行的编程语言,各种现代编程的核心元素和思想都被Scratch囊括其中。
Scrtach的控制模块
比如Scratch的图形指令模块中包含了控制(control)模块:包括if-else条件控制,for循环等等。
这是现代面向程序编程模式的典型元素。可以很好的锻炼孩子的逻辑思维能力。
Scratch中的面向对象OOP的小程序
再比如在Scratch衍生出来的一个版本Snap!中,现代的面向对象的编程模式(Object-Oriented Programming,OOP)等得到了充分的支持。
上面的图片里就定义了一个用于计数的类,既包含数据value也包含方法report。
连程序里常常使用的评论(Comment)这个细节都在Scratch里体现出来了(灰色模块),可见做得非常细致。
3. 非常丰富的学习资源
除了官方网站版本以外,有一个衍生于Scratch的App,叫做ScratchJr,App店里都搜索的到。
官网网址:https://www.scratchjr.org/
不同年龄段的少儿编程学习资源以及重点
1.学龄前
学龄前的孩子,可以通过简单的编程玩具来学习(可以避免过多的屏幕时间)。
比如Fisher有一款code-a-pillar的玩具。
毛毛虫身体分为很多段,每段都有不同颜色和对应的指令(比如不同方向的箭头),孩子可以自由拼接在一起。
而根据不同段的不同拼接方式,毛毛虫会产生相对应的不同的移动模式。
重点:帮助学龄前的孩子建立起抽象指令与实际结果之间的联系,进行变向启蒙。
2. 4-8岁
4-8岁可以接触图形编程语言以及更加复杂的机器人了。
图形编程语言比如scratch,scratch jr等等。有很多网络资源和app,非常的丰富。
scratch是mit media lab开发的,免费开源,用户群很庞大,学习资源也丰富。也有很多基于scratch的游戏类的App等等。
重点:要避免一些没有锻炼到编程思维的App。
比如有一款app叫做Bloxels,孩子们可以在一个game board上设计游戏:哪里是障碍、哪里是敌人、哪里是金币,然后用app拍照片,就自动转为了电子游戏。
但是简单地通过拍照就自动地创造出电子游戏,并没有真正锻炼到编程思维。
机器人类也有特别丰富的选择,下面为大家推荐两款机器人。
1. ozobot
我们看了比较多,觉得ozobot这款机器人所代表的设计模式特别适合锻炼变成思维(类似设计的机器人还有一些)。
孩子们通过不同的marker在board上自由设计,不同颜色的marker对应着机器人不同的行为。
机器人通过图像识别marker的颜色和pattern来执行相应的行为,包括前进、转弯、原地打转、闪灯、播放音乐等等。
我们觉得这个机器人在难度上特别灵活,可以很简单,也可以很复杂,孩子们的发挥空间很大(还有专门针对ozobot的夏令营等等活动)。
比如可以通过marker引导机器人闯过迷宫。
而且这款机器人可以用board和marker,也可以用电脑或者device上用电子marker,屏幕时间也可以自由掌控。
2. 机器人小老鼠colby
类似其他的推荐有机器人小老鼠colby(4+),也是通过卡片设计迷宫,来引导小老鼠如何闯过迷宫。
这款游戏是Education Resource Awards 2016年的Winner。
也非常推荐!
3. 8岁以及更大的孩子
可以学python和javascript,或者根据孩子兴趣和时代发展。
这个时候可以选择的编程学习方法就更多了,具体就要因人而异。
有些书是写给孩子的python 和 javascript教程的:
tynker(tynker.com)也有专门的视频课程教孩子python/javascript(有些成年人也在这里上课)。
重点:这个阶段重点是边创造边学习。
所谓“以输出带动输入”,而且不要用toy example,就用实实在在能够在生活中产生价值的项目来创造和学习。
要继续深入,可以有两个方向。
一个是编程机器人比赛,比如LEGO Robotics Kit和first LEGO league的不同年龄段的编程机器人比赛。
再一个方向就是信息竞赛了,这个比较偏重数学与逻辑,需要在算法上下功夫。
再有就是不走寻常路,利用编程为工具,实实在在地创造出有价值的东西,对某些领域所有贡献。
现如今,儿童编程可谓是火爆至极,各种线上线下课程也层出不穷。
虽说编程确实能让娃更好的适应人工智能时代。
但凡事也要因人而异,美妈们不要随波逐流,要充分了解了自家娃是否对编程感冒,在她/他学习编程的路上做出正确的适合自己娃的选择。
毕竟孩子需要的,不仅仅是冰冷的技能和思维,还要有有温度的童年和记忆。
"