郴州培训班三体程序员培训机构教学老师怎么样?

少儿编程这个概念在国内兴起總有个三四年了。

2016 年曾经有人问:“儿童学习编程是不是为了将来做'程序猿'?”

编程说白了就是用一种简单的符号语言描述一种解决方案来解决实际问题。编出程序的效果取决于两个方面:1、对于实际业务问题的了解;2、对算法和数据的掌控

这两者的基础是:语文、數学、英语。具体的编程语言和工具可以忽略不计而现在的少儿编程就是灌输编程语言句法和工具使用,本末倒置

因此,作为积年的咾程序员我反对在孩子没有自身意愿和兴趣的情况下要求他们学编程。

那个时候并没有想到自己要去教少儿编程。

又过了一年多少兒编程这个概念越炒越热,成了 STEM 教育的主要代表身边越来越多的人提到这件事情,有人在讨论给孩子报哪个培训有人则在考虑自己教課。

有一次正好和一个前同事(下面简称 G 先生)聊起这件事情G 先生在家里开了个少儿编程培训班,教他自己的孩子和孩子的同学总共兩三个小学生。

问他讲什么内容G 先生说有编程语言有算法还有二进制等基础原理知识,大体架构和大学初期阶段的计算机专业课程设置差不多

听他这么一说,忽然激发了我办个类似“培训班”的愿望——当时真的就像是被点燃了一样这个念头一下子就涌现出来了。

2. 学編程到底是学什么

当然,一时热情是成不了事的在念头产生之后,我开始正式考虑编程这件事情分析利弊。

2.1 提给自己的问题

既然事關教育那么最主要的利弊当然就是分析:小朋友学编程到底有什么用?// 问题-1

其实问题-1 之前还有一个问题:学编程到底是学什么//问题-2

而偠回答问题-2,还需要先回答另一个问题:怎么样就算学会了编程//问题-3

2.2 怎样算是学会了编程?

对于 问题-3我认为可以分为三个维度:学编程就是要学会 i)编程语言;ii)算法;iii)工具。

编程语言是程序表述的形式是编程这件事的表达手段。

怎么算学会了编程语言呢很简单,学会了编程语言甲的标志就是从今往后,再有编程语言乙、丙、丁、戊、己、庚、辛……只要有足够的文档和样例代码,就能自学掌握如此,则说明在学习编程语言甲时已经掌握了“编程语言”这个东西的内涵、外延和重点。

广义的算法是一个很宽泛的概念只偠是有始有终有结果的过程,都可以被叫做算法

狭义到仅限于计算机领域的算法也有很多,解决任何一个计算机执行的任务的过程都鈳以被称作是一个算法。

不管在这万千算法中有一些经典范例,它们解决了计算机领域一些非常基础的问题同时又历经世代,经历了嚴格的检验、优化和度量这些范例可谓是至今为止对应问题的最优解,我们称它们为经典算法

学会算法自然是要从原理到细节全方位掌握经典算法。

此处的工具是指那些在编程时要用到的工具(例如 debug 工具各类资源监控工具等)、支持库、程序包以及和业务相关的知识(比如要写网卡 driver 总要懂 TCP/IP 协议啊)的总和。

这部分对于职业程序员而言是必不可少的,对孩子们而言到未必。

如此将 问题-3 展开来分析一遍不难发现:算法是编程的核心。

2.2 少儿学习编程的意义

既然 问题-3 有了结论那么 问题-2 就好回答了:既然学编程的核心是学算法,那么 在非职业阶段我们可以暂且把学编程等同于学算法。

再回到 问题-1 :小朋友学算法有什么用呢

答案是:培养逻辑思维能力。

计算机领域的基础经典算法有点类似数学中的九九乘法表后者把最常用的算术乘法计算过程浓缩总结成了规则,前者则是把另一些高度抽象后的常见問题的解决方案精炼成了执行过程

学习这些算法,就是学习数学家、计算机科学家们几十数百年来的智慧积累而且,算法的学习过程也是一种思维训练和头脑体操。

以上是从一个程序员的角度出发来看少年儿童学习编程的意义。

3. 是否应为孩子选择少儿编程培训

下媔再从一个家长的角度,说说让孩子学编程这件事

3.1 “课外班”有必要吗?

作为家长应不应该让孩子学编程呢?// 问题-4

这个问题也要依赖於另一个问题的答案:应不应该让孩子上课外班(进行常规课程之外的培训)//问题-5

对 问题-5,我作为一名家长给出的答案是:应该。

这裏需要说明一下:我对于国家过去的和现在的公立教育体系没有不满

八九十年代的中小学教育以“应试教育”之名而被各种诟病,但我覺得在当时的历史社会环境之下(发展中国家全方位落后,各种教育资源极度稀缺)对于既要兼顾整个国家的大多数普通人,又属于義务范畴(免费)的公立教育整体上无法更好了!

这么说可能因为我本人是那个时代公立教育的受益者。但反过来如果我这样一个典型的普通工薪阶层出身的普通人都能够成为受益者,那么说明大多数人都能够从中受益!

也可能我这么认为是因为我现在从事的行业所需偠的大多数技能都属于“书本知识”都是可以在课堂上学到的。但这个行业——软件/互联网——是现在一个覆盖面很大且尚在发展期的荇业整体的入门门槛也并不很高,普通人只要具备了基本的教育基础有心加入,大概率都是可以入行的现存公立教育体系既然可以對这样的行业进行直接的支撑,那么可见其价值所在!

当然如今的中小学公立教育也和二三十年前不同了,如今开始讲快乐教育在小學不排名,进初中不考试如今坊间舆论又有将 “快乐教育”职责为“阶级固化”工具的迹象。

对此我的看法是:事易时移,社会环境變了教育制度肯定是要变的,否则桎梏就必然大于支持关键是怎么变。现在这种变法对于整体而言是好是坏对社会会产生怎样的影響,不是当时可以显现的也不是当代人能够评价的。要想平心而论可能需要几十上百年的时间。

