深度未来人才必学的少儿编程课的教育学逻

北京去哪里医院治疗白癜风最好 https://baijiahao.baidu.com/s?id=1707672648061290025&wfr=spider&for=pc

看点:

年以来,STEAM教育伴随着政策的春风在世界范围内蓬勃发展起来。与此同时,此前不温不火的少儿编程也被这股STEAM浪潮推向了风口,成为备受学校和家长瞩目的“刚需”课程。

作为STEAM教育的一个分支方向,编程课程不仅承载了“T”(Technology,技术)和“M”(Mathematics,数学)的部分,为各学科的学习过程提供支持;更重要的是,编程课程本身也为学生提供了在新时代解决问题的“计算思维”。

魔都好课(ID:SHEdu)希望和少儿编程的从业者们以及教师、家长共同冷静思考编程教育对于未来人才培养的意义是什么?少儿编程课程的设计逻辑是什么样的?有哪些课程开发与教学的要领?

本期教育盗火者

Will老师

“敲敲少儿编程”创始人

为什么说编程培养的是未来人才必须的思维模式?

编程课程的核心目标,不仅仅关于提升学生的逻辑思维,更在于帮助学生掌握编程中涉及到的、应用于解决问题的计算思维(ComputationalThinking)。这种解决问题的本质思维将是未来各行各业不可或缺的核心能力之一。

虽然我们的学生并不一定每个人都需要成为程序员,但是在人工智能迅速崛起的21世纪,掌握计算思维的方法是必不可少的。在未来,编程语言会成为主要的生产力语言,无论是否从事计算机相关行业,各行各业的人们将会越来越依靠计算机来解决问题。

因此,编程教育及背后的计算思维不仅仅代表了这个世界的运行规律,更是帮助学生更高效地解决真实问题的方法。

首先,什么是计算思维?

计算思维是编程课程的核心逻辑,这种思维模式通常包含了问题分解、模式识别、抽象化和算法四个部分,而这其实是人类很自然的思维方式。

在我们遇到问题时,我们首先会把一个大的问题拆分为更容易解决的小问题,然后在问题中找到共同点,将共同点抽象出来形成解决问题的算法。

算法也可以被简单理解为解决问题的步骤。

如何培养计算思维?

对于培养孩子的计算思维而言,可以先从Scratch的学习入手。它虽然是一个图形化编程语言,但却是一个很完整的编程体系,几乎包含了生产力编程语言所应该拥有的所有框架和体系。

Scratch的学习对理解计算思维和其它编程语言都会有帮助,背后的逻辑是完全相通的。

Scratch界面

计算思维将如何被迁移到其他学科中?又将如何优化学习者的生活?

首先,我们需要理解人类思考的过程。

诺贝尔经济学奖获得者、心理学家丹尼尔·卡尼曼在《思考!快与慢》一书中将人脑分为两个系统,第一系统和第二系统。第一系统是一个很“懒”的系统,当我们遇到问题之后,不能马上看到结果时,就会启动第二系统。第二系统开始把大问题拆分为一个个小问题,然后找到其中的相同点,将问题模块抽象化,然后再来求解出来。

不难发现,这种思考模式很耗费我们的精力,所以当孩子有意识去应用这种思维,且这种思维扎根到他们的第二系统的时候,他们才会开始习惯性地用这种思维来解决生活里面的问题。如果缺乏对计算思维的系统性培养,这种解决问题的方式不能够的深入到学生的心智里面去,也就很难够帮助学生将计算思维迁移到其它领域。

其次,对于生活而言,计算思维也尤为重要。

比如对于创业而言,我们在做一个大的项目的时候,通常需要结构性的思考:首先将项目拆解为独立的小项目(问题分解),然后找到项目间的共同点,以便更高效地解决问题(模式识别),接着将项目内容抽象出来(抽象化),列出解决问题的步骤(算法)。

如果从人类文明发展历程的角度来看,编程教育所培养的计算思维同样具有重要意义。

