少儿编程教育:培养孩子受益一生的思维和能力

少儿编程教育:培养孩子受益一生的思维和能力-少儿编程网

当奥数风光不再时,培训机构和家长们找到了新的偶像——少儿编程。然而,就像全民奥数的狂热,在编程这条路上,很多家长根本不理解让孩子学习编程的意义,更多的是恐惧、功利心在作祟。

其实,笔者早就想问家长们一句话:您真的搞清楚孩子学习编程是怎么一回事了吗?今天,我们就一起来聊一聊少儿编程。

为什么全球都在重视编程教育?

编程教育正在全球范围内普及,目前已经有16个欧美国家将编程设为学校的日常课程!

2012年起,日本中小学生就开始学习编程;

2013年起,美国总统奥巴马号召全美学生学编程;

截至目前,美国已有500万青少年在学习编程;

2014年起,英国将编程作为5-16岁学生的必修课;

2017年起,新加坡将会在中小学考试中加入编程科目;

我国的宝岛台湾也将在2018年年将编程教育纳入初中和高中必修课。

少儿编程教育:培养孩子受益一生的思维和能力-少儿编程网

这些传统的教育强国或地区,对编程的重视显示出了教育理念上真正的深谋远虑。

为什么在发达国家会产生这样的趋势,把原来至少是在大学时才有的针对小众学生的编程课程要下移普及到儿童,甚至在Amazon上充斥了训练三岁以上孩子编程思维的玩具呢?

笔者认为,这是因为当前全球商业社会环境的深刻变化,造成了人才需求的变化。今天的世界,已经遍布程序和算法,我们每天都接触到的微信、滴滴打车,我们去银行取款机取款,我们在电脑上打开网页,我们在淘宝上购物,所有这一切都跟程序和算法有关。今天的明星公司,基本上都是算法公司,比如谷歌、比如腾讯、比如阿里巴巴。更为宏大的时代背景是,人工智能的大幕正在缓缓拉开。

我们不难预测,未来完全没有计算式思维训练的人员在高科技企业中的作用也会越来越边缘化。而对这种复合型计算式思维人才需求的激增,使发达国家意识到从孩子培养编程思维是未来国家竞争力的重要因素。从事少儿编程教育的机构,应该有这样一份使命,通过编程教育参与到未来竞争力的提升中来。

孩子学编程到底是在学什么?

有过编程经历的人,会有这样的感受,计算机就像一架自动钢琴,而编写程序就和音乐家作曲一样。当你编写好程序以后,计算机就会百分百按照程序去做。但是程序也可能不像你预期的那样工作,它会失败。

为什么会出现这样的情况呢?有两种可能:

第一种:你的想法本来就是错的。那么请重新思考一下:你到底想要做什么?

第二种:你的想法很好,可是程序却没写对,也就是说没有把你的思想准确地表达为程序。

把目标想清楚不容易;确定了目标,想清楚了要做什么,然后再把它清晰地表达出来,更是不容易。

任何程序任务的实现都是由每一个分解的任务构成,任何一个分解任务的瑕疵都会影响最终的结果,每一个分解任务的实现都需要孩子认真对待。

任务分解的方法及用程序实现的过程会对孩子的思维方法产生潜移默化的影响。

笔者有这样的切身体会,将同一个复杂问题拿给学过编程的孩子和没有学过编程的孩子,孩子会有截然不同的反应,学过编程的孩子开始构思并拆解问题,然后将复杂的问题变成小的可以解决的问题;没有学过编程的孩子面对问题时,多在外围打转,最终发现依然是个复杂的问题,无从下手。这样的差距,其实是孩子的思维能力的差异。

学习少儿编程,除了学习漂亮简洁的代码,严格规范的语言风格,最核心的是要给孩子一种计算式思维,教会孩子用一种新方式思考这个世界。

那么,问题来了,什么是计算式思维?

谷歌公司将计算式思维概括成四个组成模块

➀能够把现实生活中的复杂问题,逐步拆分成更好理解、更可执行的小问题(Decomposition 拆分)

➁接着,根据已有的知识和经验,找出新问题和以前解决过的问题的相似性,举一反三琢磨出规律(Pattern Recognition 模式识别)

➂然后,聚焦重要的关键信息,将问题里涉及的数据抽象(Abstraction)到数据结构(变量,数组,链表等等),把数据处理过程可重复执行部分抽象(Abstraction)成函数模块,通过循环执行

➃最后,根据前三步的分析成果,设计一步一步的解决路径,写出算法(Algorithms),从而解决问题。

通俗的来讲,计算式思维,就是把一个看来困难的问题重新阐释成一个我们知道问题怎样解决的方法;它教会我们如何处理大麻烦,将它们化整为零,使之变得更加容易处理。它允许你用高效的方法大规模地运作。将真实世界用适当的抽象的方式转成模型,将我们的注意力集中在关键部分,帮助我们找到特定的解决方案。