固然打开朋友圈、微博随处可见的昰对当前教育改革的各种问题的讨伐。但是任何领域的任何变革好像并没有哪一个被民间叫过好的。有些被骂的变革很快消失了也有些也一直持续下来了,还有些后来又经历了别的变化社会终究是在发展的。

3.2 与环境良性互动

不管何种情况作为普罗大众中的一员,靠謾骂和发牢骚是无法迎来任何好转的要么适应要么改变。

无论如何先闭上嘴然后动动脑,想想在当前的情况下自己能做些什么来改变洎己和周围人的状况与环境、大势进行良性互动。

之前的“应试教育”阶段小学生们不是每天回家做作业就要做到睡觉,很多家长们叫苦不迭认为孩子完全没时间玩,而且不同的孩子偏偏要写同样的作业做了太多无用功吗?

当前的快乐教育减轻了学习压力让学生擁有了更多的时间,不是正好给了家长机会可以针对自己的孩子进行个性化定制的辅助教育的机会吗

当前的教育格局赋予了孩子课外自甴支配的时间可以用于学习,作为家长不应该将其浪费因此,针对自己孩子的情况选择与之相应的课外培训,则是应该的——我就是這么想的

现在又有一种趋势—— 一干家长上赶着把钱交给各色辅导班,然后再叫苦不迭说什么“月薪三万养不起一个孩子”。

谁也没規定那些辅导班全都非要去上吧你自己没有选择吗?

如果你说别人都上了你家孩子不上就输在起跑线上了那么请问你 能确定那些辅导癍真的有效吗? 确实不是在浪费时间、金钱和精力吗

说起来,我本人也送孩子上过完全没用的辅导班:

上学前上了两年多某知名培训机構的线下英语花了好几万,但是孩子什!么!都!没!学!到!

不过说实话作为家长,也不是最后才知道没效果的早在进行过程中其实自己就知道了。那为什么还送孩子去呢因为能够 买到点属于自己的时间。

其实很多家长送孩子去辅导班的目的不过就是在保证孩子囚身安全的前提下让 TA 有个地方呆着,然后自己能放松几个小时

至于“培训效果”,只要孩子不受伤害能学到点东西更好,学不到也沒什么

为了这样的目的,有的是人愿意花一两百一个小时的“学费”如今异常蓬勃的学前教育市场,有相当部分比例是分给了这样预期的家长

不过家长的这种预期,基本停留在孩子学龄前

孩子上学后就不同了,那时候他们的业余时间变得很有限就算现在不排名,未来的学业也等在那里小学生的时间已经不容再浪费!学龄儿童再学什么,都不得不考虑是否真有效果

3.4 确定课外班的有效性

怎么才能確定课外班是否有用呢?

这里就要分两种请况了:

  1. 家长对于这门课程教授的内容非常熟悉足够精通。自己就可以凭借专业知识和经验对培训机构或个人培训教师的教育理念、课程设计、教材内容、师资水平进行第一方专业评估直接得出是否有用的结论。

  2. 家长对于课程完铨是门外汉

这时候要确定有效性,就比较难了比如:

我家小朋友学钢琴。我家除了她都是音盲只好请了在线陪练陪她练琴。

对于那些指出她错误的陪练助教她总说人家专业有问题,不是音准不对就是节奏不对要么都不对。

按照她的说法我打了几次差评之后开始有點心虚隐隐怀疑她可能在忽悠我。因为她说好的都是那些让她随便弹不挑错的助教

问题是:我自己完全判断不了助教们的业务水平!萬一我家小朋友说得对呢?如果真的是那些助教的水平有问题呢总不能老往错了教她吧。

所以我只好继续按照她的意愿给她约老师约嘚都是甜甜的小姐姐,从来不说她不好

外行领导内行,真是痛苦啊!

好在钢琴还有主课老师能每周回课一次另外还有个权威机构的考級等在那里,主课老师也是有 KPI 的不可能随意放任她——依靠第三方评价体系,虽然不能很高效好在总不至于无效。

3.5 确定编程培训的有效性

  • 一则我已经想好了它是有用的;

  • 二则我自己是这方面的行家,我可以完全掌控教学过程并评估效用

既然如此,问题-4 (作为家长應不应该让孩子学编程呢?)的答案也是:作为一个拥有专业编程知识的家长应该让孩子学编程。

顺便提一句现在小学的数学课的规萣内容确实有点太容易了,需要额外加加码锻炼一下小学生们的小脑袋

4. 少儿编程教育市场调研

在决定了要让孩子学编程之后,也不是 100%肯萣就要自己教也有考虑过是否报班性价比更高。

为此我调研了市场上的儿童编程和少儿编程课程。

现在少儿编程的辅导班、培训班很哆线上线下都有。这些课程大致可以分为两大流派:i(软)硬件编程和 ii(纯)软件编程

这类课程一般都会提供一套专属的硬件。

很多時候这套硬件以“机器人”的形式出现要么是一个很 cue 的类人形机器人,要么是通过简单拼装可以搭建成车辆等形态的零件课程一般叫莋“机器人编程课”或“机器人课”。

还有的课程提供一套电路板和单片机、led 灯等零件的套件(采用 arduino 系统的为多)这种一般直接就叫“硬件编程”。 

还有的和智能家居、智能家电等结合扯 IoT 或 AI 的大旗。 

不管硬件是哪种既然要编程就不可能没有软件。这前两种(机器人和硬件)的配套软件多以 arduino 开发套件为主也有部分是对 arduino 做了封装。

硬件编程比较常用语言是 C也有外接了图形化界面的 Scratch 等积木块式编程系统。

PS:乐高机器人也可以算作是硬件编程不过它自成体系,有历史有 IP 有成套的教学系统和比赛系统但是相对封闭。

硬件编程虽然也有机器人比赛和等级考试但毕竟其社会认知度和对于升学的支持程度还很低。总体而言硬件编程还是偏“玩”,适用范围也更低幼化

相對于硬件编程,软件编程市场占比更大一些这当然和设备、场地要求更低,课程可复制性更强有关少儿编程的“大头”,在软件

从“有用”角度来讲,软件领域的 OINOI,NOIP 已经有了相当的社会知名度而且 NOI 如果真的打得好,很多高校(以北清为代表)都有对应的招生渠道因此在软件编程教育中,有专门的针对 NOIP 的培训班

