亲,欢迎光临读趣网!
错缺断章、加书:站内短信
后台有人,会尽快回复!
  • 主题模式:

  • 字体大小:

    -

    18

    +
  • 恢复默认

乐乐编程竞赛拿第三名的消息,是在一个周三的晚饭桌上说出来的。

消息是苏婉带来的。她给乐乐夹菜的时候,对林晨说了一句:你们学校家长群有人发了竞赛名单,乐乐第三名。

乐乐埋头吃排骨,没有抬头。第三名不够好——第一名才值得在饭桌上说。

林晨看了乐乐一眼,没有在饭桌上展开这个话题。他只说了一句:吃完饭来书房。

乐乐扒了两口饭,把碗放下,跑进了书房。

书房的灯还亮着。林晨在电脑上跑完了今天的模型,ipad上的信号线已经收成了历史数据。他把ipad合上,示意乐乐坐在旁边的椅子上。

你的编程竞赛拿了第三名。林晨说。

乐乐坐在椅子上,脚够不到地面,两条腿悬在空中晃了一下。

你自己觉得怎么样?

不够好。递归没做出来,排序的高级算法也不熟。乐乐说。第三名说明我前面还有两个人比我厉害。

林晨看着乐乐。十岁的孩子说前面还有两个人比我厉害的时候,语气平静。这种冷静是在做题的过程中慢慢磨出来的——每一道做不出来的题都是一面镜子,照出你还不会的东西。

你说得对。林晨说。前面还有两个人。但你知道你跟他们差在哪里吗?

差在递归和数据结构。乐乐说。

对。递归是一种思维习惯,数据结构是一种工具储备。你现在有思维习惯,但工具储备不够。你的python语法没问题,但你在数据结构和算法上的训练不够。

那怎么办?

找老师。

乐乐抬头看林晨。找什么老师?

编程老师。数学老师。英语老师。

英语也要学?

英语必须学。林晨说。全世界最好的编程教材是英文的,最权威的算法竞赛是英文的,最前沿的AI论文是英文的。你以后要学更深的编程,英文是基础。你现在的英语成绩是中等偏上,不够。

乐乐想了一下。那我要上三个补习班?

不是补习班。林晨说。找最好的老师,一对一地学。

林晨第二天就开始找老师了。

编程老师的人选来得最快。他本身就是做编程出身的,圈内认识的人够多。他在微信上发了三条消息,分别给了三个人——赵刚、训练营里的一个前学员叫刘明、还有一个在深圳做少儿编程教育的创业者叫王涛。

赵刚回了消息:你要给乐乐找编程老师?你自己教不就行了?

林晨回了一条:我能教他语法和算法,但教不了竞赛思维。竞赛思维是练出来的。我需要一个人带着他刷题,帮他在遇到瓶颈的时候推一把。

赵刚想了想,推荐了一个人——清华计算机系毕业的,现在在深圳一家科技公司做算法工程师,叫陈远。陈远参加过Acm国际大学生程序设计竞赛,拿过亚太区银牌,竞赛经验丰富。赵刚说他以前在训练营听过林晨的课,对林晨很尊重,应该愿意接这个活。

林晨给陈远打了一个电话。电话响了三声就接了,说明对方没有在开会。

陈远你好,我是林晨。赵刚推荐的你。

林老师!陈远的声音明显比刚才高了半个调。我知道您!我以前在您的训练营学过AI入门课程!

嗯,赵刚跟我说了。林晨说。我有一个事想跟你聊。我儿子今年十岁,四年级,学python两个月,拿了市编程竞赛第三名。我想找一个老师带他继续学,重点放在数据结构和算法上。你有兴趣吗?

电话那头沉默了两秒。林老师的儿子?十岁?python两个月就拿了第三名?

对。但他递归和数据结构不行,决赛最后一道题没做出来。

我理解。陈远说。递归是很多初学者的门槛。十岁的孩子能到这个水平已经很好了,但不能停在语法层面。下一步应该是系统学习数据结构和基础算法——链表、栈、队列、树、排序、搜索、递归、动态规划入门。这些是竞赛的基础,也是以后做AI和工程的基础。

你说的这些我同意。林晨说。但我有一个要求——不要教他刷题技巧,教他思维方法。刷题技巧是为了竞赛拿名次,思维方法是为了以后做任何事都能用。竞赛只是手段。

我理解。陈远说。我会从原理出发,让他理解每一个数据结构为什么是这样设计的,每一个算法为什么是这样工作的。理解了原理,题自然就会做了。

两人约了周六下午见面。林晨让陈远来家里,他想看看陈远跟乐乐的互动。

数学老师是苏婉找的。

苏婉的方法跟林晨不一样。林晨是找人推荐,苏婉是上网查资料。她在家长论坛上翻了三天帖子,看了二十多个数学思维训练班的评价,最后锁定了一个叫思维工坊的机构。

