专栏首页大数据文摘儿童节 | 别只教小朋友编程,传授算法的智慧给他们同样重要

儿童节 | 别只教小朋友编程,传授算法的智慧给他们同样重要

大数据文摘作品,转载要求见文末

作者 | Ali Almossawi

编译 | 沈爱群,笪洁琼

编程和算法有什么不同?这样的问题对于从事相关工作的人都不一定能解释清楚,更何况还要解释给五岁小孩听并让他/她能听懂,这不是一件容易的事。然而算法可不仅仅只在互联网上可以用,生活中随处可见算法的机智。大人感受到了算法的强大,同时也能带给孩子不一样的体验。

编程是时下的热门,但是对于计算机科学来讲远不止只是编码。就比如说算法,算法在生活中像在互联网一样的有用。

两年前,当我女儿接受学前教育时,她了解到人们从事工作有不同种类。 她问我关于我的工作,我反复思考着,得到一个关于我如何做出一些人们不能真正触摸的东西,还有关于我写出的不是每个人都能读懂的东西(我编写电脑软件)。 不用说,这是一个令人失望的答案,而且我也知道她对这个答案感到失望。

我想得到一个更好的答案,所以我开始寻找有用的书籍、项目、游戏和玩具来在向年轻人介绍计算机科学。我开始意识到,我列表中的二十几个项目中,除了极少的几个项目,其他所有项目都集中在编程上,也就是说,他们强调程序流程的概念或者说是对特定编程语言的教学。我在旧金山的一所小学进行访问时发现,他们也只专注于编程和码代码。计算机科学和编程几乎总是混合在一起。

令人奇怪的,因为计算机科学中有一些更原始以及永恒的概念,如算法,算法是指由清晰的步骤组成并完成一些有用的事情的过程。我们通常把算法比做菜谱。

我个人更偏爱将算法类比作我们在日常生活中做出的决定。

如何整理一堆刚烘干的衣服,如何在杂货店的走道中穿梭,如何决定要听什么音乐。而且我喜欢算法就像日常生活中的做决定一样,因为它表明算法的涵义随处可见,而不仅仅是在计算中。

关于算法的另一个令人着迷的点是它们来自于历史。甚至古代的历史。公元前1800年至公元前1600年的巴比伦碑显示古代巴比伦人利用算法写下了一些程序来做决定,例如计算复利,或者是在给定高度和容积的情况下计算水池的宽度和长度。也就是说,他们的程序由一系列明确的步骤组成的:他们有输入,有输出,他们最终终止,并且它们是有用的。当你阅览几个世纪前的数学家的成果时,你会发现更多这样的例子。

我发现一个可以用但不限于单一学科的永恒概念的想法来向年轻人介绍计算机科学的机会,而不是用关注“流程”或“语法”(与编程相关的特质)的主意。而且我的做法和我强迫女儿吃健康食物的方式一样:“嘿,爸爸,这勺土豆泥味道像西兰花一样。”“我并不知道你在说什么,孩子”。

2006年,我在研究所的时候,一位教授进行了一次演讲(他的名字叫兰迪 · 鲍许,他演讲的内容随后被编成一本书叫做《最后的演讲》)。在那次演讲中,对我来说最生动的隐喻之一就是好的教学,在很大程度上就像一个足球中的障眼法。看上去你在向一个方向移动,但你实际上最终是向另一个方向移动。

所以,我开始整理日常生活中的12个场景来解释计算机科学中的基本算法。

但是,相比专注于明显的课程(算法),我将重点放在可以让这些算法引人注目的障眼法上。并且,障眼法就是比较。

比较是非常强大的。孩子们学习的第一件事情之一就是像大和小这样的抽象形容词,这就是为什么当一个孩子问:“自然历史博物馆里的无法龙(白垩纪一种两栖食草大恐龙)有多高”的时候,“十七英尺高,是个小型的无法龙”,这样的回答对孩子们来说是没有意义的,更有意义的听到,“如果苏珊女士,玛格丽特女士和贾斯查先生叠站在对方的肩膀上,贾斯查先生有可能会让无法龙的下巴发痒。”

上面所说的又与算法有什么联系? 这才是真正令人兴奋的部分。计算机科学家,和他们在数学,系统工程以及其他学科的朋友一样,一直对算法进行相互比较,以得到更好的算法。在决定哪一个更好的时候,他们通常会看到一到两个效率的质量:哪个算法耗费的时间较少就能完成,以及哪个算法仅需要更少的空间就能完成。

因此,有什么更好的方法来展示算法的概念,而不是从一个新的角度来解释它:不是解构它,展示它是如何工作的,而是通过让两种算法相互竞争,然后看哪一种算法能先把它排到终点线。

还有什么更好的方法让这些赛车算法熟悉,而不是把它们设定成12个故事中的一组人物必须做出的日常决定。

我喜欢这种方法的深度。

对这种方法的最终价值的考验是安排我与我现在五岁的女儿开会,记住,当你三岁的时候,你问我我以什么谋生?