在工业革命之前,学校里其实是没有物理化学这些学科的,而在工业革命之后,这些学科才纷纷兴起,成为了大众需要学习的基础学科。为什么会产生这样的变化呢?随着科学技术知识越来越多地被应用于生活的方方面面,想要理解这个世界,就需要了解这个世界背后的科学原理。

编程课程也是如此。在未来,越来越多的场景会应用编程,编程不仅仅作为计算机语言而存在,更是一种认识世界的思考模式。作为信息时代的原住民,孩子们在学习编程过程中逐渐形成处理客观问题所需的计算思维,会使他们拥有了一张读懂未来虚拟世界逻辑的入场券。

当然,也有很多学生沉迷于电脑游戏的情况。孩子作为数字时代的原住民,对于电脑的使用是无可避免的,完全禁止孩子使用电脑并不现实。

所以问题的关键在于教会孩子主动用电脑创造性地解决问题,而不是被动接收信息。让孩子对电脑编程,而不是电脑对孩子编程。学习过编程的孩子,了解游戏背后的运行原理,开启了这种“上帝视角”之后,孩子们反而没有那么容易沉迷于电脑游戏。

对于孩子们来说,编程不止是一项技术、一种能力。当孩子们走进编程这扇门,他们会发现编程给他们提供了一个可以自由探索的空间。

根据编程的定义,编程是一个通过计算机语言实现需求的过程。因此,在编程学习过程中,孩子们发现需求,是从无到有的创造力试验田;孩子们实现编程需求,可以运用多种解决方案与逻辑路径,是多角度思考问题的加速器;孩子们调整与完善编程内容,会体会到牵一发而动全身的程序构造设计,是整合思维的演练场。

比如孩子在编写愤怒小鸟游戏程序时,发现可以通过把小鸟图标面积调小,优化小鸟运动轨迹等编程调整,让小鸟便于躲避水管障碍,获得更高的游戏分数。

编程就是这样充满惊喜与发现的过程,学习编程让孩子体会到在成败、有无之间,还有无限的可能性,在需求与结果之间,还有沿途的风景和意外的收获。

孩子改写后的愤怒小鸟游戏

编程本身还是一个可以赋能的工具。因此,编程学习给孩子们提供了一个真实应用、实现自我的空间。孩子因为年龄和能力的限制有很多事情无法完成,比如青春期的孩子会经历生理和心理发展不平衡性的阶段,孩子们的生理成熟度趋向成人,然而他们心理成长不能一蹴而就,会出现青春叛逆期等现实矛盾冲突。

编程学习正是提供了一个工具,就如同用小杠杆撬动大改变,他们可以在代码的世界中,实现自己的构想,有自己的一方天地。

很多孩子和成人都喜欢一款单机游戏《我的世界(Minecraft)》,这款游戏就是用基本元素让游戏者构造出丰富的世界,这也是很多孩子喜欢这款游戏的原因,孩子们能够在游戏中构造出了一个暂时安全的自由空间,他们可以躲避其中,忘掉现实的烦恼。

实际上,代码就是虚拟世界中的建筑材料。孩子们也可以用代码构建一个属于他们自己的世界,可以是一个游戏设计,是一个辅助查询工具,或者是一个自用资料的数据库。编程帮助孩子们超越不够成熟的生理、心理、现实等条件,让他们拥有属于自己一方天地,敢于不断挑战、不断表达,实现自己的想法。

《我的世界(Minecraft)》游戏海报

编程世界那么精彩,孩子真的还会沉迷游戏吗?

优质的编程课背后有哪些设计逻辑?

既然编程还原了解决问题的本质,提供了培养学生计算思维的路径和方法,那么,好的编程课应该通过怎样的教学设计与实践来实现这样的目标呢?

事实上,我们可以遵循幼儿式学习、迭代式学习、算法式学习三种学习逻辑来驱动编程教学,实现教学目标。

幼儿式学习:所有的学习都和真实世界紧密关联