计算式思维已经日益渗透到我们每个人的生活之中,诸如算法和前提条件,这些词汇已经成为人们日常语言的一部分。它的运用已经扩展到编写软件之外,甚至连机械工程、液体力学、物理学、生物学、考古学和音乐都运用到计算思维。今天,在高科技行业,几乎所有的科技领袖都是具备计算式思维的复合型人才,比如扎克伯格、马斯克、马化腾等。

编程教育培养孩子哪些方面的能力?

通过实际的教学实践,笔者认为,通过少儿编程教育,至少应该培养孩子以下八个方面的能力:

➀编程知识与技巧

程序和算法有成熟的知识结构和体系,这一块是最容易学习的。

➁逻辑建构能力

孩子们通过编程做一个作品的过程就是一个创造的过程。他们首先要在心里大致构造出自己想要的作品模样,然后开始思考第一步该怎么做,第二步该怎么做。这些都对孩子的逻辑思维能力有很大的启发作用。即使在日常生活中,编程的逻辑思维也会让他们有条不紊地解决问题和表达出自己的想法。

➂设计策划能力

每一个作品的背景角色、角色效果以及行为规则需要孩子们自己来创作和选择,这些会对孩子们的设计能力和审美能力等有很大的提高。

➃思考与学习能力

在学习编程过程中,没有固定的知识领域,更多的是需要孩子们去主动思考,主动探索。孩子学习进度的差距,往往来自于孩子思考和学习能力的差距。

➄沟通与协作能力

随着项目复杂度的提升,需要团队之间的协作;随着沟通范围的扩大,孩子们甚至要参与到全球的沟通与协作中。

➅工程搭建能力

把硬件结合进来,培养孩子的工程搭建能力,并通过编程,解决现实中的问题,这对于孩子在未来的现实生活中大有裨益。

➆问题解决能力

发现现实中的问题,通过编程,解决掉,这是一种让人成就感爆棚的捷径。

➇案例分析与借鉴能力

鼓励参与到全球化的交流与分享中,能对他人的作品有鉴赏能力,广泛借鉴学习优秀案例,并优化整合提升自己的作品。当然,我们对他人的作品和努力必须保持充分的尊重。

通过学习编程习得这八项能力,再加上计算式思维,想想都觉得厉害,有木有?

家长如何选择编程教育机构?

家长们担心不懂编程会输在人工智能起跑线上,但是当前市场上的少儿编程产品众多,家长们眼花缭乱,如何选择又成为一大问题。笔者从课程、教学、师资等方面一一分析,帮助大家在选择编程机构时能有更清晰的判断。

➀什么是好的课程设计?

目前市面上的课程设计大同小异,无非是采用游戏、动画、故事、音乐等展现形式,以软件和硬件相结合的方式来设计课程内容,在教授程序和算法知识的同时,也会贯穿其他学科的知识,比如物理、数学等知识。

课程内容承载的形式有直播课、录播课、书籍、线下面授等。如果把课程内容拆开来看,一方面是计算机科学的专业知识体系,比如顺序、循环、变量、函数、链表等知识模块,另一方面是承载这些知识体系的设计创意,比如游戏、动画、音乐等。

好的设计创意,能把孩子的兴趣和学习动力充分调动,孩子的学习效果也会更明显;而知识体系其实相对固定,其难点是,怎样规划进度和节奏是符合孩子成长规律的。

以美国计算机教师协会CSTA标准为例,该标准细化了每个年级对应的知识点内容,确保大部分孩子能够接受和掌握,然而,这样的标准,平移到中国,其实是不合适的,我们的孩子进度要远远快于美国孩子(这不得不归功于我们先进的基础教育)。

总结起来,好的课程设计是以计算机语言本身的逻辑结构为主干,将相对枯燥的概念与创意丰富的游戏、动画、硬件等形式相结合,按照符合孩子逻辑认知发展规律的进度和节奏,让孩子们在制作自己的作品过程中理解并掌握计算机语言的基本结构和应用技能,进而培养和强化孩子的计算式思维。

➁什么是正确的教学方式

目前到底什么是正确的教学方式,尚未定论。但笔者认为,以下几种教学方式是万万不可的:

1、K12知识灌输式教学不可取

部分机构沿用K12学科(如英语、数学、语文等)的教学方式,更多的是知识点的灌输,让孩子快速学习并记忆程序和算法的相关知识。这样的教学方式是不可取的,编程教育的核心并非是知识的掌握,而是习得计算式思维和解决问题的能力。K12教学方式在编程教育上注定走不通。

2、抄代码方式不可取

少儿编程教育:培养孩子受益一生的思维和能力-少儿编程网

笔者了解到,市面上有的机构是这样教学:上课时“老师”把写好的程序投影出来,所有的孩子在自己电脑上抄代码然后运行。当然不可能一次抄对,运行有问题时孩子就呼唤老师到身边,检查哪有抄得不对的语法错误。直到两个小时后所有孩子都抄对了,运行出结果。孩子们欢呼雀跃以为自己做成功了,家长进门后看到程序结果以为自己孩子独立完成作品,乐得合不拢嘴。