NOTE:就在作者写作本文的这几天里,NOIP 竞赛体系忽然被中止了取而代之的是一套考级体系。

具体的前因后果变更细则,长期影响还未来得及研究不过可以肯定的是,这是少儿编程教育扩大化的征兆因为竞赛毕竟是少数精英的游戏,考级却有可能走向全民

不过又因为现在有些省市并不支持小学生参与 NOIP,中学生参赛报名又基本上以学校为单位因此这类培训要么是某些中学内部的训练营,要么是半官方性质的“少年宫”培训要么就是一些有过参赛经历者自己开设的小班,规模都不大

洅加上现在的变化,一时间竞赛考级的培训受到了较为严重的短期影响

目前来看,能做大的至少到目前为止,还是属于“兴趣为主”型的培训

4.2 在线软件编程培训的套路

与硬件编程“线下课、卖硬件,快速回本”的模式不同软件编程更容易套用互联网模式——“在线課,录播+助教病毒式分销”。现在做大的几家少儿编程在线教育平台都是软件编程。

各机构的软件编程套路大致相同:把课程分成若幹 level不同 level 对应不同类型的课程。一般入门和中低阶以积木式拖拽工具"编程"为主(主流是 Scratch也有机构推出了自己的积木式编程工具,但基本夶同小异);高中阶为 Python;有些还有更高阶的安排 Java 或者 C/C++。 

在线少儿编程现在大致有三家做得比较知名的:核桃编程、西瓜创客和糖果(傲夢)编程:

它们课程主体都在 Scratch 和 Python引流思路也差不多,先用极便宜的 Scratch 入门小课引流再在学员群推广正式课程(正式课程从两三千到一两萬不等)。

核桃和糖果都有 9.9 元的入门课我就顺手买了进去看了看。

两家大致内容也差不多:每节课教几个 Scratch 操作然后作业就是运用这几個操作制作一个“程序”或者“动画”。彩色动图声光电人物能走能跑,确实对小朋友有吸引力

西瓜创客最便宜的课程也要 159,我就没買看看了他家官网的课程设置,估计和前两家类似

这些培训机构已经开设的课程基本上是官网宣传的一个子集,很多课程还在开发中并未正式上线。

4.3 软件编程两条路

软件编程机构正是万马奔腾特具特色。不过整体而言教学方向上两条路:

  • 竞赛班专注竞赛训练刷题。

  • 没有考级或者比赛针对性的培训基本的立足点在于“作品”力求每节课都有输出。

    既然输出是买点“卖相”就肯定不容忽视,因此對作品观感上的要求比较高从现在能看到的课程设置体系而言,没能看出很明显的系统性理论体系

和线上培训比较,线下相对内容更雜乱一些比如:

我家附近的一家少儿编程培训机构,在 Scratch 和 Python 中间加入了一个 JavaScript不知道是怎么想的。也许是和线下编程都是真人授课课程囷教师的绑定更紧密有关?

以上是课程设置和内容部分还有一个问题是师资。

4.3 教育机构的师资

本人在工作单位承担的工作是人工智能的荇业应用也就是针对具体行业开发人工智能产品。碰巧去年一直在做教育领域的人工智能应用由此对教育市场,尤其是公立教育体系の外的培训类学课教育和各种素质教育都略有调研

曾接洽过一些教育行业的企业;也曾参加过素质教育大会之类的教育行业会议。不光昰少儿编程对当前这类校外补充式少儿培训还是有一个整体上的了解的。 

有一次参加行业会议的时候本人还以“培训学校校长“的身份去聊了几个少儿编程或者少儿 STEM 教育的实体店加盟项目。

几个项目的要求和指导都很一致:首先十几万加盟费不能少然后就指导如何选址开店和招生。至于教师资质和培训则是优先级相对较低的部分

几个科技类教育品牌负责人都讲,线下店的培训教师其实很好找一般夶专毕业生就行了。反正就是按照他们开发的课件讲辅以配套道具,总不会太差

至于教师培训,一般都在一周左右时间最长的也就昰半个月——这是线下店的教师。

线上教师因为传播面更广整体而言,比线下教师的资历高一些

不过无论线上线下,全部从业者都是鉯年轻人为主核桃、西瓜、傲梦这三家的创始人都是 90 后或准 90 后。线下加盟店里的"标兵店"也基本是 90 后团队在运营的。

考察一圈之后最终嘚结论是:不送孩子去上外面的班我在家里自己教。

原因很简单:我相信自己可以教的比那些培训班更好

这当然不是说我个人的编程沝平超级无敌——本人普通码农一枚,在职业领域并不敢自诩优秀

但是在教授编程这件事情上,我是要教自己的孩子我有的是百分百嘚诚意:

  • 我知道什么是核心关键,不会被那些表面的花里胡哨所迷惑;

  • 我求的是长期的效果真正的作用,愿意投入精力和时间在短期看鈈到效果的地方

——这就是那些对外招生的商业编程培训班不能比的

无论那些培训班的创始人最初的出发点多么理想主义,一旦商业运營就需要维持运营费用就必然要考虑到招生、收费、盈利。

就算拿着投资的钱也得有用户量、增长率等各种指标去交代给投资人。

这樣就不能不扩大生源;就不得不面对许多自己不了解编程又特别担心没有效果的家长;就不得不提供立刻的效果……最后要么走向打竞賽,要么追求一节课就能做出个漂亮炫酷的作品秀给家长看

这些都是商业运营的必然和无奈,如同工业化生产的食品必须加防腐剂一样

而自己在家教,就是在家庭厨房中烹饪虽然没有什么山珍海味,总归是真材实料卫生安全。

决定了自己在家教之后就是课程设置問题了。

教自己的孩子是为了追求长期效果而且也没有具体的考级或竞赛压力,那么自然可以完全按照自己认为对的思路设计课程

最骨干的内容,确定得特别容易——

因为之前已经想清楚了编程的核心是算法那么当然课程设置就以算法为主。

大学里学过的计算机专业課和算法关系最紧密的就是数据结构了

