阅读提示:通过阅读本指南,你可以对编程学习内容有一个基本的认识,了解编程学习的重要性以及如何引导孩子进行少儿编程学习。本文内容包含以下几个部分:

1. 为什么要学习少儿编程
2. 编程需要学习哪些内容
3. 怎样学习编程

1. 为什么要学习编程

从 2016 年开始,国内出现了很多的少儿编程培训机构,少儿编程随之逐渐进入了众多家长的视野。但编程是干什么的,为什么要让孩子学习编程,很多家长对少儿编程了解甚少,就连很多年轻的 80 后、90 后家长们,都是一头雾水。

最早在中学阶段推广编程相关课程的以色列

其实少儿编程并不是这几年才出现的。早在上世纪 90 年代中期,以色列就开始整个国家在 K12 阶段大力推行计算机科学相关课程,距今已有二十多年的历史。在很多国家,少儿编程相关课程已然或正在成为公立学校的必修课程。

  • 在上世纪 90 年代中期,以色列教育部部长就明确表示,计算机科学应该同其他科学学科一样受到重视,并在高中开始推广编程课程。2010 年,以色列将编程纳入高校必修科目,并要求孩子从小学一年级学习编程;
  • 2013 年,英国对全国中小学教学大纲进行改革,将编程列为基础必修课程;
  • 2013 年,美国总统奥巴马号召全美学生学习编程,并在白宫发起了「编程 1 小时」活动;
  • 2015 年,美国政府投资40亿美元开展少儿编程教育,将编程纳入美国的K12的教育体系中;
  • 2016 年,美国政府再次推行计算机科学教育,强制要求高中毕业必修计算机编程学分;
  • 2016 年,芬兰、比利时研究将电脑编程列入核心教育大纲,奥地利、保加利亚、捷克、丹麦等 15 个欧盟学校课程中列入程序语言,其中 12 个从高中,9 个从小学开始教授少儿编程课程;
  • 2017 年,日本倡导中小学开展 STEAM 理念教学,并提出将从小学开始设置编程课程;
  • 2017 年,新加坡全面推动少儿编程教育,中小学考试中加入编程考试科目;
  • 2017 年,加拿大计划将编程纳入纳入中小学教育体系;
  • 2018 年,韩国开始全面开始推广中学编程课程;
彭博社 2019 年创新指数(2019 Bloomberg Innovation Index)

在彭博社公布的 2019 年创新指数(2019 Bloomberg Innovation Index)榜单上,人口不足 1000 万的以色列排名第五(美国排名第 8,中国排名第 16)。以色列在高新科技领域的成功与其在国民教育方面的高瞻远瞩应该是分不开的。

中国在少儿编程普及方面起步较晚,但自 2014 年浙江将信息技术纳入高考后,国内逐步加快了计算机科学在基础教育方面的推广:

  • 2014 年,浙江省高考改革方案,将信息技术科目加入高考;
  • 2015 年,教育部发指导意见,鼓励探索 STEAM 教育等新教育模式;
  • 2017 年,浙江地区将把信息技术作为高考选考科目;
  • 2017 年国务院印发《新一代人工智能发展规划的通知》「实施全民智能教育项目,在中小学阶段设置人工智能相关课程,逐步推广编程教育,鼓励社会力量参与寓教于乐的编程教学软件、游戏的开发和推广」;
  • 2018 年,山东省最新出版小学信息技术六年级教材加入 编程课程内容;
  • 江苏省要求在中小学普及编程教育;西安市规定,在中国青少年机器人联赛中获奖可享受中考加分政策;广东省将信息技术加入高考内容;天津市将编程纳入中考特招范围;重庆市将编程教育列入中小学必学科目;2022 年起,全国一线城市初高中将加入编程必修课......

为什么要让孩子学习编程,为什么这么多国家不遗余力的在中小学推广编程相关课程?仅仅是因为学习编程可以增强孩子的逻辑思维能力,培养孩子的专注度,促进孩子智力发育,提高孩子抗挫折能力吗?

计算机科学通往未来科技

