会编程的孩子,数理化学起来也不会太难

1

2019/03/12 • 新知, 热点

我毕业于剑桥大学工程系。我经常会用到编程,后来工作了一段时间,越来越觉得,编程是一个非常有用的技能,我就又去学了Html、CSS、Java Script、Python和Ruby,越学我越遗憾没能在更小的时候接触到它。

我经常会听到一些孩子说,编程属于理科生学习的东西,就好像有很多同学会不理解为什么文科生也要学数学一样。其实在美国,编程已经开始变成和读写、数学、科学并列的学生核心能力。而且,学编程的核心,也不是学计算机语言,而是学一种思维方式。今天,很多孩子每天都忙于上各种各样的补习班、学习各种各样的才艺,但其中,我觉得最值得投入时间和精力的,还是孩子思维能力的培养,把重点放在学习“计算性思维”上面——而不单单只是学几行酷炫的代码。

 哪怕你的孩子以后读文科,计算性思维也不可或缺

什么是计算性思维?简单来说,是一种用电脑的逻辑来解决问题的思维,这个是由谷歌公司提出的,可以简单概括成这几种类型:分解问题、模式认知、抽象思维和算法设计这几个类型。

这几个词只是看上去很抽象,实际上,我们的生活中,有很多问题的解决要用到这些思维。比如计划一次旅行,英国学校会要求学生自主策划一次大型旅行,每个过程,都对应了计算性思维中的一个小部分。

第一是分解问题的能力,把一个庞大的任务分解成几个小问题分别解决。“策划全家人的旅行”听起来非常庞大、繁琐,那么,我首先就要将这个庞大的任务分解成几个小任务,我可以把旅行,先分解成“订机票”、“订酒店”、“订活动”三个任务,然后依次分别解决。而其实每一个小问题又可以进一步分解成不同的小任务来解决,当你将每一个小任务都解决好了以后,这个“计划全家旅行”的庞大的任务也就可以轻松地解决了。

有人还在为孩子玩电子产品而焦虑,她在教孩子用编程思维解决实际问题

第二是模式认知。比如旅行时,订酒店,其实我2014年、2015年都在某一个网站上订了某个连锁酒店,非常靠谱,住得也非常舒服,这一次我可以同样地在这个网站上订这个连锁酒店。在这里,我会根据我过去的经验以及过去解决问题的方法,来解决我眼前的问题,这是认知模式的一种。酒店订完了,我们基本上就要计划一下我们的活动了。

有人还在为孩子玩电子产品而焦虑,她在教孩子用编程思维解决实际问题

第三是抽象思维。下图中,左边和右边是两个不同的计划,对比之下就能发现,左边有很多没有必要的细节,比方说“要吃巧克力麦片”,如果我们把很多时间花在没有必要的细节上,就会降低我们的效率。

有人还在为孩子玩电子产品而焦虑,她在教孩子用编程思维解决实际问题

所以一个善于运用抽象思维的同学会剥离出问题的核心,知道什么是重要的、需要提前确定的,什么是不重要的、到时候慢慢看也行的。这样TA就不会浪费时间在不必要的项目上。

第四是算法设计,大家可以通俗地理解为解决方案的设计。我们还拿旅行计划的设计作为例子,到了假日的早上,我非常开心地准备去公园玩,那么问题来了,怎么从酒店走到中央公园去?这里需要一系列的解决方法。

我首先会问今天下雨吗?今天不下雨,我们就要出酒店门,右转,朝北走七条街等等,才可以带我们到公园。如果今天下雨,我们则要回房间、拿上伞,在酒店门口等的士,的士来了就告诉的士司机我们的目的地……

有人还在为孩子玩电子产品而焦虑,她在教孩子用编程思维解决实际问题

我以前经常听到别人说——“我天生就是个路痴,就算给我个地图我也找不到地方,你还是来接我吧”,其实我认为,没有人是所谓的天生的路痴,只要你能对着地图、运用好计算性思维里的算法设计、严谨地计划好自己的每一步,就没有你无法到达的目的地。