这样一种“教学”方式跟死记硬背毫无差异,一切好奇心与好学心都被这种毫无育人观念的机械敷衍所扼杀了。

笔者推崇的教学方式是怎样的呢?

笔者认为,少儿编程教学应该涵盖学生的主动探索、老师的引导启发、师生之间的项目制互动学习等模块,并且在教学中着重培养孩子的计算式思维和解决问题的能力。

➀学生的主动探索

程序和算法的知识模块是相对固定的,比如什么是条件判断,条件判断如何应用,可以做哪些扩展,这些知识让老师来做实时讲解的必要性并不大,学生可以自己主动去探索,通过看录制视频或者查阅书籍,甚至是百度的方式都可以学习。另外跨学科的知识学习,也需要由学生去自主探索学习。这种主动探索的学习能力,是让孩子终身受益的能力,远比知识积累本身重要。

➁老师的引导

笔者在实际教学中,有时候会碰到这样的情况:同样一个问题,有的孩子拆解的非常漂亮,代码简洁规范,基本不出错,即使出错,也很快能找到问题所在并快速修复;而有的孩子,编出的程序错误很多,逻辑混乱,一旦改变部分设定,程序即无法执行,碰到问题,侦错和纠错变得非常困难,往往一个问题扣着一个问题。笔者认为,解决同样的问题,效率的差距其实是思维能力的差异;考虑问题越深入,思考的范围越广,越能用简单的方式解决复杂的问题;思维越严密,越少出错,效率越高。

而这种严密的思维和深度的思考,跟老师的引导和启发是决然分不开的。

老师在课堂上的作用,就是引导学生按照计算式思维去处理问题。比如,课堂上,老师可以按照角色、行为、规则分析的方式引导孩子们把一个作品做分析拆解,然后逐一制作编程,每制作一个就测试调优,最终将所有小模块整合成一个完整的作品。老师的作用是引导孩子按照这样的思路去分析和解决问题,而并非是直接告诉孩子如何做。

更重要的是,一个优秀的老师应该能用启发式的方式让孩子自己发现程序出问题的原因,而非直接告诉孩子答案,从而培养孩子独立修改解决问题的能力。尤其在初学阶段,老师应该是和孩子们一起分析程序问题,和孩子一起按照调试的方法一步步进行,让孩子主导过程,让孩子自己来发现问题并解决问题。

这样的引导式教学,一方面需要老师有丰富的经验,另一方面也需要设计课程时把长期教学经验沉淀积累下来标准化。

笔者认为,编程教育将来一定会普及,谁能解决好优秀师资的供应以及沉淀教学经验的标准化课程设计,谁就能在市场上获得更大的认可。

➂项目制互动学习

笔者在教学过程中,曾经按照游戏制作的分工模式,指导几个孩子开发作品,收到了很好的效果。笔者把孩子组成一个制作团队,有制作人、有主程序、有主策划,大家既分工明确又很好的协作,制定开发计划,讨论策划方案,制作内容,完成程序,测试调整,俨然已经是IT企业里面的标准工作流程了。而在这个过程中,孩子们的能力得到极大的发挥,甚至连时间管理的能力都得到了提升。这样的项目制互动学习,是对现实环境的模拟,通过这样的方式,孩子们的真实能力才能得到很好的提升。

编程教育绝不应该陷入K12应试教育的套路,而应该真正承担起培养孩子思维和能力的重任。不能培养孩子独立设计制作完成程序任务的编程培训都不是真正的编程培训。

笔者认为,应该从课程设计、教学方式、师资培训等方面下手,在实际教学中着重培养孩子前述八个方面的能力,进而形成计算式思维,立足于未来。

啰嗦了这么多,总结成一句话,就是:编程教育,培养孩子受益一生的思维和能力。而这,正是我们做少儿编程教育的初衷。

本文链接:少儿编程教育:培养孩子受益一生的思维和能力

转载声明:本站文章若无特别说明,皆为原创,转载请注明来源:少儿编程网,谢谢!^^


*文章为作者独立观点,不代表少儿编程网立场
发表评论

坐等沙发
相关文章
编程是如何培养孩子创造力的?
编程是如何培养孩子创造力的?
编程少年丨王家锐:他有自己的“笑容扭曲力场”
编程少年丨王家锐:他有自己的“笑容扭曲…
为什么学编程的孩子数学成绩更好?
为什么学编程的孩子数学成绩更好?
NOIP少年丨黄子桉:不骄不躁不傲慢不强求
NOIP少年丨黄子桉:不骄不躁不傲慢不强求
普通人有没有必要学编程?
普通人有没有必要学编程?
为什么大家都建议学习少儿编程要从Scratch开始?
为什么大家都建议学习少儿编程要从Scrat…
学生都说我是编程界的“吴彦祖”