学习编程的确有这些好处,但又不仅仅是这些。其实学习任何一门科学或者一些项目如围棋,都可以达到上面的目的。为什么要学习编程?因为编程代表着未来,是通往未来科技创新的关键。看看你的周围,以及任何你能想到的行业,计算机的应用已然无处不在,而未来计算机的应用只会更加广泛。学习编程,就是学习与计算机交流的方式,更好的适应未来人工智能更广泛应用时代的需要,并利用人类历史上这一最伟大的工具释放自己更大的潜力。

美国 2015-2016 理工类(STEM)毕业人数 (蓝色)与 2024 年岗位需求预测人数(粉色)对比

在全球范围内,教育的重中之重可以被总结为由四个首字母构成的缩略词:STEM。精通科学(science)、技术(technology)、工程(engineering)和数学(mathematics),对任何一个想要促进经济增长、推动科技创新、创造工作岗位的国家来说都至关重要。美国劳工统计局(Bureau of Labor Statistics)曾经对 STEM 领域到 2024 年的劳动用工做了预测,到2024 年,新增的 STEM 类工作岗位有 73% 会是计算机科学相关职位,其他传统理科专业在未来均会面临需求大幅收缩的问题。

Hamilton Project:计算机科学相关专业总收入比大学毕业生平均总收入高 40%

不仅是岗位需求,在薪酬方面,计算机相关专业收入也已经远远超过了平均收入水平。根据美国 Hamilton Project 的统计数据,计算机科学相关专业总收入比大学毕业生平均总收入高 40%。

Glassdoor:美国 25 个薪酬最高专业毕业生首个 5 年平均年收入统计

而在 Glassdoor 所做的美国 25 个薪酬最高专业毕业生首个 5 年平均年收入统计中,计算机科学专业同样也是名列榜首。

当然跟学习任何一门科学一样,学习编程不是一件特别容易的事情。特别是少儿编程,学习哪些内容以及怎样学习是一个非常重要的问题。要避开国内很多急功近利培训机构的陷阱及误导,你首先需要对编程做一个大致的了解。

2. 编程需要学习哪些内容

我们学习语言是为了跟人交流,而学习编程则是为了跟计算机交流。计算机能够理解的语言就是编程语言(programming language), Javascript、Python就对应不同的编程语言。通过使用计算机能够理解的编程语言向计算机发出一系列的指令,并精确地定义在不同情况下所应当采取的行动,从而完成某个特定的任务,这个过程就是编程。

万丈高楼平地起,不管是成人还是少儿,就像学习任何一门别的科学一样,学习编程也需要从了解一些基本的概念及原理开始。

  • 变量,条件判断,循环,函数

下面的视频以一个 「Grace Hopper 女士拍虫子」(Grace Hopper 女士是计算机历史上的一位传奇女性,发现了世界上第一个程序 BUG,设计了世界上第一个编译程序,主导开发了第一个商用编程语言,被称为 程序员之母」)的视频游戏为例,很好的解释了编程里的一些基础概念:变量,条件判断,循环以及函数。

编程基础讲解视频:变量,条件判断,循环,函数

通过观看视频,你应该对编程的这几个概念有了初步的了解;但仅仅想通过这个视频弄明白视频里面的内容是比较困难的,因为视频的时长虽然只有 10 几分钟,覆盖的内容即便是高校学生也需要一个学期的编程课程学习。校外课对这里的每个概念都有更详细的视频讲解及编程练习,你可以通过下面列出的课程链接进入到相关的在线学习课程。

校外课关于「变量」的学习课程:https://studio.xiaowai.co/s/course4/stage/6/puzzle/1

校外课:关于「变量」知识点的编程教程

校外课关于「条件判断」的学习课程:
https://studio.xiaowai.co/s/course2/stage/13/puzzle/1

校外课:关于「条件判断」知识点的编程教程

校外课关于「循环」的学习课程:
https://studio.xiaowai.co/s/course2/stage/6/puzzle/1

校外课:关于「循环」知识点的编程教程

校外课关于「函数」的学习课程:
https://studio.xiaowai.co/s/course3/stage/5/puzzle/2

校外课:关于「函数」知识点的编程教程
  • 二进制,数据显示

