1.少儿编程的发展(简单带过)
2.少儿编程到底学习什么(超级详细)
3.少儿编程怎样的学习阶梯(详细)
4.如何进行少儿编程教学(超级详细)
5.学少儿编程有哪些好处(详细)
一、少儿编程的发展
近年来,越来越多的机构涉足少儿编程和机器人培训领域,同时也涌入了很多创业者。在美国, STEAM教育已成为其素质教育的核心,编程、3D打印、机器人等新技术教育已走进了美国的中小学校。美国前总统奥巴马也曾参与“编程一小时”活动,并呼吁美国小朋友“别总在手机上玩,要去编程”。
同时国内外对少儿编程的推动举措更是络绎不绝,也就说明的少儿编程的重要性。
日本在中小学普及编程教育科目;
英国教育大纲规定计算机编程是5-16岁儿童必修课程;
新加坡全面推动少儿编程教育,中小学考试中加入编程考试科目;
美国政府投资40亿美元开展少儿编程教育,呼吁全国青少儿学习编程;
美国国情咨文推行计算机科学教育,强制要求高中毕业必修计算机编程学分;
在国内,2015年9月,教育部发指导意见,鼓励探索STEAM教育等新教育模式。2017年起中国浙江地区将把信息技术作为高考选考科目,其高考考试范围包括编程、数据库处理、表格处理等。
2017年国务院关于印发《新一代人工智能发展规划的通知》“实施全民智能教育项目,在中小学阶段设置人工智能相关课程,逐步推广编程教育,鼓励社会力量参与寓教于乐的编程教学软件、游戏的开发和推广”。
少儿编程有望成为继数学和英语后的第三大刚需。
二、少儿编程到底学什么呢?
很多家长朋友让孩子学习编程,是为了培养逻辑思维能力。
毫无疑问,编程是一门非常适合用来锻炼逻辑思维的学科,因为编写程序的过程就是不断思考和运用逻辑的过程,所以说学习编程对逻辑思维的培养非常有效和重要。
但是这些也恰巧是计算机最擅长的,未来在大数据和人工智能面前也是最容易被替代的。围棋已经是一个非常需要思维计算的项目了,但是也抵不过计算机那么强大的运算和分析。
那么什么是不容易被替代的呢?
人类的品质,探索的精神,创新的意识,文明的艺术,更高的思维方式。
我认为少儿编程重点不在于学习编程软件的使用和编程语言,而在于思维的锻炼。让孩子在愉悦的学习环境中,尽情的将自己内心的想法表达出来,通过项目制的学习方法,掌握分析问题,解决问题的能力。
以下将从3个方面阐述下,我认为少儿编程到底学什么?
1.学什么?2.锻炼什么?3.培养什么?
1.学什么?
(1)学习软件使用方法
我们将会越来越多的使用各种软件来帮助我们更快的工作和解决问题。例如Word、Excel以及图像处理、视频剪辑软件等,而它们的使用在很多地方是相通的。
(2)学习编程知识(仅仅少儿编程学习中的一小部分)
简单的编程逻辑,代码的编写能力,条件判断,顺序执行,循环,变量,链表,函数等等一些列的编程知识和技巧。通过编程知识帮助我们设计一些小工具解决一些重复流程化的工作。
(3)数学应用
将很多数学的实际知识运用到一个个实实在在的项目上,将数字和计算赋予更高的生命力,而不是停留在试卷上答题。
2.锻炼什么?
(1)自律性
我们大部分时间是生活再他律的状态,老师管着上课不能说话,作业要按时完成。编程可以很好的将他律变成自律,因为在程序世界的对与错不需要外人评说,程序会自己告诉你。
相信大家都知道要培养一个孩子的自律性,需要制定规则,培养孩子遵守规则的意思,以及适当的延迟满足感。
每一门编程语言都有自己的规则,程序的运行也将会完全按照规则进行执行。而编程通过严谨的逻辑判断和程序规则帮助孩子不断的提升自律性。编程做项目做游戏,都不是一蹴而就的,它需要一个过程。比如:想玩一款自己脑海里的游戏,需要先进行分析-制作-测试,然后才能进行游戏。这个过程可以很好延迟满足感。所以说编程学习可以锻炼孩子的自律性。自律性对孩子的成长和成绩都非常重要,至少在小学和初中来说一个自律的孩子学习成绩通常都很优秀。
(2)自主学习能力
我们获取知识越来越便捷。无论是大人还是孩子可以通过网络或者书籍获取各种知识,这个时候的差异化凸显就体现在自主学习能力上。自主学习能力表现在两个方面一是主动学习,二是高效的学习。在高中其间高效的学习非常重要,这也是成绩从自律性拉开的关键。一个自律的人可以很好的做到主动学习,但是学业压力非常重的时候如果没有好的学习方法,将会学习的非常辛苦而不见成效。而对于大学时代主动学习将是核心,大学时光孩子将会有大把的空余时间,如果可以做到主动学习那将是人生的一笔财富。
孩子在幼儿园、小学、初中、高中一直都有家长的督促,老师的管理,并且学习压力和负担也是逐渐上升。但是在这些阶段中,孩子却无需直面社会的挑战。然而大学这个最邻近社会挑战的学习生涯却可以很轻松,大学生活这对很多孩子来说无疑是的放松的天堂,无限的自由,可以睡到自然醒,可以没日没夜的游戏。在这个阶段,没有了家长的时刻督促也没有了老师严格的管理,但是这样轻松的四年一过去,就要迎接比高考还严峻的就业挑战和面临比高中还要辛苦的工作。
似乎这样的学业规划并不是那么的合理,但是现实的教育路径就是这样的。这就需要我们的孩子提前具备自律性和自主学习能力。才能在这样的路径下成为佼佼者。
(3)创造力
孩子的想象力是无穷的,哪怕是孩子的梦境也是一部有趣的动画。编程可以将孩子想法结合音乐、图画一同表达出来。可以通过游戏,动画等等一些列的方式将想法生动的表达出来。创新意识会在孩子不断将内心想法实现和表达的过程中得到很好的锻炼,不断的创新,不断的思考。具备了自律性和自主学习能力将会是社会的中心力量,在融合上创造力,那将会是未来的霸主,极具创新的人才。
(4)表达力
通过项目进行中的团队协作,锻炼沟通协调能力。将自己的项目进行讲解和展示不断的提升表达能力。自己创造的好游戏或者好项目更容易激发分享欲,通过这个的激发,让孩子不断的感觉到分享带来的乐趣,在不知不觉中锻炼表达力。
3.培养什么?
(1)计算思维
计算思维是一种具有逻辑性和抽象化的科学计算的解决问题的能力,计算思维有四个方面,他们分别是分层思维、模式识别、流程建设和抽象化。
分层思维
帮助我们将大项目拆分成若干个小项目,将复杂的问题拆解成一个个小问题,让其变成容易理解和解决的小部分。然后通过完成小项目,解决小问题从而完成大项目,解决复杂问题,使整体变得更加易懂和简单。
如同制作汉堡
将汉堡分层划分组成部分
最上层的圆面包
生菜
奶酪
火腿
烤肉
最下层的圆面包
模式识别
任何事物都有相似性,模式识别正是教会我们寻找到它们之间的共同点。从以往的经验中得到规律并且举一反三,利用这些相同的规律,去解决问题。当我们把大项目、复杂问题分层到小项目、小问题时,我们通常可以在小项目、小问题中找到模式和规律。
加法就很典型,每一步小加法我们都会运算。
9 10 8 6 7=?
我们的计算是分层为
9 10=19
19 8=27
27 6=33
33 7=40
分层后的每个计算,都是我们之前学习过或者有规律可以遵循的。通过一层的计算,得到了最终的答案。
9 10 8 6 7=40
流程建设
流程建设是一步一步解决问题的过程,按照的一定的顺序完成一个个任务。设计程序的每一个步骤,编写程序每一行代码的过程就是流程建设的过程。
我们已经在日常生活中运用到了流程建设
7:00起床
8:00早餐
8:30上学
12:00午饭
13:00午休
14:00眼保健操
17:00放学
18:00晚餐
19:00作业
21:00睡觉
抽象化
抽象化是关注关键信息,将重要的内容提炼出来,忽略不必要的细节。掌握了抽象化的能力,我们就可以将一个解决方案应用于其他事物中,制定出解决方案的总体思路。
比如:我们认识贝类,或许我们并不是全部认识它们,也叫不出名字。但是我们知道它们都有贝壳,我们可以统一叫做贝类。然后我知道如何烹饪花甲,同样我通过它们都是贝类这个关键信息,忽略它们的外形,忽略它们的名字,就知道它们可以用相同的烹饪手法。
(2)培养耐心和细心
找Bug就是一个极需要耐心和细心的活。
既然少儿编程教育的理念是这样的,那么整个学习过程就应该围绕这个来开展,才不会让少儿编程教育变成知识灌输式的科目。
少儿编程好与不好,关键不在于少儿编程本身好不好,因为学是有益的。我觉得少儿编程的关键在于教学的形式和过程。
三、少儿编程学习怎么样的一个阶梯呢?
但是说到编程,可能大家脑海里面第一的反应就是这样的界面。密密麻麻的全是英文代码,想想都非常的可怕,小孩子怎么可能能学会这样的编程?就算能学会,也不忍心让孩子去遭这份罪。
编程语言那么多,小朋友学习的是什么呢?
但其实孩子入门学习的编程并不长这样。它长得是这样的:
我们看它有点像什么?非常像积木。编程就有像积木搭建一样,这种好处就是他避开了非常复杂的语法。它不会因为一个分号的中英文输入就造成错误,也不会因为一个中括号或者大括号就造成错误。
它可以巧妙地避开我们现在实际代码中的语法,却非常好地保留了我们原本具备的思维。
所以使用它可以很好的锻炼孩子编程思维的,所以孩子可以很轻松的使用Scratch完成一个体感切水果游戏。
Scratch作为编程入门,后面可以继续学习Python,C 参加信息奥赛。
四、谈谈如何进行少儿编程教学
一点点浅薄的看法。
1. 放空教学法
少儿编程这门课程诞生的目的,并不是为了让孩子们踏上程序员这条职业道路。如果大家关注到这个领域,就能在很多介绍和宣传语上看到:学习电脑不是为了成为打字员;学习英语不是为了成为翻译员;学习编程不是为了成为程序员。
编程是通过项目制的方式,培养孩子分析问题,解决问题的能力,进而提升逻辑思维。但是如何进行教学才能真真切切的将这些理念贯彻到底呢?虽然书籍很难将思维进行传达,更多的是带着小朋友体验项目。但是这本书将会使用放空教学法,将思维的培养贯彻到底。这已经不仅是一本编程书籍了,更是一本计算思维培养书籍。
我的第一版系列公开课发布至今已有近10万人次学习了,其中有很多孩子,家长以及同业朋友们。通过这么多不同角色身份从多种视角学习课程和审视课程,我收集到了很多想法、建议和反馈,课程也经历了一次又一次的迭代。无论是规划知识点,设计故事思路,琢磨思维方式,确定素材,制作项目,编写文案脚本以及后续与孩子直接语音交互的答疑,我一直坚持在一线。如果学习过我课程的孩子和家长朋友应该深有体会,我提倡孩子自己将遇到的问题总结出来,自己去描述,然后自己来询问老师或者寻找帮助,我也通过语音给他思路和方法,孩子们再去尝试,最终找到方法,解决问题。
所以当孩子在学习过程中遇到问题后,不需要急于帮孩子解决或者立刻询问老师。建议可以给孩子一个比较长的思考时间,让孩子去体会思考,通过自己的想法,探索,尝试来解决这个问题。锻炼这个能力也是这门课程的任务,未来会有遇到很多问题,一两个答案是解决不了所有问题的,但是这种思考方式却是可以一直帮助孩子排除问题的。
正如我们工作一样,遇到问题,没有谁主动帮我归纳问题,也没有谁主动送上答案。更多的是要自己描述问题,哪怕就是百度,也必须描述清楚问题。描述问题后,需要自己去寻找帮助,然后解决它。
在不断重复这个事情的过程中,让我更加深刻的体会到编程真正要给孩子带来的是什么,应该如何带给孩子。
编程学习我们更多的要传授给孩子的是思维方式,而不是知识点。但是一直以来老师都充当着一个饱含知识的角色,每一次的授课,老师总是将自己的知识竟可能多的教给孩子。传授知识并没有错,从小学到大学,我们将会接受很多这样的教育,那么现在的编程学习,我们应该突出思维的培养而不是知识的灌输。
现在是科技时代,知识的量级越来越大,互联网越来越发达,获取知识也越来越简单,那么思维就尤为重要了。
在课程不断迭代以及一线教学了那么多孩子后,我创造了一套教学方式,并给它取了个名字叫做“放空教学法”。因为书籍讲解很难将教学理念和方法传递给孩子,所以大部分书籍都是带着孩子一步步完成项目。
但是在这本书中,我将尽可能将学习思维融入在本书之中。希望能给予老师或者家长辅导孩子一定的帮助。
放空教学法:将老师已有的知识储备清空到一个适度水平,以思维引导的方式和学生共同进行探索学习,教学方式从灌输知识点转变为传递探索的思维方式。
放空教学法放空知识,而不放空智商。
放空教学法分为两种放空模式:
(1)全放空:将知识储备放空到和学生同等储备量,成为一个彻彻底底的玩伴一起探索。
(2)半放空:根据实际需要,适度利用知识来作为引导,成为一个亦师亦友的角色。能在关键时刻,进行指引。
采用这样教学法能更好的培养孩子的思维方式,当老师也不知道Scratch中这个积木块有什么功能的时候,老师就无法去做知识灌输了,只能和孩子一起尝试这个用法了。
放空教学法只放空知识储备,可别把思考方式也放空了,其实这种教学法对教学的要求更高。对于编程来说带着孩子一步步去完成项目其实挺简单,老师怎么做,学生跟着做,在乐高,机器人,编程课程上,很多是这样进行的,这样其实对孩子培养思维本身并没有太大的益处,照着模仿其实就足够了。无论是老师还是家长想要教孩子学习编程,就需要我们成为他们的玩伴。一起分析一起思考一起探索。而这个就是书籍无法做到和取代的了。
放空教学法,放空的是知识,思维不能丢。带着孩子大胆尝试,初次接触的功能和积木块,不懂有什么用处。啥也别问,拖动出来试试吧。
2.学习各种方法
(1)学习分类查找
Scratch中,寻找一个角色或者一个背景,在角色库,背景库中来来回回都没有找到。找到角色所属的大类,进入这个分类中去寻找。
(2)学习对比区分
“播放声音”和“播放声音直到播放完毕”这两个积木块,如何交给孩子,拖动出来进行对比下,孩子自然就明白了。因为Scratch本身的积木块解释就已经很清晰了。
......
所以少儿编程学习更多的是把它看做成一种学习工具,而不仅仅是学习知识本身。如果我们把少儿编程看成是知识的学习,软件的学习,那么这将失去了这门课程学习的初衷。如果我们把编程看成是一种工具,通过编程的学习,项目制,带着孩子学习分析项目,分解项目,单个突破,组合项目的方法。以及整个思考过程这样的学习才能真正培养这些能力。
3、 那么这样的教学应该如何进行和设计呢?
每一位家长或者老师都想将编程思维培养贯彻到底,将自己的引导或者教学能真正的将思维方式传递给孩子而不是局限在表面的编程知识层面。
但是愿景很美好,现实很残酷。怎么设计课程才能做到呢?
接下来,我将设计课程的思路分享给大家,希望能给打大家一些帮助。同时我也在不断的学习和迭代。可能一段时间后还会有更加全面的课程设计思路。
(1)好的课程必须让学习者爱上学习,特别是对于孩子。
学习不是一件压力,痛苦的事情,而是一件愉悦、开心的事情。
只有学习者喜欢学习,接下来你的内容才能给到他。教育不在于老师有多么渊博知识,而在于学生能够从老师那里获得多少知识。
那么就要站在学习者的角度来设计课程,制作一个学习者容易理解,喜欢的课程。
让孩子喜欢的首要原则就是要有趣,好玩,做到玩中学。
做到有趣的关键在于案例,案例构思决定了课程的50%。
然后是贴近孩子,我曾经统计过孩子喜欢看的电视和游戏,你就会发现他们所喜欢的和你假象的真的千差万别。所以知道孩子喜好,跟随他们去了解,去接触,去喜欢,这样将自己摆在他们的视角来看待问题。
(2)故事的构建索引,贴近孩子。
素材的选取使用奥特曼打怪兽一定比猫狗打架来的有趣。讲解坐标把笛卡尔发现坐标的那个蜘蛛故事讲解,估计没有讲解海洋上出现海盗,需要你驾驶军舰前去营救来的有吸引力。
(3)任务驱动,也就是项目制的方式。
学习是基于问题的学习,学不致用那么很快就会忘记。展示项目,明确主线,通过完成项目,解决任务中遇到的一个个的小问题中进行学习掌握知识。
项目分解成一个个待完成的小任务,然后朝着这些任务进行,遇到阻碍,瞄准阻碍进行探索,找资料,尝试,比对,解决,掌握知识,继续。
学习知识1》学习知识2》学习知识3》做项目》运用到知识3还有知识4?
这种模式非常容易忘记前面学习了什么,同时学习无聊无目。
确定项目目标》遇到问题》产生思考》进而学习》掌握知识》运用知识》解决问题》掌握知识
这种学习模式目标清晰,以任务为驱动,每学习一个知识解决一个问题直接反馈获得成就感。
(4)以下分享我的课程设计教学流程希望能帮助到前行的培养:
引导
案例展示
分解任务
分析任务
进行
遇到问题
尝试
验证
学习
尝试
验证
学习
解决问题
归纳知识(掌握)
组合任务
完成项目
创意发散
表达分享
五、学少儿编程有哪些好处呢?
学习编程对孩子的帮助很大,可以归纳为以下10点:
(1)强化孩子的逻辑思维能力。
编写程序最重要的是如何把大问题不断分割成小问题。
如同计算这个加法题9 8 7 4 5 9=?,如果你不能看一眼就得到答案,那么你应该将它拆解成9 8, 7, 4, 5, 9,5个加法题一个个的解决。
编程中孩子要思考如何把代码合理地安排在整个程序中,让程序流畅地处理输入、演算、输出,这个过程对孩子分析事物的逻辑性有极大的帮助。
(2)培养孩子的专注力和细心度。
修改Bug是每一个编写程序人的必经之事,无论是大人还是小孩都不例外。有时候只是少打了一个字母或在某一行末尾少了一个分号,就会造成程序大乱,更别说逻辑分析问题上忽略的某种状况和陷阱。所以,在编写程序的过程中,排错是无法敷衍了事的,这个过程能有效改正孩子马虎行事的毛病,避免当个“差不多”先生。
(3)提高孩子的耐心。
当父母的一定遇到过这种情况,带孩子去吃饭,孩子怎么也坐不住,总是跑来跑去,到处吵闹玩耍。这时,有的人会拿出手机当作游戏机,孩子的注意力瞬间就会被拉回来,开始安静地坐在位置上玩耍。以游戏项目作为课程就是运用这种特性,让孩子在游戏中学习,寓教于乐。但是编写游戏和玩游戏的很大区别在于编写游戏可以很好的锻炼孩子延迟满足感的能力,提高耐心,从编写游戏,到玩游戏,是需要经历一个比较长的过程。同时学会编写游戏的小朋友,会在游戏过程中融入更多的思考,游戏视角会有明显变化。
(4)增加孩子的抽象思考能力。
其实学习编程就像学习外语一样。如果说学外语是为了跟外国人沟通,学习程序就是为了跟计算机沟通。更有趣的是,你碰到外国人不会说外语还可以用手比划,跟电脑可不行。这意味着孩子在学习的过程中需要一种化具体为抽象的能力,让程序能够按照孩子想象的方式运行,这是集思广益的过程。让孩子发挥无限想象并动手实践,让不懂得思考的电脑也能了解与表达抽象的事物。
(5)提升孩子整理信息、融会贯通的能力。
程序是一堆电脑指令的组合,好比上小学时我们查字典学汉字、学成语,之后学习如何利用习得的汉字、成语组成句子,进而撰写文章一样。程序中的基本指令就像是汉字,写成可重复利用的方法或对象就像是成语。最终要完成项目,就必须融会贯通、学以致用,确保程序在执行中不会出现不可预期的错误。
(6)提升孩子国际性的沟通能力和竞争力。
显而易见,现在哪一个行业可以不用电脑?如同先前提过的,编程语言已然成为一种重要的沟通工具,不但可以跟电脑沟通,还可以跟所有运用电脑的人沟通。孩子在幼时接触的环境往往跟以后的发展有极大的关联性,如果不想跟世界脱轨,那么最好尽早让他们了解程序或编程是怎么一回事,这将会是他们面对国际和未来竞争的核心能力。
(7)让孩子学会团队合作和共同学习。
在适当的教学课程设计下,学写程序就像玩游戏闯关一样,同学彼此讨论破关攻略。结对编程,你不会,我教你;我卡关,你帮忙;我设计,你闯关。同时,在互动中增进情谊,学习如何利用团队的力量解决问题。比起老师在讲台上单方面的讲课,同学之间的探讨更容易提高学习效率。
(8)训练孩子的空间思考能力。
在编程中控制游戏人物的过程是训练空间思考能力的一个很棒的方式。仿佛孩子自己在高低起伏中身陷迷宫,在闯关角色中置身于编程世界,在游戏中学习,明白方向感和立体的空间架构。
(9)增进孩子解决问题的能力。
面对一道道关卡的挑战,孩子会不断思考如何利用学到的知识、程序达到闯关的目的。一旦养成这样的习惯,在碰到生活中或其他课业问题时,自然也会试着自己解决。父母只要给予适当的工具和提示,让孩子自己动手、动脑去完成。
(10)Learn to code,code to learn。
学习编程,训练编程的思考方式(Computational Thinking),如同学习阅读一样,在知识爆炸的时代,这是一种基本的能力。从小我们学习怎么阅读,并用阅读学习更多知识;而从小学习怎么写程序、控制电脑,了解的是一种新的学习方式,并且在学习写程序的过程中,刺激孩子的学习积极性。父母再也不用逼着孩子学习数学,因为当他要完成按钮、人物、得分、方向的同时必然需要用到许多数学的技巧,让孩子在编程的同时自主学习。另外,还可以提高孩子的英文能力,编程让接触英文成为自然而然的事情。其他的科目(如音乐、艺术、文学等)一样可以运用在编程的过程中,也就是我们所说的code to learn。