思维工坊的创始人叫孙莉,以前是深圳外国语学校的数学老师,教了十五年书,后来辞职出来做数学思维教育。她的理念跟林晨不谋而合——教思维方法,不教解题技巧;教怎么拆问题,不教怎么猜答案。

苏婉带乐乐去试了一次课。孙莉给乐乐出了三道题,难度递增。第一道是简单的逻辑推理,乐乐两分钟做完了。第二道是数列找规律,乐乐想了五分钟,用排除法找到了答案。第三道是一道开放性的问题——如果一个池塘里的荷花每天翻一倍,30天长满池塘,那长到一半是第几天?乐乐想了两分钟,说:第29天。

孙莉看了一下乐乐。你怎么算的?

每天翻一倍,所以前一天就是一半。30天长满,前一天就是29天。

孙莉点了一下头。她在笔记本上写了几个字,然后对苏婉说:这个孩子的逻辑思维不错,但数学基础还可以再扎实。他的直觉很好,但推理的过程有时候跳步骤。需要训练他把直觉变成严密的推导。

苏婉把孙莉的评价转述给林晨。林晨听完说了一句:跟我们数学老师说他的一样——解题快但跳步骤。

那就对了。苏婉说。跳步骤说明他脑子快但手不够稳。孙老师的方法是让他把每一步推导都写出来,不能跳。写出来才能检查,检查才能发现错误。

行。约了什么时间?

每周六上午九点到十一点。

跟编程课不冲突?

不冲突。编程课约的是周六下午两点到三点半。

林晨点了一下头。周六上午数学,下午编程,中间有两个半小时的空档。这个节奏可以。

英语老师费了些周折。

林晨的要求比较特殊。他不要那种教语法和阅读理解的应试英语老师,他要找一个教用英语学东西的老师。乐乐学英语是为了以后能看懂英文编程教材和AI论文,考试分数是次要的。

他在一个教育社群里发了需求,三天后收到了一个回复。回复的人叫张琳,在美国读了两年计算机硕士,回国后在一家外企做技术翻译,同时兼做少儿英语一对一教学。她的特点是用项目制教学——带着学生用英语做一个项目,在项目过程中自然学会英语。

林晨约了张琳在一家咖啡馆见面。张琳三十出头,戴一副银色边框的眼镜,穿一件深蓝色的卫衣,背一个双肩包,看起来像刚从大学校园里出来的研究生。

你的需求我理解了。张琳看了一眼林晨发来的消息。应用英语,不是应试。孩子学编程,需要看英文教材和英文文档,需要用英语搜索编程问题的答案。

林晨说。他现在看英文编程教程的时候,很多技术术语看不懂。我需要一个老师带他用英语学编程,在学编程的过程中自然学会英语。

这个方法叫cLIL——content and Language Integrated Learning,内容与语言整合学习。张琳说。用语言学内容。比如我会带他看一段英文的python教程,教程里有编程术语,编程术语在上下文中自然被理解,不需要单独背单词。

林晨说。但有一个前提——不能让他觉得是在学英语。十岁的孩子不喜欢被安排,他喜欢自己选择。你要让他觉得他就是在学编程。

张琳笑了一下。我教过的孩子都以为我是在教编程。他们用英语看完一段教程之后,做完了一个项目,开心得不行。他们不知道自己在这个过程中学会了几十个英文单词和三四个语法结构。

什么时候能开始?

下周三晚上七点到八点半。每周一次,每次一个半小时。

三个老师的课,加上乐乐正常的学校课程和作业,时间安排是这样的:

周一到周五:正常上学 + 课后作业。 周六上午九点到十一点:数学思维课,孙莉老师,一对一。 周六下午两点到三点半:编程课,陈远老师,一对一。 周三晚上七点到八点半:英语项目课,张琳老师,一对一。

林晨把这个时间安排写在一张A4纸上,贴在乐乐书桌旁边的墙上。纸的最上面写着一行字:

学习安排(试行)

试行两个字是苏婉加的。她看到这张纸的时候,指了指两个字,对林晨说:先试一个月。如果乐乐觉得太累或者不喜欢,我们再调整。

不会太累。林晨说。数学课一周一次,编程课一周一次,英语课一周一次。加起来一周三个半小时。他现在每天放学后在ipad上玩的时间都不止三个半小时。

我担心的是压力。苏婉说。三个老师,三套课,三套作业。他十岁。

我知道他十岁。林晨说。但我也知道他喜欢这些。数学课是练思维,编程课是练逻辑,英语课是练工具。三样加在一起是三把钥匙。

苏婉没有再说话。她看了一眼乐乐的房间,房门半开着,乐乐坐在书桌前,正在ipad上做一道编程题。他的背微微弓着,手指在屏幕上划来划去,嘴里念念有词,像在跟代码吵架。