编程是一门强应用型学科,需要将抽象场景生活化,并应用在解决真实世界中的各种问题。

我们在教学编程的时候其实是按照符合人类天性的学习方法来实践的,即皮亚杰提出的物体先于表达,具体先于抽象。这样的学习路径,对于课程设计者而言,可以做出很多有针对性的有趣内容。

编程常常和小学数学课堂进行结合。比如讲解到圆周率π的时候,数学老师一般会直接讲授π的概念。至于数学家们是如何推导出圆周率的,古人“割圆术”的智慧等等,这些孩子们最难理解也是教学最出彩的部分,老师们最多只能借助多媒体来介绍。

但若引入编程的话,数学老师可以引导孩子来写一个小程序,小程序画出任意条边的多边形,孩子们通过这个小程序可以形象地观察到当多边形的边数越来越多的时候,就越来越像一个圆。如此,学生可以通过亲自参与设计“割圆术”进一步理解π的内涵所在。

孩子参与设计的推导π的小程序

这正符合皮亚杰所说的,儿童在认知过程中,总是物体先于表达,具体先于抽象的认知发展规律。皮亚杰认为,儿童的认知规律应该以认知结构为依据区分心理发展阶段。当儿童第一次接触到如圆周率这样抽象概念的时候,一般为6-12岁,处于“具体运算阶段”。这时候儿童心理操作正着眼于抽象概念,属于运算性(逻辑性),但思维活动需要具体内容的支持。因而,借助编程这样形象化的操作演绎,正符合儿童当下的认知发展规律。

编程常常可以这样进行跨学科融合,且它与语数外这些基础学科不同的是,并不需要很多时间便可以看到应用效果,也就可以尽早让孩子了解如何建立学习与真实世界的关联,培养“解决问题型”思维。好的编程课尤其注重解决问题过程中如何针对探索性目标进行教学设计。这就需要课程设计者尤其注意“问题设计”,尽量留半开放式问题,引导学生进行自我探索。

比如我们会在编程课堂中专门设计1~3个具有挑战性的项目,不给孩子答案,而是让孩子自己去探索。孩子这时候可能会通过修改参数发现编程效果的改变,或是通过Debug(修复代码)尝试发现结果比预期还要好。编程本身自带的这种特点会让孩子发现通过修改调整参数、代码会产生不同的效果。

这其实是想启发孩子明白,原来没有单一的答案,也没有绝对的对与错。这个过程打破了中国式的纯二元分化的思维,给予了孩子一个中间地带去接受一个“非失败”的结果,并在这个过程中不断完成自我迭代。

迭代式学习:没有完美世界,但是我们可以不断优化它

好的编程课会引导孩子在Debug过程中接受“启发性失败”,让孩子对失败“脱敏”,并不断迭代、不断成长。

但“启发性失败”是循序渐进的。学习早期尽可能让Debug少一些,然后逐渐增加,让孩子最开始获得成就感后再慢慢接受“启发性失败”。

有一个8岁的女孩跟着我们上了几节编程课后,已经能够自己做出一些基本的作品。女孩说,学校马上要举办一个儿童节活动,她想编出一款类似幸运52的“知识竞答”作品,让大家能在活动中玩。

指导老师听后很兴奋,就指导她用算法思维来想这个任务怎么完成,引导她把这个任务拆分成小任务(建题库、随机抽取、检验答案),然后每个小任务又找到和以前学过的对应知识点,并抽象出相应的算法来完成。小姑娘花了一整天的时间完成了,做好后特别有成就感。

在儿童节当天,我们突然收到孩子妈妈的信息,说孩子的程序出问题了,现场的答案都是错的。我们当时正在办理其他事情,没有及时看到讯息。等看到后给她妈妈拨通电话,妈妈告诉我们,女儿当场检查代码,已经自己修改好了。妈妈说,“让我特别惊喜的是,结束后女儿竟然因为当场改好了代码而更开心了。要知道她以前是碰到不如意的事情就懊恼的孩子啊!”

