我是如何成为一名少儿编程竞赛老师的

一、起缘

2017年9月,我以前一个同事问我能不能教他小孩Theo学习编程,因为以前在同一家公司时,我那同事经常带Theo去公司,我和Theo也认识,所以我答应了。

二、编程语言

那个时候Theo 8岁,英语很棒,口语和老外差不多;数学也还可以。我认为可以直接教他C语言。于是从C语言开始。

C语言学了两个月之后,基础就打下来了。Theo学得很好,多数知识都能很好地领会,当然我的教程也写得极为详细--对于8岁的小朋友,你不得不写得详细。

当时也碰到了不少困难,最困难的一次无疑是递归,递归是程序独有的思维,数学里面没有,跟日常生活的思维差别也很大。当时用的是汉诺塔的例子,我和Theo从晚9点开始学,一直学到12点多,学了三个多小时,Theo才搞懂递归的思维。后来Theo将递归掌握得炉火纯青后,数次感叹到:递归如此简单,当时我为何学了三个多小时,学到12点多才学明白呢?

C语言学完之后,自然是学C++。因为C++就是在C的基础上设计的,基本语法基本上是一样的,但是二者还是有根本的区别。把一些基本的知识点,比如继承、封装、多态、私有、保护、公有、构造函数、析构函数、this指针、内联函数、引用、模板、标准库讲完之后,就结束了。

考虑到Java长期霸占着全球编程语言排行榜的头把交椅。C++教完之后,就教Theo学习Java。

图(1) TIOBE 2018年9月编程语言排行榜.png

Java语言比C/C++简单。Theo有了C和C++的基础之后,学习Java自然就比较快。

关于主流编程语言的难度排行,我认为是这样的:

Assembly > C > C++ > Java ≈ Objective-C > PHP > Python

再接下来是学Python语言。计算机(信息学)会进入高考科目已是一个趋势,目前一些试点省份比如浙江、天津等,计算机课程使用的编程语言就是Python。Python语言比Java更简单,教完了Python语法之后,再教他编程实现计算器。计算器很简单,教Theo编写计算器主要是为了让他理解软件的开发过程。

图(2) 简易计算器.png

这四门编程语言学完之后,就不需要再学语言了。因为编程语言有成百上千种,没必要也没时间全部都学。把这四种最主流的语言学熟悉,以后即使碰见没见过的语言,两三个礼拜也可以学会。

按原本的计划,接下来想教他编写一些简单的游戏,比如扫雷、贪食蛇、俄罗斯方块,再教他做一个他的个人网站。

三、数据结构

后来我想数据结构更加重要。数据结构比较难,多少科班的大学生挂了数据结构。所以就决定暂时不教Theo编小游戏,先学数据结构。

起初我不确定能否教明白,毕竟一来数据结构较难,二来他才9岁(这个时候已经是2018年的春天了),只能是抱着尝试的心态。

之前的四门语言的教材,我都是自己编写的。数据结构我用的是比较适合入门的《大话数据结构》。考虑到《大话数据结构》虽然写的很清晰,但是小朋友不一定看得懂,我自己也写了一部分教程,主要是对《大话数据结构》进行进一步细化和补充。

让我惊喜的是,Theo能听得懂。

四、信息学奥赛

数据结构学了一小部分后,时间已经到了2018年4月底。我那同事提起是不是可以考虑让Theo走信息学奥林匹克竞赛的道路。

说来惭愧,我是那时才知道NOIP(全国青少年信息学奥林匹克联赛)和NOI(全国青少年信息学奥林匹克竞赛),具体请参考:https://www.jianshu.com/p/04bf0fa1b920

于是开始制定计划:

(1)数据结构一定要学好

(2)要做OJ题

(3)要做NOIP真题

当然,如果最初就规划好要走信息学奥赛的路,那么之前学的内容其实是过多了。Java可以先不用学,Python可以先不用学,计算器可以先不用做。这些可以等以后有时间了慢慢学。

但是没办法。人生,注定是一场不断走弯路的旅程。

到了这个国庆节,NOIP初赛已经迫在眉捷了。

数据结构学习的容包括了《大话数据结构》中的90%的内容:算法时间复杂度和空间复杂度、链表、栈、队列、字符串、二叉树、图、哈希表、8种排序方法、五种查找方法。暂时还没讲到的内容有:KMP、赫夫曼树、最短路径、拓补排序、平衡二叉树、多路查找树。这些内容NOIP不考,等NOIP竞赛结束后会继续教。

OJ题则做了181道,这个量其实太少了,至少要上千题的量才会有比较好的效果。

图(3) 做题记录.png