我们经历了我脑海中的第一个故事,一个保姆面前堆着一堆袜子并且正在努力找出如何有效地对袜子进行配对的方法。我问我的女儿,她说:“好吧,我的方法就是从袜子堆里拿出一只袜子,然后去找它的配对的袜子,把它们放在一边。最后我会找拿出另外一只袜子,并寻找和它配对的那只袜子。“

很好,这是一种方法。另一种替代方法是将一只袜子从袜子堆里拿出来放在一边,然后从袜子堆中拿出另外一只袜子,看它是否与我们已经放在一边的袜子相匹配。如果相匹配,就匹配它们,如果不匹配,我们就像之前一样把它放在一边。

事实证明,当我们拥有足够数量的袜子时,第二种方法效率会更高,这是因为我们正在改变存货(我们在一旁放置的的一排袜子),而且我们也减少了我们必须翻找的袜子的数量。

上面的场景会带来什么样的影响呢? 第一点,它是互动的。 第二,这个场景我们很熟悉。第三,它介绍了计算机科学中的一些重要的概念(搜索,增长率,哈希表和内存)。第四,它鼓励人们思考“为什么”类型的问题而不是“如何”类型的问题。我们并不关心搜索算法的工作原理,但是我们关心为什么它更有效率。

对K-12计算机科学教育的兴趣的持续增长,无疑是受到让孩子为更加苛刻的劳动力市场做准备的意愿的影响,与此同时,不忽视基本目标尤其重要。 为什么我们要让学生在小时候就去接受计算机科学呢? 编程可以帮助孩子们在不久的将来获得一份工作。这是一个非常宝贵的技能。

但是,为了让孩子们对他们身边的世界随后可能产生的变化做好准备要求他们对更深层次的概念加以领会。而我的观点就是算法可能是这些更深层概念中最重要的。 如需转载,请在开篇显著位置注明作者和出处(转自:大数据文摘 | bigdatadigest),并在文章结尾放置大数据文摘醒目二维码。无原创标识文章请按照转载要求编辑,可直接转载,转载后请将转载链接发送给我们;有原创标识文章,请发送【文章名称-待授权公众号名称及ID】给我们申请白名单授权。未经许可的转载以及改编者,我们将依法追究其法律责任。联系邮箱:zz@bigdatadigest.cn。

本文分享自微信公众号 - 大数据文摘(BigDataDigest),作者:大数据文摘

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-06-01

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 机器学习算法在自动驾驶汽车中扮演怎样的角色

    大数据文摘
  • 纽约时报 | 专访数学家Hannah Fry:算法的时代,人类从未如此重要

    算法时代,似乎一切都可以有新的组织方式:有的算法能告诉我们读什么书、跟谁约会,甚至告诉警察应该逮捕哪个人。

    大数据文摘
  • 改变计算技术的 9 个伟大算法

    大数据文摘
  • 机器学习常见算法优缺点汇总

    机器学习的算法很多。很多时候困惑人们都是,很多算法是一类算法,而有些算法又是从其他算法中延伸出来的。这里,我们从两个方面来给大家介绍,第一个方面是学习的方式,第...

    机器学习AI算法工程
  • 数据工程师的算法!

    翻出来了17年自己梳理的数据工程师的算法学习内容,当时的理解和现在会有些许不同,但整体来看还是可以的,有一些比较细节的内容并没有花较多的时间来整理,留待大家自己...

    木东居士
  • 最懒惰的算法—KNN

    总第77篇 本篇介绍机器学习众多算法里面最基础也是最“懒惰”的算法——KNN(k-nearest neighbor)。你知道为什么是最懒的吗? 01|算法简介:...

    张俊红
  • 无人驾驶机器学习算法大全(决策矩阵、聚类、回归……)

    来源:机器人圈 作者:多啦A亮 本文长度为4600字,建议阅读6分钟 本文全面概述了无人驾驶现阶段使用的机器学习技术。 [导读]无人驾驶被认为是未来人工智能技术...

    数据派THU
  • 自动驾驶技术中的机器学习算法有哪些?

    如今,机器学习算法正大规模地用于解决自动驾驶汽车产业日益增多的问题。结合 ECU (电子控制单元)传感器数据,我们须加强对机器学习方法的利用以迎接新的挑战。潜在...

    机器人网
  • 业界 | 从集成方法到神经网络:自动驾驶技术中的机器学习算法有哪些?

    选自kdnuggets 作者:Savaram Ravindra等 参与:Lj Linjing、蒋思源 机器学习算法可以融合来自车体内外不同传感器的数据,从而评估...

    机器之心
  • 「大学生学编程系列」第九篇:如何学习算法

    作为一个标准的程序员对于算法需要有一个基础的掌握,而且算法几乎渗透到编程的各个方面,具备良好的算法基础对成为一名优秀的程序员有着非常大的好处,很多做了多年的程序...

    程序员互动联盟

扫码关注云+社区

领取腾讯云代金券