这件事对我们的触动很深——原来编程改变儿童的不仅是思维上的迭代更新,还是性格上“潜移默化”的迭代。

我们在学生时代所谓的解决问题实际上是心理学上说的“定义优良问题”。比如说一道数学题,一个苹果5元钱,小明想买3个苹果,他给了老板20元钱,找他多少钱?这种问题有明显的边界和解决的方法。可是在真实世界中这根本算不上是个“问题”。真正的问题应该是接近于真实世界,需要探索不同解决方案去解决的。

编程课debug(修复代码)过程,让孩子养成了不气馁的特点,是因为孩子们知道了这个世界本来就没有像做作业那样的“定义优良问题”,需要用自己的创造力来不断修正它,而编程正好赋予了他们这个能力。

学习编程过程不会是一帆风顺的,编程可绕不开“Debug(调整程序、移除错误)”的过程,俗称“修bug”。说到“修bug”你会想到什么,是程序员稀少的头发,还是挑灯夜战敖红的眼眶?

我们却更愿意叫“修bug”的另一个名字——启发性挫折。顾名思义,启发性挫折,就是当孩子遇到挫折(bug)的时候,挫折以及修复挫折的过程应该是对孩子的成长有启发性的。成长总是伴随着痛苦,挫折是是成长的一个机会窗口。我们要为孩子创造恰到好处的挫折,帮助孩子们适应环境,超越自己。

在比赛现场修bug可谓是能力与心理的双重挑战。一个家长分享了她女儿在机器人比赛现场的冷静表现,平时脾气有点急躁的女儿,在程序出现问题后,尝试着自己不断地进行调试,一个参数不对,调另外一个参数,都不行,从头到尾修改了好几处代码,最终,程序和之前的设计有所变化,但顺利地运行起来了。

面对新情况、新挑战,很多孩子会重复一哭二闹发脾气的恶性循环。在儿童心理发展阶段中,有一阶段被称为秩序感敏感期,这阶段孩子们往往不允许突破主观常规的事情出现,比如他会因为平时天天吃鸡蛋,某天没吃到鸡蛋而大哭大闹。而在编程学习中,修bug的过程其实在让孩子锻炼遇见问题时应该如何妥善处理的能力。

老师会在编程课程结束前做一些开放性的留白设计,让孩子自己尝试改动数据,改写程序的影响,让孩子自己尝试改动与探索。孩子们会发现不同的改写会形成系统性的影响,出问题时改动的不仅仅是一个参数,他们更愿意去主动调整程序,适应新的改写,以更平和、更积极的心态面对困难与挑战。

算法式学习:所有的问题解决都有迹可循

编程教育最注重的算法式学习与计算机思维紧密关联。

计算机思维包括几个步骤:问题分解、模式识别、抽象提取、算法设计。前面三个步骤其实都是为了做一个算法设计。比如举个简单例子,如果你想做一道创新菜,你先把做菜这个事情分解步骤(想好做什么以及什么味道、原材料购买和准备、烹饪、摆盘),然后和以前自己做的一些菜的一些异同点来复用一些经验,也就是模式识别(patternmatch)。做好饭后,再抽象提取一下自己的方法论,把菜谱做出来,这个菜谱也就是以后可以持续复用的算法。这就是算法式学习指的”提炼+复用”模式。

顺着这样的学习模式,好的编程课应鼓励孩子不断思考和总结,将过往学过的知识和技巧凝结成算法,这样就可以不断地做出更创新、复杂的作品了。

所以这三种学习方式(幼儿式、迭代式、算法式)都是有逻辑关系的——首先,用幼儿式的方法让孩子很容易接受学习;接着,迭代式学习让孩子养成Debug的思考习惯,不把世界简单分为成功失败,而是将所谓的失败看成了只是不符合现在的预期;然后,在做成以及学成一个个知识点和创新点后,将其算法化,升级自己的大脑系统。