二进制是计算机科学的关键基础,下面的视频从一个画图游戏开始,很好的解释什么是二进制以及如何用二进制进行编码,并通过相关的编程练习,加深概念的理解。

编程讲解视频:二进制及数据显示

校外课关于「二进制及数据显示」的学习课程:
https://studio.xiaowai.co/s/course3/stage/5/puzzle/2

校外课:关于「二进制及数据显示」的编程课程
  • 数据加密解密  - 凯撒加密算法

数据安全一直是计算机应用方面一项重要的工作,为了保护用户隐私及保证重要数据的安全,经常需要使用加密算法对数据进行加密。「数据加密解密  -  凯撒加密算法」的学习课程就是以古老的「凯撒加密」为例,通过视频讲解以及实际操作,学习并理解数据加密以及解密的原理。

校外课「数据加密解密  -  凯撒加密算法」的学习课程:
https://studio.xiaowai.co/s/hoc-encryption/stage/1/puzzle/1

校外课:关于「数据加密解密 - 凯撒加密算法」的编程课程
  • 数据压缩

把一系列已有信息通过一定方法处理,使得其长度缩短,并且信息含量基本或者完全不变,这个过程就是数据压缩。数据压缩在计算机里的应用非常广泛。校外课的数据压缩教程以压缩文本为例,找到重复文本的模式并执行替换,从而达到文本压缩的目的;并在相关的编程练习过程中,可以实时监控压缩比率,并根据压缩比率,随时调整文本替换模式,从而提高数据压缩的效率。

校外课「数据压缩」的学习课程:
http://studio.xiaowai.co/s/text-compression/stage/1/puzzle/1

数据压缩 - 进阶编程学习场景
校外课:关于「数据压缩」的编程课程
  • 互联网基本原理

我们每天都会使用互联网,但你是否想过,它是如何实现的?你看到的信息是如何传递到你这里的,而你发送的消息又是如何发送出去的?通过学习校外课的互联网模拟课程,可以更好的理解 IP 地址、路由、信息传输、信息编码等基本概念,为编程学习打下良好的基础。

互联网原理 - 信息传输、路由、IP地址、信息编码相关进阶编程课程场景
校外课:关于「互联网模拟」的编程课程

3. 怎样学习编程

计算机科学本身是一个非常复杂的学科,虽然计算机编程语言经过不断的发展与演变,易用性已经越来越好,专业的编程仍然跟任何一项别的专业技能一样,需要长时间的学习、训练与积累。一方面来讲,家长需要意识到学习编程对于任何一个年龄段的初学者都是有一定困难的,都要从基础开始进行学习,一些急功近利的做法(比如学习一周就可以开发出一个游戏)往往并不可取;而另一方面,家长可以考虑在有条件的前提下让孩子尽早的接触编程学习,因为只要这门科学足够有用,在保证科学的学习方法的前提下尽早接触是没有坏处的。编程跟数学或英语除了学科的不同并没有本质的区别。

在学习编程时,低年龄孩子选择图形化编程学习可以降低学习难度,这是目前已被广泛认可的做法。通常这种学习方式更偏重游戏性、趣味性,可以让孩子首先保持兴趣,然后在这基础上理解编程的基本概念并进行计算思维训练。

高年级(初高中)的编程初学者依然可以选择图形化编程学习,而并不一定要从 Python 、Javascript、C++或其他编程语言开始学习编程。图形化编程学习可以帮助任何年龄段的初学者(包括高校学生)更快速有效的完成编程的基础学习,这也是公认的。在完成一些编程基础学习的前提下,同时如果有更多的时间精力,可以选择某个编程语言如 Python、Javascript 或 C++,进行进阶学习。

不管是图形化编程,还是 Python 或 Javascript 语言本身的学习,家长应该清楚,编程语言只是个工具,而在计算机行业,编程语言更新换代的速度很快;同时这个工具一般又很复杂(即便是图形化编程工具 Scratch,也是非常复杂的),复杂到即便做的是同样功能的事情,很多专业的 Python 开发者根本不会使用 Javascript,Javascript 开发者也很可能对 Python 知之甚少,不同编程语言本身的复杂性足以隔离众多的专业开发者。你可以通过下面的图片更直观的看到,同样实现在屏幕上显示「Hello World!」这样一个最简单的功能,使用不同编程语言的差别有多大。