他做编程题的时候专注吗?林晨问。

专注。苏婉说。能坐一个半小时不动。

那就对了。林晨说。一个十岁的孩子能坐一个半小时专注做一件事,说明他是自己想做的。三个老师在帮他把他想做的事做得更好。

苏婉想了一下,点了点头。她拿起笔,在A4纸的旁边加了一行小字:

如果乐乐说不想学了,就停下来。

第一节课是周六上午的数学课。

孙莉老师准时在九点到了。她带了一个帆布包,里面装着一叠A4纸和一盒彩色笔。A4纸上印的是她设计的数学思维题,从简单到困难,分五个等级。

乐乐坐在书桌前,看着那叠纸,表情有点紧张。

别紧张。孙莉把第一张纸递给他。我们今天不做难题。先做一道简单的。

第一道题是一个图形推理题——给出三个图形,找出规律,画出第四个图形。乐乐看了一眼,拿起笔就画了。三十秒画完。

你怎么想的?孙莉问。

第一个图形旋转九十度是第二个,第二个旋转九十度是第三个,第三个旋转九十度就是第四个。

孙莉点了一下头。她把第二张纸递过来。这道题比第一道难——换成了数列推理。给出一个数列:1, 4, 9, 16, 25, ?,问下一个数是什么。

乐乐看了一眼。三十六。

怎么算的?

这些数是1的平方、2的平方、3的平方、4的平方、5的平方。下一个就是6的平方,三十六。

孙莉在笔记本上写了一行字:直觉好,但推导过程需要规范。

接下来的一个小时,孙莉带着乐乐做了八道题。每一道题做完之后,她都会让乐乐把推导过程完整地写出来——不能跳步骤,不能只写答案,每一步都要有理有据。

乐乐一开始有点不适应。他习惯于在脑子里跳两步然后直接写答案,但孙莉要求他把跳过的步骤补回来。

你的答案是错的吗?孙莉问。

不是。乐乐说。答案是对的。

答案是对的,但过程是不完整的。孙莉说。考试的时候你跳步骤,老师可能不扣分。但思考的时候你跳步骤,你就在跳过理解。理解靠的是过程——你能算出答案是三十六,但你能解释为什么是三十六吗?

因为三十六是六的平方。

为什么六的平方是三十六?

因为六乘以六等于三十六。

为什么这个数列是平方数?

乐乐想了一下。因为第一个数是一,等于一的平方。第二个数是四,等于二的平方。第三个数是九,等于三的平方。规律是第n个数等于n的平方。

孙莉说。你看,你刚才说这些数是平方数的时候,你心里是知道为什么的。但你说出来的只有结论,没有过程。把你心里知道的事情说出来,就是推导。

乐乐点了一下头。他在第二道题的旁边写了一行字:

规律:第n个数 = n2

数学课结束之后,乐乐走出书房,到客厅喝水。苏婉在厨房里做饭,从厨房门口探出头来。

怎么样?

还行。乐乐说。老师让我把每一步都写出来,不能跳。

你觉得呢?

有点烦。乐乐喝了一口水。但好像也没那么烦。因为我心里知道为什么,只是懒得写。现在写了之后,确实清楚一些。

苏婉笑了一下,没有再问。

周六下午两点的编程课。

陈远准时到了。他比照片上看起来年轻一些,二十六七岁的样子,穿了一件黑色的t恤,上面印着一段代码——是python的hello world程序。

乐乐看到他t恤上的代码,笑了一下。

你也穿代码衣服。乐乐说。

程序员都这样。陈远笑了一下。他在书桌对面坐下,从背包里拿出一台笔记本电脑。今天我们先聊一聊,不上课。你跟我说说你学编程的过程,从最开始到现在。

乐乐用了十分钟讲完了自己学编程的经历——从Scratch到python,从小猫跑来跑去到编程竞赛第三名。陈远听的时候在笔记本上记了几笔,偶尔点一下头。

你最后一道递归题没做出来。陈远说。

乐乐说。递归我写到第三层就搞不清楚了。

你知道递归的本质是什么吗?

乐乐想了想。就是一个函数调用自己?

对,但不完整。陈远说。递归的本质是归纳。你把一个大问题拆成一个相同但更小的问题,然后反复拆,直到拆到一个你已知答案的最小问题。你做数学的时候学过归纳法吗?

乐乐摇头。

没关系。陈远在纸上写了一个例子。假设你要算5的阶乘。5的阶乘等于5乘以4的阶乘。4的阶乘等于4乘以3的阶乘。3的阶乘等于3乘以2的阶乘。2的阶乘等于2乘以1的阶乘。1的阶乘等于1。这就是递归——每一步都依赖于前一步,直到遇到一个已知答案。

乐乐看着纸上的例子,眼睛动了几下。他在脑子里把每一步都过了一遍。