我们期许每个人都能有机会上编程课,就像比尔·盖茨当年的梦想每个人桌子上都有一台电脑。虽然计算机语言理解门槛高,但编程可以作为一种通用的语言来理解这个世界,知道真实世界运行的原理。好的编程课不仅是幼儿式学习、迭代式学习、算法式学习三大特点的融合,最终极的目标还是引导孩子走向真实世界,认识真实世界。

编程课程有哪些开发与教学要领?

什么样的课程设计让孩子爱上编程?我们认为有效的编程课程要做到“千人千课”的个性化设计。

首先,“有趣”是编程课程的设计起点,我们会考虑每一个孩子的学习兴趣。

比如,孩子们都喜欢玩超级玛丽,我们就会给孩子们展示超级玛丽游戏背后的代码,孩子会发现这个轻松活泼的游戏,代码却非常复杂繁多,经典游戏与复杂代码之间的巨大差异,会激发孩子们的好奇心与探索精神。随着编程学习的深入,一些复杂抽象的知识点,我们也会选择生动的游戏案例来进行讲解与练习,像水果忍者、植物大战僵尸等热门游戏都成为了受孩子们欢迎的课程案例。

敲敲编程的超级玛丽课程

老师还会考虑男孩、女孩不同的兴趣切入点,提供丰富的元素让孩子们进行创造性学习。

除了孩子们喜闻乐见的游戏元素外,很多程序的编写还融入了跨学科内容,喜欢三国故事的男生做了一个三国知识竞赛的程序,程序编写过程中他也加深了对于故事细节和人物关系的认识。

还有很多课程元素提供了工具性手段,比如孩子们学完随机转盘游戏的编程后,他们会用随机转盘游戏来解决值日分工谁来扫地,才艺展示谁来唱歌等问题。

敲敲编程的生活小工具课程

其次,课程进度会以知识点为单位进行课程细化设计。

我们的教研团队将课程设置为8个能力等级,由入门到进阶不断提升。在每一个等级里,老师会进行知识点细分。这样细化后的课程设计能保证老师教学的针对性和有效性。

比如孩子能够顺利完成编程练习时,就可以增加每节课知识点的容量与难度;孩子练习反馈滞后课程要求时,老师就会进一步切分知识点,放慢步伐,便于孩子更好地理解和掌握。另外,编程课程的难度会参考孩子的数学学习进度,是否学过加减法还是学过四则运算,数学知识是衡量课程起点和难度的指标。

同时,以知识点为单位的课程设计要满足三个标准:第一,切入点要有趣,用和孩子有关的案例导入课程,比如热门游戏或真实生活场景等;第二,突出知识点,讲解和练习设计要有典型性;第三融入分享与展示环节,比如小组讨论交流、编程内容讲解与展示、互评编程作品等,能够锻炼用编程解决实际问题的综合能力。

这样进阶的课程设计确保孩子的编程知识和逻辑思维方面稳步提升,从前期图形化编程语言Scratch到后期专业python、C++等语言衔接,无论是打算将编程作为兴趣还是职业,都给孩子们奠定了良好、扎实的编程基础。

课程致力于营造交互性强的学习氛围,打造沉浸性强的线上智能课堂。未来老师们会借助数据分析、实时交互等技术手段,比如姓名识别系统、练习反馈机制、互动性编程操作等设计,智能化地实现“千人千课”的教学设想。

总之,“千人千课”的个性化的课程设计让孩子踮起脚就能够到,享受学习编程的获得感与成就感,自然而然地爱上编程。

福利时间到!!

1.敲敲编程春季班5周课,原价元,限时魔都好课读者专属优惠49元。一顿晚饭价格,开启孩子的计算思维未来!

课程完成后还能获得小米指尖积木、结业证书;

优秀学生还能获得小米智能积木或Scratch官方合作的Microbit可编程机械套件!

转发本文到朋友圈,截图发给敲敲编程的助教老师(


转载请注明:http://www.aierlanlan.com/rzgz/365.html