使用不同的编程语言,实现在屏幕上输出「Hello World!」的功能

这就像在上世纪八十年代我国很多地方的学生上课时会用到算盘,利用算盘学习数学还是培养一个熟练使用算盘的从业者,这里面的区别很大。跟算盘的道理一样,孩子今天使用的编程工具或编程语言,在他/她工作时大概率是会面目全非甚至消失的。而很多少儿编程培训机构很明显并不是在教孩子数学,而是在教孩子如何掌握算盘的操作技巧。这种舍本逐末的做法对孩子是有害的,一方面浪费了孩子大量的宝贵时间,另一方面过度机械化的训练会在一定程度上扼杀孩子最宝贵的创造力。

在校外课,所有课程的都是围绕计算机科学相关知识点进行设计的,所有课程都会通过课程设计及技术手段弱化或降低编程语言或编程工具本身的难度。比如同样是在图形化编程环境里编写一段最简单的「重复」功能的代码,在使用 Scratch 编程工具时是这样的:

在 Scratch 里学习「重复」功能

你可以看到学生需要从 Scratch 左边的 100 多个模块列表中找到需要的「重复执行」模块,然后再找下一个模块;同时每次都要面对这样那样的按钮及设置,虽然多数情况下它们都不会被用到。考虑到 Scratch 是一个功能很庞杂的编程工具(很多家长可能会有一个误解,觉得 Scratch 即便对孩子来说也是一个很简单的工具;而事实正好相反,即便对于高校学生或专业开发者来说它也是很复杂的),这无疑会增加孩子(特别是年龄较小孩子)的学习难度,以及增加完全没有必要的机械学习的成分。

而同样内容的编程学习在校外课是这样的:

在校外课相关课程里学习「重复」功能

每个课程关卡只显示知识点相关的编程模块,降低了因为编程工具或编程语言本身带来的没有必要的难度,并减少了大量机械化的操作。而涉及到更复杂的「循环」功能学习时:

在校外课相关课程里学习更复杂「重复」功能

编程模块相应调整,但仍然是只列出必要的模块内容。

在校外课,除了适合全年龄段学生(覆盖幼、小、初、高,4 - 18 岁少儿)的图形化编程课程,还有 Python、Javascript、HTML、CSS 以及 App 开发等针对稍高年级的编程进阶学习课程。所有课程设计都是以计算机科学概念及知识点为中心,尽量弱化工具或编程语言本身带来的难度,并通过大量文字提示、视频讲解、关卡设计引导以及大量有趣的编程场景,真正实现让孩子自主学习,并最终爱上编程。

了解更多少儿编程相关信息,请参考:
为什么要学习少儿编程,学习少儿编程有用吗,不做程序员有必要学习编程吗?
学习少儿编程选择什么编程语言重要吗?学习少儿编程的目的是什么?孩子有必要学习少儿编程吗?
家长如何帮助孩子选择少儿编程学习的编程语言或编程工具,如何选择少儿编程课程

了解更多少儿编程相关科普文章,请参考:
少儿编程之计算思维的新定义:计算思维是我们想要最小化的摩擦,除非它是生成的
少儿编程之编程思想介绍 ——  思想,作为一种技术
少儿编程之 Kill Math 项目介绍:让数学不只是符号
少儿编程之 Dynamicland 项目介绍:可视空间与设计工坊
少儿编程之二进制:计算机二进制的历史,二进制与十进制的转换及相关亲子互动游戏
少儿编程之随机数:计算机里的随机数,真随机数与伪随机数

了解更多校外课课程介绍,请参考:
新用户指南 - 校外课网站编程学习环境及少儿编程课程介绍
Adafruit 可穿戴编程开发主板 - 用户使用指南
离线学习少儿编程,一些不使用电脑也可以学习编程知识的亲子互动游戏

扫码下面二维码,关注我们的公众号,阅读最新文章或观看更多视频教程:

校外课少儿编程 公众号