NOIP真题亦只能做几套,没把全部的真题做完也很遗憾。

五、辞职

我本人,大学毕业后一直做的是计算机方面的研发和管理工作,至今十余载。最初做iOS开发,后来做数据库,做Java后台,管理方面则当过技术经理、技术总监、副总裁和CTO。

今年主要是从事人工智能方面的研发。

信息学奥赛和人工智能都是算法方面的内容。但是两者既有很大的区别又有联系。信息学奥赛是考基础算法,而人工智能则是应用领域的算法。基础算法如果比较强,对人工智能算法或其他任何领域的算法都会有很大的帮助。

先前我一边上班一边带Theo小朋友学编程语言,感觉还是很轻松的。但是后来开始带小朋友学信息学奥赛的内容,加上上班研发人工智能,相当于是做了两份需要深度研究的工作,让我苦不堪言。

到了2018年9月初,我决定辞掉工作,暂停对人工智能的研究,先专心带小朋友学习信奥,。

以我目前的算法积累,教小朋友学习NOIP普及组的内容感觉绰绰有余。但是后面还有NOIP提高组、NOI、IOI(国际信息学奥林匹克竞赛),最终的目标是希望小朋友能拿到IOI金牌。所以我自己也要经常参加在线算法比赛以不断提升自己的算法水平

至于人工智能算法,也是一个有趣且有用的方向,但只能等我在NOI方面的能力提高了之后才能继续研究,这估计至少是一年之后的事情了。

六、最后

是的,你没有看错,我走上辅导小朋友参加信息学奥林匹克竞赛这条路,不是当初职业规划的结果,而是偶然的结果。

这跟因特网的产生一样,因特网当初也不是精心规划的结果,而是偶然的结果(这是某年NOIP的考题哈)。

原文发布于微信公众号 - KidsCode少儿编程(gh_de7b45c40e8b)

原文发表时间:2018-10-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏calmound

匈牙利算法

今天学习了下匈牙利算法,发现这个早在几个月前学过的知识已经忘记的一干二净了,记得当初学习的时候只是看书,看论文,现在要好好的总结下,防止以后再次忘记。 此次总结...

48170
来自专栏青青天空树

挖掘机技术哪家强(c++实现)

描述:为了用事实说明挖掘机技术到底哪家强,组织一场挖掘机技能大赛。现请你根据比赛结果统计出技术最强的那个学校。

9310
来自专栏青青天空树

生理周期(c++实现)

描述:人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23 天、 28 天和33 天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面...

10620
来自专栏java达人

或许,这会是全民皆知的一门编程语言

不久前,国务院印发了《新一代人工智能发展规划》,其中明确指出,要实施全民智能教育项目,在中小学阶段设置人工智能相关课程,逐步推广编程教育,鼓励社会力量参与寓教于...

21580
来自专栏tkokof 的技术,小趣及杂念

“快排”笔记

  关于排序,我想没有多少程序员会感觉陌生,信手拈来的可能就有不少:冒泡、选择或者归并等等;可在实际开发中,排序又让许多程序员感到很不熟悉,因为在大多数情况下,...

8930
来自专栏C语言及其他语言

[每日一题]DNA

又到了今天C语言在线学习平台推送每日一题的时间了,今天分享的题目可能有点难,但我还是希望大家能够理解,这样以后遇到这样的问题也就不会害怕了 题目描述 小强从小...

29730
来自专栏写代码的海盗

来自朝鲜的问候 golang入坑系列

鸿渐于陆 本想着写满十八式,但按照目前的进度来看,是很难凑够十八式了。所以还是那句话,量力而行,适可而止。能写多少就写多少,我没法保证看完这本golang脱口秀...

32850
来自专栏闰土大叔

太原面经分享:如何用js实现返回斐波那契数列的第n个值的函数

值此高考来临之际,闲不住的我又双叒叕出发去面试攒经验了,去了公司交待一番流程后,面试官甩给了我一张A4纸,上面写着一道js算法笔试题(一开始我并不知道这是在考察...

12230
来自专栏java一日一条

程序员才看得明白的面试圣经

除了直接申请面试以外,一般说来,还有两种途径来获得面试的机会:由现在的雇主推荐,或者通过LinkedIn。虽然前者会快一些、更尊敬一些,但后者很可能是大部分应聘...

11610
来自专栏北京马哥教育

7个案例15分钟让你了解Python套路!

古人云:书山有路勤为径 学海无涯苦作舟 。 注:一般标榜着 “ XX天学会XX”、“ XX 分钟了解XX”的文章都不会是让你增长功力的文章,如本文。 随着互联...

38960

扫码关注云+社区

领取腾讯云代金券