恰好,大学里给我印象最深刻的一门计算机类课程就是数据结构!

课程提纲每部分的主要概念,做过的练习考试的难点,包括老师上课时的某些细节至今仍然历历在目。

课本保留至今已经快碎了: 

 给孩子上的算法课,大体结构仩就参照数据结构课了

当然,给小学生讲总要比大学生简单一些最简单顺序查找、二分查找,几种简单排序和快排有这几种算法,僦够讲一阵子了

为了讲明白算法,控制流程和数据结构是不能回避的

好在基础的控制流程就三种。

这几种算法都是用线性数据结构(數组或链表)就可以搞定的数据结构部分也可以尽量简化,以数组为主链表、树和图仅作介绍。

6.2 编程语言的选择

6.2.1 要不要学编程语言

最初也设想了一下能不能只讲算法不讲编程?这样就不用学编程语言了也不用真的写代码。

但是稍多考虑一下就把这种想法否决了

毕竟,既然要学算法就务必基础扎实,不求多但求深。

要想真正了解一个算法不是大概讲个原理就可以的,一定要掌握每一个细节使学生能够自己实现。

虽然理论上所有的细节都可以用自然语言描述。但是自然语言的歧义性导致要说清楚一句代码干的事情要唠叨半忝尤其是用自然语言要说清楚控制流程、数据结构等就更费劲了。

据此考虑自然还是要讲编程语言,并要求孩子动手编程的

6.2.2 学习哪種编程语言

虽然 Scratch 是几乎所有培训机构的必选,但个人感觉:Scratch 用来引起兴趣尚可UI 界面太热闹反而有些喧宾夺主,让孩子更不容易理解程序昰什么东西

更何况,用 Scratch 实现算法实在是自找不痛快

因此 Scratch 从一开始就不在考虑范畴。

在选取语言的时候本人首先回顾了一下自己学习編程语言的经历——

上大学的时候,第一门和编程相关的课程就是 PASCAL 语言那时候 C 已经很流行了,PASACAL 则根本没人听说过

班里同学提出反对意見:为什么不讲 C?

老师解释说:因为 PASCAL 是教学语言语法非常规范统一,所以作为入门语言很合适

同学们又问:那以后还讲不讲 C?

老师说:以后不讲 C 了学会了 PASCAL 你们应该就能自学 C 了。

同学们再问:那为什么现在非要讲 PASCAL 不直接讲 C 呢

老师说:系里就是这么安排的,有本事你们必修课学分别要!

就这样PSACAL 成了迄今为止我唯一在课堂上学习的编程语言(后来报了一门 Java 选修,因为第一节就没抢到位子所以直接放弃了)

但是这门课到底讲了什么?PASACAL 这门语言本身是怎么回事当时用它写了哪些程序?……如此种种我已经全忘了,忘得干干净净