所以递归就是一层一层往前推,推到最前面那层就知道了?他说。

陈远说。你在做栈的练习题的时候,左括号进栈、右括号出栈,最后看栈是不是空的。栈的思想和递归的思想是相通的——都是后进先出。你做了栈的题,理解了后进先出,递归就只是一步之遥。

乐乐的眼睛亮了一下。原来栈和递归是通的!

陈远笑了。对。这就是我说的——理解原理比记住函数重要。你理解了栈,你就理解了递归。你理解了递归,你就理解了树。你理解了树,你就理解了图。数据结构是一棵知识树,根是数组,干是链表和栈,枝是树和图。你从根往上爬,每一步都是相通的。

他在纸上画了一棵树,每个节点写着一个数据结构。数组在最下面,链表在左枝,栈在右枝,再往上是树和图。

乐乐看着这棵树,沉默了五秒。

我以前觉得数据结构很难。他说。看了你这个图,原来它们是一棵树。

陈远说。数据结构是一棵树。算法是爬树的方法。你学会了一种爬法,就能爬到更高的节点。

周三晚上的英语课。

张琳准时到了。她带了一个ipad,上面打开了一个英文网站——Khan Academy的编程教程。

今天我们做一个项目。张琳说。这个项目是英文的,但我不教你英文。我教你怎么用英文完成这个项目。

乐乐看着ipad上的英文界面,眉头皱了一下。

这些单词有些我不认识。他说。

没关系。张琳说。你不认识的时候,先看上下文。上下文能帮你猜出百分之六十的单词意思。猜不出来的,再来问我。

乐乐点了一下头。他开始看第一段英文教程。教程讲的是如何用JavaScript画一个圆。乐乐看了一会儿,指着一个单词问:draw是什么意思?

你猜。张琳说。

乐乐看了看上下文——draw a circle on the canvas。前面是canvas,后面是circle。circle是圆,canvas是画布,那draw就是把圆放到画布上。

乐乐说。draw a circle就是在画布上画一个圆。

张琳说。

乐乐继续看。他看了十分钟,看完了整段教程。教程里有十五个英文单词他不认识,但他通过上下文猜出了十二个,剩下三个问了张琳。

张琳在笔记本上记了这三个单词:radius(半径)、coordinate(坐标)、property(属性)。

这三个词是编程里的常用词。张琳说。你今天在上下文里学到了它们,不需要背。下次再看到的时候,你会想起来。

乐乐点了一下头。他按照教程的步骤,在编辑器里写了一段代码。代码运行之后,屏幕上出现了一个蓝色的圆。

他看着那个圆,笑了一下。

我刚才用英语写了一个圆。他说。

张琳也笑了。你不仅写了圆,你还学了十五个英文单词。

乐乐想了一下。但我没觉得我在学英语。

那就对了。张琳说。

一个月后,苏婉在A4纸上旁边的那行小字旁边,加了一行:

试行通过。继续。

乐乐的时间表没有变——周六上午数学,下午编程,周三晚上英语。但他每天放学后做作业的时间从五点半到六点变成了五点半到五点五十。作业没变少,他做得更快了——数学课练了思维之后,解题速度提高了;英语课学了技术词汇之后,看英文编程教程的速度也提高了。

林晨每个月给三个老师的课加起来是一万二。数学四千,编程四千,英语四千。加上乐乐学校的学费、课外书的钱和偶尔的竞赛报名费,每个月花在乐乐教育上的钱大概在一万五左右。

一万五一个月,一年十八万。这笔钱对林晨不构成压力。投资账户每月收益三十万以上,餐饮分红每月四十八万,版税每月两三万。乐乐的教育投入在他总收入的占比不到百分之二。

但林晨算的账不一样。他算的是时间。三个老师,三套课,三套作业,乐乐每周花在学习上的额外时间是四个半小时。这四个半小时在主动思考、主动解决问题、主动学习。

有一天晚上,林晨路过乐乐的房间,看到他坐在书桌前,面前摊着数学思维题。题目是孙莉出的——一个关于逻辑推理的题目,乐乐写了一半,卡住了。他没有叫林晨帮忙,而是把题目重新读了一遍,在纸上画了一个表格,把条件一个一个填进去,然后看表格推导答案。

他花了十五分钟,推导出来了。

林晨站在门口看了十五分钟,没有进去打扰。

他回到书房,在乐乐的编程学习记录里加了一行:

2027年1月 教育投入正式启动 数学:孙莉老师,一对一,练思维,不跳步骤 编程:陈远老师,一对一,练算法,理解原理 英语:张琳老师,一对一,项目制,用英语学编程

三个月后看效果。

他合上笔记本,关了灯。窗外的深圳夜景在黑暗中亮着,像一张铺开的地图,每一盏灯是一个故事。

乐乐的故事才刚开始。