会编程的孩子,数理化学起来也不会太难

我们接下来就看看在学习中如何运用计算性思维。

比如说在解数学题的时候,我们就经常要用到分解问题的技巧。这里有道数学题,看上去有点长,不过一个思维能力强的小朋友就不会被这个长度吓到,而是把它分拆成三个问题:第一个问题是,首先要解出左边这个算式的答案;接着要计算出右边这个算式的答案,这是第二个小问题;再来是我们要比较这两个数的大小,这是第三个小问题。

有人还在为孩子玩电子产品而焦虑,她在教孩子用编程思维解决实际问题

一个思维敏捷的小朋友马上就可以分解一个复杂的问题,成为这三个小问题,然后一个个算出来,这样的话这道很长的题其实也就变得很容易了。

另外一个例子是在做应用题的时候,很多小同学则需要学会剥离出问题的核心。

有人还在为孩子玩电子产品而焦虑,她在教孩子用编程思维解决实际问题

比如说上面这道初中物理题,很多同学读完这道题后可能感觉这里有很多信息,但是一个思维敏捷的同学就可以快速地找出这道题的关键信息,就是车的重量和刹车的力度。然后小朋友要运用模式认知回想一下,好像过去那道题都是需要用到牛顿的第二定律的,这样小朋友就会想到这个公式是F = m * a,从而解出这道题的答案。

有人还在为孩子玩电子产品而焦虑,她在教孩子用编程思维解决实际问题

 

写作文、做演讲,其实都需要计算性思维

其实计算性思维不仅能用在数学学科上,还可以用于其他很多学科的学习。

比方说在语文课上写作文的时候,要想写得又快又好,通常我们要列一个作文的提纲,列提纲这个动作其实就是在分解问题。比方说今天我要在这里介绍计算性思维,我很紧张,这么庞大的一个话题,我不知道从哪里开始讲,不过我列了一个提纲,决定将这个大的演讲分成好几个小块:

有人还在为孩子玩电子产品而焦虑,她在教孩子用编程思维解决实际问题

我这样分解一下,感觉就轻松了很多。我主要把每一个小部分讲好就好了。

有时候学社会学的时候,我们可以分析我们现在看到的现象,和过去历史里发生过的现象有没有什么相似之处,是否有可以学习的地方,这就是一种模式认知。学科学的时候,我们使用的公式和模型都是抽象化的。然后在做科学实验的时候,我们也经常要用算法设计的技能来精确地设计实验步骤。

不同年龄段,为孩子选择不同的编程工具

最后我想介绍的是如何根据孩子的年龄和特点,挑选学编程的软件——除了去上课、去学编程以外,还是有一些iPad的编程工具和游戏可以帮助同学们锻炼计算性思维的。这个暑假,我在北京为同学们开展的设计未来学校的夏令营,也要运用编程构建方案。

有人还在为孩子玩电子产品而焦虑,她在教孩子用编程思维解决实际问题

1、幼儿园或小学低年级:Swift Playgrounds、code.org

对于幼儿园的小朋友来说,他们可能最先学会的不一定是计算机的语言,而是学会怎么样精确地发号施令。可以不需要用计算机语言,而是用他们精确的语言、用一些简单的图形、音乐来传达这个概念。

前几天苹果公司发布了一个帮助同学们锻炼计算性思维的APP,叫Swift Playgrounds,这个APP要秋天才能上架,所以普通人去架子上找应该还没有。但是我拿了他们提前给老师的一本培训介绍书,我发现,比起让同学们学会如何用Swift编写苹果的APP,他们更加注重用一些欢快的、活泼的谜题和游戏的形式,帮小朋友们甚至是很小的、幼儿园的小朋友们锻炼计算性思维,为小朋友们启蒙。

其实code.org也是用一些非常简单的方法来让小朋友们锻炼计算性思维、锻炼如何发号施令的。

有人还在为孩子玩电子产品而焦虑,她在教孩子用编程思维解决实际问题