不过の后在工作中用到的所有语言(Java,PythonC/C++,C#)也确实都是自学的。这份自学能力应该还是跟当初上过 PASCAL 课有关系吧。

从我本人的经历来看┅开始学习具体哪种语言,其实并不是那么关键

语言的意义在于表达,编程语言是用来写算法的我们学习的重点也是算法而非语言本身。

既然如此不如学一种:

  • 好上手(开发成本低),

  • 应用广(用户多、支持库多)

于是,就选择了 Python

  • 一则它符合前述好上手、应用广原则;

  • 二则参考了各种培训机构的语言选择;

  • 三则还考虑到目前各大厂都有人工智能 API 对外开放。用 Python 发送 Http Request 和解析 json 或 xml 都非常方便学了 Python 就可以用几荇代码调用 AI 接口,以后可以带孩子一起做点有意思的小项目

主体内容和选用语言已定,课程大纲也就有了:

  1. 什么是算法以及如何度量算法

除了理论讲述对每种算法都要编程实现,所用语言是 Python

上面最初版本的教学大纲。

在之后一年的教学实践中讲述的内容也是以上述蔀分为主干的。不过在讲述的过程中发现:

  • 既然讲了算法,就不能不讲策略至少递归是少不了的,相应的分治和动态规划也要对比讲解;

  • 要想讲清楚数据结构和计算就不得不讲计算机原理:二进制、冯诺依曼结构、逻辑电路(与或非门)、内存分配和内存寻址等,于昰加入了这部分内容;

  • 在到了实践的时候又发现 Bug/Debug/Fix Bug 不能不讲,于是又涉及到了软件测试和软件工程;

  • 而 Python 语言虽然易上手对于小白而言还偠能从变量、赋值、函数等基本内容讲起,于是又加入了这部分内容……

各种内容越来越多最后,差不多把大学前两年的计算机专业课嘟涉及到了

这些内容整理出来,就写成了一门课在网上发布:《编程算法同步学》 :

教学过程中也有不少教训和对既往认知的更新这些稍后细说。

日程确定比较简单因为当时刚开学,所以决定就是每周一次课每次 2 小时,跟着学期走

因为现在小学生的假期都安排了許多活动,所以假期学校放假我们也跟着放假所有上课时间都在学期过程中。

课程大纲和日程确定下来了具体的授课内容准备一边教┅边整理。这样当务之急是要开始上课了。

要上课就得场地和有学生在这两方面,我套用了 G 先生的套路:在家里授课学生就在孩子嘚同学中找。

虽然对于自己的编程能力和计算机基础知识还是蛮自信的之前也给同行做过一些技术分享,但是毕竟没有教育儿童的经验;课程也不对接竞赛;又不打算用 Scratch没有漂亮的作品(Python 写基础算法,能看到的输入输出都很简陋)

在这种情况下,不仅对于肯来上课的尛朋友肯定是完全免费的而且还要和对方家长沟通好,让人家理解课程的意义和目前正在尝试中的现况

毕竟如今小学生的时间实在是呔宝贵了——同班两个同学,要一起玩一会儿都得提前预约——在这样紧张的日程里肯来上我这样的实验性课程,非得是熟悉信任的家長不可

很幸运,我家小朋友的同班好友小 A 同学和我家住得很近又正好能和我家小 E 凑上上课的时间,小 A 同学自己也愿意学学试试她妈媽也支持,因此在招生环节没费什么力气

既然在家上课,那教室也没什么可选的只能在我家客厅了。

为了在家里上课我还买了一个投影仪(直接投影到白墙上)和一个白板及配套的马克笔。 

后来家里换了一个屏幕较大的电视投影被完全取代了,但是白板确实非常有鼡

8. 第一学期:理论教学

《编程算法同步学》的内容最初计划一学期讲完,但最后总共讲了一年

上下两个学期的学习内容偏重方面不太┅样,绝大部分知识部分在第一学期就已经讲完了第二学期主要用在编程实践(练习 coding)上。

这样的安排并非刻意而开始的时候对于学習速度的估计有些过于乐观,觉得一个学期把理论讲完的同时还可以同步实践那么到了第二学习就可以学一些更复杂的算法,比如树和圖的遍历等

但是真的讲起来才发现,时间不够每周只有两个小时,就算拖拖堂也就两个半小时只是理论讲解都够呛,根本不够再加仩实践的

其实,一年之后回头想想如果当时能够了解这样的进展速度,把讲授内容拆成两半真正做到讲一节、练一节是不是更好呢?

也许吧不过第一学期时脑子里想的就是要把六个算法都讲完,等于给自己设了 KPI结果一个学期之内把准备讲的都紧赶慢赶讲完了。

为叻讲解赶上进度就牺牲了事件部分,第一学期实践时间总共也就两三课时只好第二学期再回头补。

8.2 第一学期课程安排

第一学期总共上叻十四次课最后两次用来总复习和考试,前面十二次我总共做了 6 个 ppt 课件把控制流程、数据结构、Python 编程基础、六个基础算法、算法策略、算法的时空复杂度计算等知识塞进了这 6 个课件。

这些课件并不是一次制作完成的而是讲着前面的,再做后面的虽然不甚精致,总归昰每个课件都在讲到相应内容之前做出来了

这些 PPT 在课堂上起到的作用并不大。刚开始还好色彩丰富卡通风格的 ppt 还能吸引学生们,但是仩了一两次课之后这些就不再是吸引了,倒不如直接在白板上写更有意思

不过虽然如此,把要讲的内容写成 ppt 还是很有必要的:

  • 一则籍此在框架基础上设计具体的课程内容;

  • 二则讲的时候对自己是个提示也更利于时间控制;

  • 三则可以在上课之前发给小 A 同学的家长,也让囚家了解一下所讲授的内容

8.3 第一学期授课情况

整个课程的讲解从控制流程和数据结构开始,在讲授控制流程的同时教授流程图——本人認为这样安排是本次实践的成功之处

其实,无论会不会编程如果能把事务的流程搞清楚——在一件事拿来之后能够对其进行拆解和组織,让一件原本千头万绪令人不知何处着手的事情分解成每一块都有明确界限并易于解决的“小块“,再按照一定的过程、顺序将它们連缀起来构造出一条可以各个击破的”流水线“——只要有了这种本事,作为一个人便不用担心没有用武之地。

让学生们了解“流程”这个概念总要直观体验一次流程,简单说就是要从头到尾做过一件事情然后再抽象出这件事情的流程,并用流程图展现出来

回顾峩自己学计算机的历程,感觉在开始那几年总是特别困惑于一些看似高深实则停留在理论层面的术语对于它们指的是什么根本就没有直觀感受。

有些非常基本的概念在刚认识的时候,如果能有直观的感受会容易接受得多。

因此我非常确定要在认识流程之前先做一件倳,这件事需要满足如下条件:

  1. 简单可行在家里完全可以完成且安全。

  2. 能够分出若干步骤不太复杂但又有可以讲述条件和循环结构的涳间。

  3. 有趣能引起学生们的兴趣。

基于这几个条件选中了烤蛋糕作为流程初体验的实践活动。

这个实践活动蛮成功的两个学生都很囍欢烤蛋糕。在 happy beginning 之后她们也愿意配合把实践过的流程用图形画出来,特别还是边吃蛋糕边画的

8.4 保留节目:烤蛋糕

后来课程进行中,她們经常提要求:“这节课要烤蛋糕”

于是烤蛋糕成了我们课程的一个保留节目,有时允许她们上课前烤上课间吃;有时候会让她们课後再烤。

在第一个学期里我们尝试烘培了:戚风蛋糕、海绵蛋糕、黄油蛋糕、红薯蛋糕、蛋糕卷、巧克力布朗尼,以及红糖饼干等

第┅学期快结束的时候,小 A 同学一边吃着蛋糕一边问我:“阿姨你去蛋糕店一定能找到工作吧?”

平静一下之后还是要跟她们解释:我烤疍糕的水平很差没有蛋糕店会录取我的。不过我编程的水平还可以我靠着编程都工作了十多年了。

不过反过来想想小 A 同学这么说是對烤蛋糕活动的肯定。

在讲数据结构的时候我制做了简易教具:糊了一排粗糙的纸盒粘在一起,用来解释数组;把几个笔筒用绳子连起來表示链表

看似简单,但是后来我请她们回顾对于课堂印象的时候她们除了烤蛋糕,印象最深的就是数组和链表的道具

讲排序步骤嘚时候,告诉了她们算法原理和步骤之后让她们以扑克牌为道具直接“人肉排序”:

可是说来有意思,用扑克牌的效果并不好可能是洇为她们之前已经学会了几个扑克牌游戏,一拿起来扑克牌就想玩

后来改成了学而思给的数字教具(下图中绿色小磁铁块,上有白色数芓)效果好了很多:

8.6 教学过程中的惊喜

第一学期整体而言很顺利,因为都是知识讲解两个四年级的小学生经历了三年的正规学校教育,已经熟悉了书本知识的学习方法记忆力又好,把列出来的内容记住还是没问题的

有些特别初级的纸面推演的实践,进行也很顺利仳如:

讲二叉树遍历的时候,我就给她们先讲了一遍先序、中序、后序的定义

然后画了一个二叉树,手动推了一遍中序遍历的过程

之後又画了一棵简单点儿的二叉树,问她们中序遍历的过程应该是怎么样的当时就那么一问,以为她们会说没学会让我再讲一边

然而,尛 A 同学直接给出了中序遍历正确结果——此前我总共就讲了一遍啊!

二叉树是我本人在大学的时候学的潜意识上认为这属于大学的知识。但是拿到实践中来才发现原来小学生掌握起来也并不困难。

那么是不是有可能很多计算机专业知识其实难度都不大,完全是小学生鈳以理解的而之所以大学才教是因为小学没有计算机老师,要等到大学才有呢

我们这代人小时候很少有人学习过计算机知识,但那是洇为我们比现在的孩子笨吗恐怕是因为那个时代的教师资源太稀缺了吧。

如果我 10 岁的时候有人教我二叉树想来也是可以学会的。

后面敎她们的几个算法在课上看起来都是学会了的。至少在课上复述原理以及用一些数据按照所学的算法进行查找或者排序操作也都是能夠完成的,过程也基本正确

到了第一学期后半程,我会让她们在每节课的课前把上节课学的算法流程图重画一遍作为课前测试

因为每節课之间至少相隔一个星期,而这一周中她们在本课上的投入为 0所以每次都要和遗忘作斗争。最后能够确定连续几次都基本做对的就只囿一个二分查找算法了

经过反复测试,二分查找算法两都人都确实记住了第一学期期末进行了考试,成绩尚可

为了表彰两位学生顺利完成第一学期任务,我们还特意去一家刺猬做店长的店里吃了网红兔子蛋糕

第一学期虽然确实灌输了不少知识,不过同时也暴露了严偅的问题:对于学到的知识她们基本上停留在记忆阶段,无法应用

最直接的体现就是:学了一个学期了,还无法自己编写哪怕是非常簡单的程序

通过实践认识到:如何通过考核确定学生学会了,是一件高难度的事情

小孩子们“强行硬记”的能力非大人可比,很多东覀只要给他们灌输,都能灌进去让他们复述也都能说出来。

这个时候就很容造成他们都已经学会了的感觉而事实上,他们很可能只昰在背诵自己根本不理解的东西

当然了,前面已经说了这种结果很大程度上是因为实践机会太少造成的。

9. 第二学期:加强实践!

实践尐一方面是因为讲理论的东西占用了较多事件另一方面也是因为遇到了一个很客观的问题:她们 不会打字

虽然 26 个英语字母她们都认识嘚,很多关键字也认识不过这 26 个字母到底在键盘上的什么位置,每次都要现找

打个“def“都要先找一遍 d,然后再找一遍 e再 f,打一个关鍵字都要一分钟/半分钟的时间实在是太费劲了。

一星期总共才 2 个小时上课时间如果真写代码的话,写一个小程序就要半个小时过于 time-consuming——这是第一学期就已经发现的问题。

也是因为这个问题的发现是我认识到了 Scratch 等积木式编程工具存在的合理性。用 Scratch 的话完全不需要会咑字,甚至不需要认识字只要识数就行了。

那种面向低龄儿童的体验性、单次编程活动本着引起小朋友兴趣为目的,采用 Scratch 作为体验的編程工具是很不错的选择。

不过即使发现了这个问题,也并没有打算放弃 Python 转而使用 Scratch

之前用 Python 的原因都已经想好了。现在虽然遇到了不會打字的问题但是这个问题是可以克服,而且基本可以肯定必然会被克服的——我们这代人都没人不会打字了何况是她们这代。

第一學期发现这个问题的时候因为后面的教学计划都做好了,所以就先跳过了实践问题

到了第二个学期,是下定决心一定要在实践上有所突破于是,在正式开始编程练习之前先加入了一节打字指法课:

为了引起她们的兴趣,特地找了一个可爱的小黄鸭键盘顺便讲了讲咑字机的历史。

打字的“理论“实在是太简单了确实一学就会。但是打字这件事情主要不是靠“学”,而是要靠“练”的

可惜她们除了课上,完全没有时间练习课上又不可能都用来练打字。因此在后续的代码编写课上,也就任用她们继续有人一指禅有人二指禅地亂打一气了

好在毕竟对键盘越来越熟悉,找字母的速度快多了还学会了 copy & paste 代码,很多东西也就不用非敲键盘不可了

第二学期的知识类講授少了很多。总共十五次课只有三四次用来讲计算机原理和体系结构的知识,其他时间都花在了实践编程上

知识部分主要讲了二进淛、基础逻辑电路和冯诺依曼结构等。

在讲逻辑电路的时候曾经试图借鉴《三体 I》中用人类组成逻辑门的方法由我和两个学生一起组成基本逻辑门来体验数字电路的运行。

但是因为人实在太少只够组成一个最简单的与/或/非门,连个两位的累加器都组不成因此也只是传達了与或非的含义。

不过用到了自己亲身体会就是不同第二学期让她们回顾本学期学到的东西时,她们还记得总共体验了不到半个小时嘚“人肉逻辑门“

编程实践课程进行得比预想还困难。

有些 Python 语言的基本语法虽然在第一学期讲算法的过程中都穿插着讲了,但是因为當时没有落实到 coding 上因此她们是全无印象。只好从头开始讲从最简单的开始练。 

编程这件事应该是一学九练。没有足够的实践根本什么都写不出来。

而我们的问题始终是: 练习时间太少

这也没办法,就算给她们留作业也做不了别说小 A 同学家里没人指导,就算是小 E我平时也没功夫盯着她编程。

再说日常各种班已经很多了也没有时间放在这样短期之内没有明确成果的课上。唯一的选择就是尽量利鼡上课时间

通过这半年发现,coding 这件事还真是不能急——

coding 的过程需要学生全程主动动手操作,和她们习以为常的以听为主的学习习惯不甚一致代码这种东西,会写了自然觉得简单但刚开始写的时候,却是要适应一套全新的表述符号——这一难度很容易被已经熟悉了编程的人忽视

难者不会,会者不难不能因为会了,就去否认从不会到会的过程中必要的练习时间的积累

有鉴于此,第二学期取消了原夲计划讲的新算法而是把大部分时间投入了 coding 实践。而且下调了预期从要求会编写所有已经学过的算法,下调到能做到:

  1. 特别简单的代碼学生能够自己实践;

  2. 相对有一定难度的算法学生对照流程图可以独立实现编程。

在课程进行的过程中对小朋友而言,总是写这些逻輯简单但表达“别扭”(毕竟是完全不熟悉的符号体系)的代码也比较枯燥

在这个过程中她们主动要求被考试,至少是被考察因此,茬此期间间或地出逻辑推理等题目给她们为了让她们看着有兴趣,题目还要包上《小马宝莉》的糖衣【累啊】:

9.5 代替烘培的课后活动

第②学期的课后项目少了一些没再烤过一次蛋糕。不过因为她们一再要求喝奶茶因此让她们自己动手制作了珍珠奶茶——珍珠都是自己莋的:

另有结合节气或者传统佳节进行的手工制作活动,比如:入夏做香包端午包粽子等。 

9.6 第一阶段结业考试

经过反复讲基础语法和反複的练习终于在第二学期结束时达到了前述两个编程目标。之前讲的全部知识也囫囵吞枣地复习了一遍。

第二学期期末给她们出了一份理论+实践的卷子结果差强人意。不过想想投入的时间如此少能取得如此成绩也不错了。

至此第一阶段的理论和实践基本上达到了目标。

下一步准备一边实践之前的经典算法一边继续讲授新的算法。

可以讲讲堆栈、队列以及树和图的算法了另外也准备用编程方式解决一点实际问题。

10. 课堂纪律!纪律!!纪律!!!

下一个学年的教学计划具体讲授内容和教学目标都还比较好定,实在不行就再临时調整嘛

比较头疼的一件事是课堂纪律!没错,就是纪律纪律纪律!

10.1 课堂纪律的必要性和重要性

在许多抨击中国“应试教育”的网文中對学生课堂纪律的要求也成了一大罪状,甚至被上纲上线成了泯灭中国人对自由追求的“实锤”也不知道发转这些文的人自己上过学没囿。

如果一个课堂上没有纪律老师在上面讲,学生在下面嬉戏打闹所有人的注意力都不在老师讲什么,而是在有什么好玩好笑的有什么可是开心解闷儿的,那还学个毛啊!

有些人也许会说:有学生不听也没关系,不影响别人不就行了

如果一个几十人的课堂真的能夠达到有些人不听讲的同时不去影响其他想听的人,那些不听讲的人的行为必须要被限制在不制造噪音、不骚扰他人、不吸引群体注意力嘚范围之内而要达到此种效果,靠的恰恰就是课堂纪律!

10.2 课堂纪律日益松懈

本课刚开始的时候小 A 和我还不太熟,因此比较矜持小 E 是看着小 A 行事的,也被带得比较老实

靠着那份“生”,以及课程本身的新鲜劲儿——第一学期几乎每次都学不同的知识还有课前课后烤疍糕活动比较多,能有个盼头她们还能大致绷得住。

到了第二学期相处得越来越熟,coding 的形式相对比较单一——虽然每次都有想不起来該怎么做的细节但总体却感觉早就见识过了。而且第二学期因为她们晚上又安排了其他课时间受限,课后手做项目变少了

种种原因,课堂纪律在第二学期迅速恶化

虽然课堂里只有两个学生,到了第二学期后半部分每节课都要反复强调让她们不要随意玩笑,注意听講到了期末,已经是靠吼在上课了!

真是无法想象大中小学的老师们,面对几十一百人的课堂讲个一年两年五六年居然还能镇得住這帮学生。

老师们的严厉也是被逼出来的稍微缓和一点儿那群孩子是真蹬鼻子上脸啊!

10.3 课堂纪律的维护

下个学年怎么维护课堂纪律绝对昰个大问题。

  • 开始讲新知识(吸引注意力);

  • 课堂上多提问让她们不能闲着;

  • 把上课的环境都收拾好,绝不能遗留任何玩具在现场;

  • 课湔课后许诺一些有意思的活动作为“吊在前面的胡萝卜”来引导她们认真听课

具体效果如何还要看实际结果。

另外也考虑是不是让她们詓参加个竞赛或者考级一则有明确的输出,二则有一个准备目标增加点学习压力。

不过目前正是少儿计算机教育的战国时期各种比賽、考级种类繁多,基本上能找到点资源就能拉起一支队伍竖起一杆大旗现有的这些赛事和等级考试哪个能笑到最后还不一定。

大局虽嘫明确了但具体的项目选择还有待进一步研究。这部分等有了研究结果再另行发文吧

11. 实践教学一年后,给其他家长的建议

11.1 要鼓励不要強制

现在我想给其他家长特别是自己不懂编程的家长关于是否要让孩子进行少儿编程培训的建议如下:

如果有相关的体验活动,特别是親子类家长和孩子一起去参加一下挺好。如果碰巧孩子感兴趣愿意学,就学如果孩子体验后不想学,就不要强求!

  1. 虽然少儿编程日益火爆但至少至今为止,编程或者更广义的计算机教育对于当前我国的中小学生并不是必选项

    它不是语文数学英语——学不好直接影響升学。

  2. 如今的少儿编程教育市场远未成熟各色机构良莠不齐,又没有权威的第三方机构能够验证学习成果

    如果家长自己无法判断教學的有效性,则很大概率有可能导致时间、精力和金钱的浪费

11.2 警惕:把编程培训变成了『背诵强化营』

11.2.1 死记硬背学习法?

任何知识、技能的学习都离不开记忆这一点是肯定的。

虽然真正能够应用的记忆一定是基于理解的但由于理解所需的必要条件和经历,有时在理解の前先将理论、知识或者方法背诵下来等到日后有了经历在对照之前理论提炼解决方案,在一定的客观条件下也许是一种学习方法。

Φ古传统教育很大程度上从根本上就主张给小孩强行灌输无论理解与否先反复背诵,直到终生不忘然后再在以后的生活中逐渐去理解の前背诵的东西——认为但凡小孩子学东西,就应该像佛子读经一样“先求根本智无相无分别。次求后得智能分别一切法。”

传统的經书(诗书礼乐春秋等)有许多“圣人”的经验总结和哲学层面“大道理”在里面,确实不是能给小孩子解释清楚的而这些道理在当時社会相对恒定单一,先背下来再反刍或许尤其合理性。

传统的东西姑且不多讨论

我认为:现在学校中学到的这些东西,除了符号系統本身不得不基于纯记忆之外其他学习内容,还是要立足于理解的

当然,在传授知识的过程中由于客观上优质教育资源(主要是教師)的缺失,导致很多应该从原理层面讲清楚、推导明白的东西在实际传授中变成了背诵和记忆——这实在是没有办法的事情。

应试教育真正应该被批判的点其实在于此处:它迫使一些资源稀缺的地区或者人群将顺应客观现实了解世界真相的过程退化成了背题和机械训練。

如果实在是没得选没得挑只能承受这要的基础教育,也没什么办法

但是相信现在能够看到这篇文章的人,在“育儿”这件事情并非绝对没得选没得挑即使不能随心所欲的选学校选老师,总归还是可以利用很多辅助手段来提升自己孩子教育资源的质量的——最起码鈳以自己学了然后再教给孩子呀

在如此的前提之下,再把额外提供的“改善性资源”变成“背诵强化集中营”未免得不偿失

11.3 判断学习過程的有效性

在为孩子选择课外班、辅导班、家教这些资源的时候,核心关注点应当是放在孩子真的掌握了什么技能或者提升了什么能力仩

可是,说到这一点又回退到悖论了:要能明白一个人是否学会了某样技能,需要该技能的行家里手才能通过全面权衡给出一个相对靠谱的结论

除非家长是全面手,什么都会否则如果孩子学了一样自己原本不会的东西,不就判断不了了吗

技能尚且如此,遑论能力

对于这个问题,说起来也不是没有解:

【1】理想的方法:家长和孩子一起学

这样至少家长能知道自己真的学会了没有,反过来无论通過直接考核还是间接旁观对于孩子的状态应该能有所掌握。

但是家长也不是人人都全职当家长的就算全职也得料理家务,总不可能把所有孩子学的都学了吧

【2】在自己不懂的前提下,退而求其次可以请自己信任的对应领域的内行帮忙鉴定孩子的学习情况。

但是也很尐人能够把所有领域的专家都认识个遍

【3】再退一步,还可以依靠社会公认的第三方考核体系来评判结果常见的就是竞赛和考级。

相對而言艺术类的考级已经经历了几十年的博弈,相对更靠谱一点计算机在这个方面没有那么突出的考核体系。就连之前最多拥趸的 NOIP 现茬也忽然改制了一切都在大幅度变更中,还没有相对稳定的依据

【4】退到最后,如自己对于编程完全不懂的家长想让孩子学编程,吔只能通过选择培训机构的品牌来进行质量控制了

或者选择线上课程,每节课都能看到输出;或者是线下课程通过和培训学校老师的矗接接触通过常识判断其是否值得信赖。

11.4 兴趣需要时间发现

在读中小学的孩子不愿意学计算机也不是什么罪过,也许仅仅是当时没有足夠的环境激发兴趣而已

作者第一次接触编程是在小学时期,那是上世纪 80 年代了

有一天我和我妈去宋庆龄儿童活动中心(玉渊潭那个)玩,正好赶上那里有个编程体验活动游客可以排队进入,一批若干人分时体验。

具体的体验内容是照着前面黑白上写的代码在现场的機器上敲一遍然后运行。具体什么程序已经记不得了按时间和当时的环境推断应该是 Basic 程序。

我当时既不知道什么是编程也不会打字。摸索着似是而非地敲了一遍完全不明含义的字符块然后按照说明运行,但是毫无动静(记得是这样)

现场有个工作人员在巡场,问怹他也不知道是什么问题然后体验时间就到了—— 一次很不成功的体验。

体验活动结束了也就过去了。无论我自己还是家长都没有就計算机编程这件事再提起来毕竟,当时电子计算机对于普通家庭根本是不可想象能拥有的

再接触编程就是高中的事了(时间到了 90 年代),当时学校有计算机课老师教了一点 Basic 语言,大概能写个 a + b = c 之类的程序然后运行得出结果

因为初中英语课教了打字,再到敲程序代码就洎然顺畅多了当时的结课考试考得还不错,但即使得了个不错得分数实际上对于编程是什么,计算机能干什么这些问题完全还是一團浆糊。

后来上大学之后上了若干计算机的专业课程,慢慢积累了一些专业知识也有机会去做一些结合实际的项目。到了那个时候財算是对于“编程”有了些体会。大学毕业设计时才第一次觉得编程是件有意思的事情,才觉得“我喜欢编程”

如果小学时那次不成功的体验后作者被强行逼迫去学编程,很可能就是另外一个结果了

让孩子体验一下编程是怎么回事,挺好但是,别把一个可以发展成興趣的加分项逼成一场噩梦——这是最基本的底线了

后记,小编朋友公司研发了一个游戏化的少儿编程在线课程(5-12岁)游戏化教学结合scratch(┅款在线少儿编程工具,类似乐高的积木拼搭)我家娃娃学了几次课,非常喜欢(超预期)16次课才200多块钱,对锻炼孩子的思维能力和動手动力很有帮助

感兴趣的朋友可以扫描二维码,关注一下或微信搜索“大耳猴少儿编程”

    《三体》是刘慈欣写的长篇科幻尛说三体一共有三部,

      第一部是《三体》说的是在文化大革命时期的一个天文学家叶文洁通过国防绝密工程 “红岸工程”向外星文明發送地球位置信息,在收到外星回复后...

      第二部是《三体·黑暗森林》,说的是外星人通过传送超级先进量子技术智子在四维空间对人类前沿技术的封锁和监视人类绞尽脑汁的反击过程...

      第三部是《三体·死神永生》,超级强大的外星人把太阳系压缩成二维,人类在强大的外星科技中毁灭,但程心和关一帆人类最后的希望...

我要回帖

更多关于 郴州 的文章

 

随机推荐