有个家长说带着姑娘玩code.org,一小时全部通关了。其实她就是喜欢过关,却对自己过程中产生的一些创意没什么兴趣。怎么引导呢?比方说,如果我的一个学生,他很喜欢画画,我就会引导他想办法去做一个绘画的程序,或者做一些绘画上的编程。这个时候,Scratch这个软件会更适用一些。

2、小学阶段:Scratch、APP Inventor、Hopscotch

6岁以上就可以开始从Scratch接触了,我建议先学一种拖拽式的积木式拼装的语言——Scratch或者APP Inventor。然后等孩子大一点,再去学Python、Java,其实我还很推荐学Html Javascript,因为Html Javascript有一个好处是在于你每写一行代码,它都可以马上在你的显示屏上、浏览器上显示出来,跟Python相比,它的趣味性可能更浓。我觉得最好是先学Scratch或者App Inventor,然后可以学(Html、CSS、JS,再到Python、Java)。

最后这个是hopscotch,可以让孩子在iPad上写小游戏、小动画,比scratch稍微难一点点。可在AppStore里下载到。

有人还在为孩子玩电子产品而焦虑,她在教孩子用编程思维解决实际问题

3、12岁以上:别着急抄写代码

就算是12岁以上,我也建议先通过一种可视化的语言开始——就是模块化,像Scratch和APP Inventor,像拼积木一样把逻辑程序拼起来,以这个作为开始。

有很多家长说同学比较大了,可不可以直接学Python?但是我觉得Python、Java等,有很多的英文字,很多初学者容易犯的一个错误就是,把时间和精力都花在抄写代码上面了,而且这种文本式的语言很多都需要学生对括号、分号等标点符号的使用非常了解,很多小朋友把心思全都花在写正确的标点符号和打正确的字上面了。

而我推荐就算是12岁以上的同学也可以先用一种积木式、拖拽式的语言,可以让这些同学们首先通过这些先学好这些程序的核心逻辑,把这些编程的逻辑和概念学扎实了以后,再去学这些文本式的语言。当他已经有了一个编程概念或者说计算机概念的基础后,他再去学文本语言就要好很多,这个时候他可以花多一点心思去看怎么样把这些代码打对。

有人还在为孩子玩电子产品而焦虑,她在教孩子用编程思维解决实际问题

一定要多问For What,让孩子学编程到底为了什么。

网上有不少不用写代码就能直接生成APP的工具,家长给孩子们选用这些工具的时候,不妨考虑一下,我们让孩子学编程是为什么?是为了让他们做一个APP出来卖钱吗?应该不是吧,我们还是希望,在学习编程的过程中,锻炼计算性思维,以及解决实际问题的能力等 ,这比生成一个APP要有用很多。当然,如果孩子像做一个APP,我觉得恰好可以引导他们来学习编程。

今年暑期,我将联合毕业于连续多年全美排名第一教育学院的范德堡大学教育学博士、少年商学院赵晴老师,在北京为9到12岁小学生开设《2046学校大创想x MIT APP编程》工作坊,显然,孩子们要学习编程,但这更是一次项目制学习(Project Based Learning)。我们将带领同学们畅想、采访调研、头脑风暴,设计30年后的未来学校,并通过APP编程,呈现智能操控所建造Future School的逻辑,这个过程中对孩子们设计思维、创想力、计算性思维及动手实践能力的锻炼同样非常重要。

有人还在为孩子玩电子产品而焦虑,她在教孩子用编程思维解决实际问题

最后,有个小提醒给家长朋友们。现在很多同学学习编程语言,都是以自己的兴趣为主,比如说写论坛、机器人、做网站等,比较随性,我们要不要给他加一下系统性的学习呢?答案是:NO。我想说的是,兴趣是一切的源动力,最好的教育方式从不是给孩子一个系统,而是让他们根据兴趣和热情,自己慢慢摸索出一个系统来。

文/周安琪,系全球40位MIT(麻省理工)认证的移动编程教育专家之一  来源/少年商学院


分享到:
已有 0 条评论 新浪微博