×
超值优惠券
¥50
100可用 有效期2天

全场图书通用(淘书团除外)

关闭
少儿计算思维养成记:六个孩子的编程学习笔记

少儿计算思维养成记:六个孩子的编程学习笔记

1星价 ¥55.3 (7.0折)
2星价¥55.3 定价¥79.0
暂无评论
图文详情
  • ISBN:9787111702481
  • 装帧:一般胶版纸
  • 册数:暂无
  • 重量:暂无
  • 开本:16开
  • 页数:235
  • 出版时间:2022-04-01
  • 条形码:9787111702481 ; 978-7-111-70248-1

本书特色

本书获得中国科学院科普专项资助,被中国计算机学会推荐为十大科普图书。 本书是六名小学生的编程学习笔记,忠实记录了中科院计算所三位研究员教授孩子们养成数学思维与计算思维的过程。 本书通过25讲编程基础和动手实例,以亲子教育的方式讲述六个基本计算思维,适合6~15岁青少年与老师或家长一起阅读,读者可从书中链接下载实例代码体验。 科学大师和教育名师联袂推荐。

内容简介

这本书是笔记,它的特色是“小学生写给小学生看”。现在市场上的书绝大部分都是大人写的,虽然作者尽量试图从小学生的角度来写,但毕竟还是有一些隔阂。而这本书忠实记录了小朋友自己的学习历程和心得体会,包括成功的经验,也有遇到bug时的挫折。例如:在实现刘徽割圆法估算圆周率π时,傅鼎荃怀疑“大圆的π应该更大”,通过实验才确信了一样大。这样的小孩子特有的疑问和探索,是大人想不到的,也是大人写的书里不会有的。此外,写作风格也是一个特色:这本书是小孩子自己写的,有小孩子自己的语气和思维方式,或许更适合小学生读者接受。 这本书是“计算思维从娃娃抓起”的一个尝试。所谓计算思维,是用计算机的概念来求解问题、理解自然现象与人类行为的思维方式。 我们并行开设“奥数班”和“编程班”;在此过程中,也发现了求解同一个问题时,数学思维和计算思维的异同。 以和差倍问题为例,奥数班教的是“线段图”法,其本质是一元一次方程的求解,是逆向的;而编程班上教的是“枚举法”,其本质是试错,是正向的。 我们在书里会穿插着讲解这两种思维方式的异同。 此外,仿真自然现象,是认识自然规律的利器。“森林里老鼠和鹰的数目变化”这一讲是这种思维方式的代表。本书讲编程,更重要的是用编程来思考问题、认识自然现象和人类行为。这本书是由3-5年级小学生编写,适用于小学高年级,以及中学低年级的学生。

目录

序 言 前 言 教师的话一 教师的话二 编程基础篇 第1讲 什么是计算机程序? 一、什么是计算机语言? /2 二、怎样让计算机听懂Scratch语言? /3 三、什么是计算机程序? /4 四、Scratch编程环境简介 /4 五、Scratch积木简介 /6 六、怎样让程序运行起来? /10 七、**个Scratch程序“Hello, world!” /10 八、更复杂的Scratch程序 /11 九、程序里的bug和debug /15 十、教师点评 /17 第2讲 角色的动作、绘图和音乐演奏 一、知识点 /19 (一)角色的方向 /19 (二)角色变换造型 /20 (三)角色的画笔 /20 (四)角色演奏音乐 /21 (五)角色的遮挡 /22 二、动手练:一个走动的钟表 /23 (一)实验目的 /23 (二)基本思路 /23 (三)编程步骤 /23 (四)实验结果 /25 (五)遇到的bug及改正过程 /26 (六)思考与延伸 /26 三、课后作业 /26 (一)实验一:音乐演奏 /26 (二)实验二:用计算机键盘弹钢琴 /27 四、教师点评 /27 第3讲 变量:角色的记忆 一、知识点 /28 (一)什么是变量? /28 (二)变量名字的写法 /28 (三)变量有几种? /29 (四)什么是局部变量和全局变量? /29 (五)怎样建立变量? /29 二、动手练:给托球游戏加一个计数器 /30 (一)实验目的 /30 (二)编程步骤 /30 (三)实验结果 /30 三、课后作业 /31 实验:小猫出口算题 /31 四、教师点评 /32 第4讲 循环:重复做动作 一、知识点 /33 (一)什么是循环? /33 (二)“重复执行”积木的种类 /34 (三)循环的嵌套 /35 (四)写循环的小秘诀 /36 二、动手练:阅兵方阵 /36 (一)实验目的 /36 (二)基本思路 /36 (三)编程步骤 /36 (四)实验结果 /37 (五)思考与延伸 /37 三、教师点评 /38 第5讲 克隆:角色的双胞胎和多胞胎 一、知识点 /40 (一)什么是克隆? /40 (二)什么时候用克隆? /40 二、动手练:阅兵方阵列队行进 /41 (一)实验目的 /41 (二)基本思路 /42 (三)编程步骤 /42 (四)实验结果 /43 (五)遇到的bug及改正过程 /44 (六)思考与延伸 /44 三、教师点评 /44 第6讲 条件判断:角色根据情况做动作 一、知识点 /45 (一)什么是条件判断? /45 (二)多个条件的组合 /45 二、动手练:判断奇偶数 /46 (一)实验目的 /46 (二)基本思路 /46 (三)编程步骤 /46 (四)实验结果 /47 (五)遇到的bug及改正过程 /47 三、教师点评 /48 第7讲 过程:程序的模块化 一、知识点 /49 (一)什么是过程? /49 (二)在Scratch程序里怎样实现过程? /49 (三)调用一个过程时到底发生了什么? /51 二、动手练:会织网的蜘蛛 /53 (一)实验目的 /53 (二)基本思路 /53 (三)编程步骤 /53 (四)实验结果 /54 (五)思考与延伸 /55 三、课后作业 /55 实验:彩虹风车 /55 四、教师点评 /56 第8讲 列表:把几个变量合起来 一、知识点 /57 (一)什么是列表?为什么要用列表? /57 (二)怎样理解列表? /57 (三)对列表的操作 /58 二、动手练:找出*大值和*小值 /59 (一)实验目的 /59 (二)基本思路 /60 (三)编程步骤 /60 (四)实验结果 /60 (五)思考与延伸 /62 三、课后作业 /62 实验:计算列表中数据的平均值 /62 四、教师点评 /63 第9讲 字符串:把几个字母合起来 一、知识点 /64 (一)什么是字符串变量? /64 (二)对字符串变量有哪些操作? /64 二、动手练:元音字母计数 /65 (一)实验目的 /65 (二)基本思路 /66 (三)编程步骤 /66 (四)实验结果 /66 三、教师点评 /67 第10讲 收发消息:角色之间的沟通和协调 一、知识点 /68 (一)角色之间的沟通和协调 /68 (二)什么是“消息”? /68 (三)怎样创建消息? /68 (四)怎样发送消息? /69 (五)怎样接收消息? /69 二、动手练:“谁在哪里干什么”游戏 /70 (一)实验目的 /70 (二)基本思路 /70 (三)编程步骤 /70 (四)实验结果 /73 三、教师点评 /74 计算思维篇 第11讲 逐级逼近法:刘徽割圆法估计π 一、实验目的 /76 二、背景知识 /76 (一)π是什么? /76 (二)π是多少? /76 (三)怎样找一个数尽量接近π? /77 (四)刘徽割圆法估计π /78 三、基本思路 /79 (一)画正多边形 /79 (二)计算正多边形的边长 /80 四、编程步骤 /80 (一)角色设计 /80 (二)变量设计 /80 (三)过程描述与代码展示 /80 五、遇到的bug及改正过程 /82 六、实验结果及分析 /82 (一)随着正多边形边数(n)的增加,π的估计值的变化 /82 (二)大圆小圆的结果一样吗? /84 七、教师点评 /85 (一)为何叫“割圆法”?哪里体现了“割”? /85 (二)本讲采用的方法与刘徽割圆法的差异 /86 (三)刘徽和祖冲之的生平 /86 第12讲 聪明的枚举:巧解数字谜 一、实验目的 /87 二、背景知识 /87 (一)*笨的方法怎么填? /87 (二)如何使得枚举时不遗漏可能的填数方案? /88 (三)如何手工计算判断次数? /89 三、基本思路 /89 (一)*笨的枚举法 /89 (二)聪明一点的枚举法 /89 (三)更聪明的枚举法 /89 四、编程步骤 /90 (一)角色设计 /90 (二)变量设计 /90 (三)过程描述与代码展示 /90 五、遇到的bug及改正过程 /92 六、实验结果及分析 /92 (一)算法找到了多少种答案? /92 (二)对比笨算法和聪明算法的判断次数 /92 七、思考与延伸 /94 八、教师点评 /94 第13讲 再论聪明的枚举:三阶幻方 一、实验目的 /96 二、背景知识 /96 (一)什么是幻方? /96 (二)怎样填幻方? /97 (三)三阶幻方有哪些性质? /97 (四)三阶幻方的“包卜魏猜想” /98 三、基本思路 /99 (一)*笨的填法是怎么填的? /99 (二)聪明的方法怎么填? /99 四、编程步骤 /100 (一)角色设计 /100 (二)变量设计 /100 (三)过程描述与代码展示 /100 五、实验结果及分析 /103 六、思考与延伸 /103 七、教师点评 /103 第14讲 从*简单的做起:4个和尚分馍馍 一、实验目的 /104 二、基本思路 /104 三、编程步骤 /105 (一)角色设计 /105 (二)变量设计 /105 (三)过程描述与代码展示 /105 四、遇到的bug及改正过程 /107 五、实验结果及分析 /108 (一)2个和尚分馍馍的分法与馍馍数有何关系? /108 (二)3个和尚分馍馍的分法与馍馍数有何关系? /109 (三)4个和尚分馍馍的分法与馍馍数有何关系? /110 六、思考与延伸 /110 七、教师点评 /111 第15讲 用“试错法”求解鸡兔同笼问题 一、实验目的 /112 二、背景知识 /112 (一)什么是鸡兔同笼问题? /112 (二)怎样求解鸡兔同笼问题? /113 三、基本思路 /114 四、编程步骤 /114 (一)角色设计 /114 (二)变量设计 /114 (三)过程描述与代码展示 /115 五、遇到的bug及改正过程 /116 六、实验结果及分析 /116 七、思考与延伸 /116 八、教师点评 /116 第16讲 随机有威力:打圆形靶子估计π 一、实验目的 /119 二、背景知识 /120 三、基本思路 /120 四、编程步骤 /121 (一)背景和角色设计 /121 (二)变量设计 /121 (三)过程描述与代码展示 /114 五、遇到的bug及改正过程 /122 六、实验结果及分析 /123 七、思考与延伸 /124 八、教师点评 /125 第17讲 再论随机有威力:布丰投针估计π 一、实验目的 /127 二、背景知识 /128 (一)布丰是谁?布丰实验是干什么的? /128 (二)历史上研究者做过的布丰投针实验 /128 三、基本思路 /129 四、编程步骤 /129 (一)角色设计 /129 (二)变量设计 /130 (三)过程描述与代码展示 /130 五、遇到的bug及改正过程 /132 六、实验结果及分析 /132 七、思考与延伸 /133 (一)扔圆环的碰线次数 /133 (二)扔“将圆环掰直变成的投针”的碰线次数 /134 (三)扔拐弯针的碰线次数 /135 (四)比较一下长针和短针的碰线次数 /136 (五)布丰投针能算π的终极解释 /137 八、教师点评 /138 第18讲 玩游戏体会“递归法”:河内塔游戏 一、实验目的 /139 二、背景知识 /140 (一)河内塔的故事 /140 (二)什么是递归积木块? /140 (三)递归积木块是怎样执行的? /140 三、基本思路 /141 (一)*简单的情形:1个盘子 /142 (二)比较简单的情形:2个盘子 /142 (三)难一点的情形:3个盘子 /142 (四)再难一点的情形:4个盘子 /145 四、编程步骤 /145 (一)角色设计 /145 (二)变量设计 /145 (三)过程描述与代码展示 /146 五、遇到的bug及改正过程 /146 六、实验结果及分析 /147 (一)输入不同的n,验证移动次数 /147 (二)要是有64个盘子呢? /148 七、思考与延伸 /148 八、教师点评 /148 第19讲 “递归法”的应用:斐波那契数列与黄金分割 一、实验目的 /149 二、背景知识 /151 (一)斐波那契是谁?什么是斐波那契数列? /151 (二)什么是黄金分割? /152 (三)斐波那契数列和黄金分割有何联系? /152 三、基本思路 /153 四、编程步骤 /154 (一)角色设计 /154 (二)变量设计 /154 (三)过程描述与代码展示 /155 五、实验结果及分析 /156 六、思考与延伸 /156 七、教师点评 /157 (一)如果兔子要3个月才成年呢? /157 (二)斐波那契数列的有趣性质一:相邻月份数目之和 /157 (三)斐波那契数列的有趣性质二:相邻偶数月份数目之积、相邻奇数月份数目之积 /158 (四)植物中的斐波那契数列 /159 第20讲 玩游戏体会“搜索法”:走迷宫 一、实验目的 /160 二、基本思路 /161 三、编程步骤 /162 (一)角色设计 /162 (二)变量设计 /162 (三)过程描述与代码展示 /163 四、遇到的bug及改正过程 /167 五、实验结果及分析 /167 六、思考与延伸 /169 (一)采用什么样的策略走*合适? /169 (二) “走迷宫”和解数学题之间有什么关系? /169 七、教师点评 /169 第21讲 玩游戏体会“二分法”:找钻石 一、实验目的 /171 二、背景知识 /172 三、基本思路 /173 四、编程步骤 /173 (一)角色设计 /173 (二)变量设计 /173 (三)过程描述与代码展示 /173 五、遇到的bug及改正过程 /177 六、实验结果及分析 /178 七、思考与延伸 /178 (一)采用什么样的策略*合适? /178 (二)傅鼎荃说对8行8列的游戏来说,使用二分法*多需要6次,为什么? /178 (三)用递归的观点想一想 /179 八、教师点评 /179 第22讲 “二分法”的应用:估计的值 一、实验目的 /180 二、背景知识 /181 (一)是怎么发现的? /181 (二)毕达哥拉斯是谁? /181 (三)为什么说的发现是一件重要的事情? /182 三、基本思路 /182 四、编程步骤 /183 (一)角色设计 /183 (二)变量设计 /183 (三)过程描述与代码展示 /183 五、遇到的bug及改正过程 /185 六、实验结果及分析 /185 (一)除了2,计算一下其他数的平方根,比如3、5、7 /185 (二)输入不同的初始估计值low和up,需要多少次循环才能估计准? /186 七、思考与延伸 /186 (一)有没有更快的方法来估计出呢? /186 (二)计算2的十二次方根 /187 八、教师点评 /191 第23讲 仿真世界:牛顿的大炮 一、实验目的 /192 二、背景知识 /192 (一)牛顿是谁? /192 (二)牛顿的大炮是用来做什么的? /193 三、基本思路 /193 四、编程步骤 /194 (一)角色设计 /194 (二)变量设计 /194 (三)过程描述与代码展示 /195 五、遇到的bug及改正过程 /197 六、实验结果及分析 /197 七、思考与延伸 /198 八、教师点评 /198 (一)如何根据斜方向的拉力F计算出水平方向的拉力Fx和竖直方向的拉力Fy? /199 (二)平方反比率的推导和背后的原因 /200 (三)牛顿和他所在的那个光辉时代 /201 (四)用更大号的三棱镜重做牛顿的光谱实验 /201 第24讲 再论仿真世界:森林里有几只老鼠,几只猫头鹰? 一、实验目的 /202 二、背景知识 /202 三、基本思路 /203 四、编程步骤 /204 (一)角色设计 /204 (二)变量设计 /204 (三)过程描述与代码展示 /204 五、遇到的bug及改正过程 /207 六、实验结果及分析 /207 七、思考与延伸 /208 (一)要是**年只有50万只老鼠呢? /208 (二)假如1万只猫头鹰每年吃掉0.1万只老鼠呢? /208 (三)假如1万只猫头鹰每年吃掉0.2万只老鼠呢? /209 八、教师点评 /209 第25讲 博弈初探:会下tic-tac-toe棋的阿尔法小狗 一、实验目的 /211 二、背景知识 /211 (一)什么是tic-tac-toe棋游戏? /211 (二)人是怎样下棋的? /212 三、基本思路 /213 (一)阿尔法小狗怎样表示棋局? /213 (二)阿尔法小狗怎样判断下在哪里赢面大呢? /213 (三)阿尔法小狗怎样下棋呢? /215 (四)阿尔法小狗怎样对棋局进行评分呢? /216 (五)阿尔法小狗要“深谋远虑”还是“目光短浅”? /216 四、编程步骤 /218 (一)角色设计 /218 (二)变量设计 /218 (三)过程描述与代码展示 /219 五、遇到的bug及改正过程 /225 六、实验结果及分析 /225 七、思考与延伸 /227 (一)怎样让阿尔法小狗变聪明? /227 (二)新玩法:“狗狗大战” /228 八、教师点评 /228 (一)阿尔法狗的诀窍之一:控制树不能太高 /229 (二)阿尔法
展开全部

节选

教师的话一 2018年的一天,我给同事包云岗打了个电话,说:“孩子们上二年级了,能否在轻松、活泼的氛围下,引导孩子们学一些数学思维呢?”云岗很赞同,我们就一起组织了一个小SIGMA数学特别兴趣组,权且由包云岗、兰艳艳和我担任老师,学员就是我们自己的孩子。 在这个特别兴趣组中,学生用书是通用的奥数教材,不过教师用书可不太普通—我们用的是G. Polya写的《怎样解题—数学思维的新方法》(How To Solve it)和陶哲轩写的《陶哲轩教你学数学》。换句话说,我们践行的是Polya的数学教育观—重在倾听孩子们的理解和猜想,重在引导孩子们观察、尝试、联想、归纳、做“合情推理”,总之是一种“慢数学”的风格,有时候我们甚至2个小时只讲一道题。 一开始的确看不出成效,但等到三年下来,才慢慢发现孩子们有了一些进步—当然,这些进步不是指孩子们参加某个杯赛拿了个奖,而是指孩子们掌握了一些基本的数学思维,体现在自己能够提出和证明一些猜想,比如包若宁、卜文远、魏文珊小朋友提出了三阶幻方的“包卜魏猜想”,傅鼎荃小朋友在学习“鸡兔同笼”问题时,完全自主地想出了“二分法”。在思维火花迸发的尤里卡时刻,孩子们兴奋得又喊又跳;躬逢其时,我们也非常欣慰—这是对教师*大的肯定和褒奖。 等到了2020年春节,因为出现疫情,孩子们都憋在家里,很是无聊,就嚷嚷着让我们教他们编程。教一门编程语言容易,但是关键不在这里,而在于教“计算思维”,这给我们出了一个不小的难题。 事实上,包云岗、兰艳艳和我都在中国科学院大学教计算机科学与技术:包老师讲授“操作系统”,负责“一生一芯”实践计划,讲解如何设计CPU和计算机系统;兰老师讲授“机器学习和人工智能”,训练计算机怎样学习;我讲授“计算机算法设计”,包括怎样观察问题和求解问题。简而言之,我们教的都是“计算思维”。 不过我们面向的都是本科生和研究生,能否教小学生计算思维?教什么?怎么教?这对我们来说是全新的挑战。这可不像教数学,还有Polya和陶哲轩写的书能够当作教材,给我们一些指导。 我们在开课前思考了很久,教的时候又边教边琢磨,把教授本科生、研究生的计算思维进行裁剪和修改,形成了一个初步的“小学生版”计算思维。 所谓计算思维,其核心是碰到问题时如何观察、如何尝试,然后如何根据观察到的规律设计计算机程序来求解问题。下面这几条或许是*基本的计算思维: (1)先正向尝试理解题意,再反向求解问题 碰到一个问题如何下手?孩子们往往会对着问题发呆,感觉束手无策。这不怪孩子们,求解问题是“反向思维”,有时候的确不太容易一下子就想出来。 在这种情况下,“先正向尝试理解题意,再反向求解问题”是走出困境的一个好办法。以“鸡兔同笼”问题为例,可以先尝试一下“鸡有0只”,即使这个尝试非常粗糙也没关系,然后验证这个尝试对不对,不对再修改尝试,比如接着尝试“有1只鸡对不对”,如果不对再增加鸡的数目。 先尝试猜测一个解(或许这个解很粗糙,这不要紧),再验证这个猜测是否满足要求,不满足要求就修改;这种“尝试-验证-改进”策略是“试错法”,也是“逐步改进法”。正向尝试有助于理解题意,或许应该成为孩子们碰到问题时的“**反应”。 这种策略看起来很笨,不过却有三个好处:一是能够使孩子们动起手来,避免发呆;二是能够启发我们写一个求解的程序;第三点更重要,孩子们尝试不了几次,可能就会自己发现规律,想出更好的求解方法—这不是想象或夸张,SIGMA的孩子们就是这样想出求解方法的。 说得更远一点儿,计算机科学与技术里普遍采用这种“用正向尝试来反向解题”的策略。一个典型的方法就是神经网络的训练过程—尝试设置网络参数,做正向的网络传播,验证传播的结果,如果不好就修正网络参数,*终反向求解出网络参数。 (2)从*简单的做起 碰到一个复杂的问题怎么办?比如“四个和尚分馍馍”问题,唐僧师徒4人化缘化到了10个馍馍,问共有几种分法?孩子们没学过组合数学,看到这么多和尚和这么多馍馍,一下就傻眼了。 直接求解这个问题是很难的,我们就启发孩子们从*简单的做起:4个和尚、10个馍馍的问题不会解,那就先考虑2个和尚、1个馍馍的问题。反过来,如果*简单的情形都无法解决,那就说明这个问题太难了,要么放弃,要么琢磨*简单的情形与原始问题之间的差异。当知道怎样求解2个和尚、1个馍馍的问题之后,我们再增加难度,考虑2个和尚、2个馍馍的问题,以及3个和尚、3个馍馍的问题。 找出问题的*简单情形,从*简单的情形入手,可以有效避免孩子们面对复杂问题时束手无策。所谓下手,所谓破题,所谓“把手弄脏”,就是第二个有效方式。 (3)要学会把复杂问题分解成简单问题 这和上一点是一脉相承的。当面对复杂问题时,首先要思考什么是*简单情况,*简单情况下的问题会不会解。假如*简单的情况会解了,下面的思考方向就是如何把复杂问题分解成简单问题。 还是拿“4个和尚分10个馍馍”做例子,假设知道唐僧吃了1个馍馍,剩下的问题就简化成“3个和尚分9个馍馍”了。把复杂问题分解成简单的、同类型的问题,就朝着*终解决问题前进了一大步。 当然,这种“假设法”只是一种问题分解手段,除此之外,还有“二分法”等。我们设计了几个题目,比如“求2的平方根”,目的就是引导孩子们领会“二分法”。 (4)枚举容易做,关键是剪枝 如果说计算思维和数学思维有什么不同,我想*大的不同或许在于“枚举法”。其中的道理很简单:人力有限,惧怕枚举;计算机不怕累,不怕枚举,反而有时候喜欢枚举—枚举程序多容易写啊。 碰到哪种问题可以尝试“枚举法”呢?如果一个问题的解是多个变量的组合,我们可以尝试一下“枚举法”。以“数字谜”问题为例,解是多个变量的组合,我们只需要枚举变量的所有组合就可以了。孩子们在数学课上常会碰到这种题目,当时很畏难—不是不会做,而是所有的组合太多了,一想到枚举就发怵。不过到了编程课上就简单了,只需要写一个“嵌套循环”,让计算机拼命算就行了。 当然了,要是组合数量实在太多的话,计算机也枚举不完。这时候的关键是找“*受限制”的变量,用这个变量对枚举树进行“剪枝”。我们在讲“数字谜”时,让孩子们尝试*笨的枚举,然后和带剪枝的枚举进行对比,从而体会剪枝的重要性。 孩子们将来会发现很多问题和“数字谜”问题类似,解是由多个变量组成的。对这种问题,“枚举+剪枝”是行之有效的解题思路。 (5)随机是个利器 孩子们还是小学生,接触的“确定性”方法多,“随机性”算法少。我们设计了“布丰投针估计π”“打圆形靶子估计π”“布朗运动和醉汉的脚步”实验,意在引导孩子们从随机算法的角度思考问题。 “布朗运动和醉汉的脚步”实验,意在告诉孩子们很多天然现象的本质就是随机;而“布丰投针估计π”和“打圆形靶子估计π”实验,是想让孩子们体会到即使是确定性的问题,也可以用随机方法解决。随机采样可以大大减少计算量,不需要特别多的采样,也能得到很好的结果。 (6)仿真物理世界 在学习计算思维的过程中,一个需要防止的倾向是把计算机世界和真实的物理世界割裂开来。 为了防止这种倾向,我们引导孩子们在写程序之前,尽可能先做一些物理实验。比如在写“打圆形靶子估计π”程序之前,先用圆珠笔作飞镖、向靶子上投掷;在写“花粉的布朗运动”仿真程序之前,先用激光笔照射淀粉悬浮液,体会真实的布朗运动;在写“牛顿的大炮”程序之前,先用三根弹簧秤探索拉力分解的奥秘。有了真实的体会再写程序,和没有体会直接写,感觉是大不相同的。 此外,我们在设计题目时非常强调“数学建模”,即怎样把物理世界中的实际问题表示成计算机问题或数学问题。比如我们设计了“森林里有几只老鼠几只猫头鹰”这一讲,意图引导孩子们体会如何仿真“猎物-捕食者”动力学系统;设计了“牛顿的大炮”这一讲,意图引导孩子们体会如何把物理世界“装”到计算机里去。 值得指出的是,“森林里有几只老鼠几只猫头鹰”背后有高深的数学思想;C. Lay写的《线性代数及其应用》中讲到矩阵特征值时,开篇用的就是这个例子。等到孩子们长大了,学习大学数学时,相信会有似曾相识的感觉。 总结一下:从粗糙的解开始大胆尝试,不断改进;从*简单的情形做起,把复杂问题分解成简单问题;枚举所有的解,设计“剪枝”技术加快枚举过程;随机采样少量的样本,以减少计算量,这大概就是*基本的计算思维了。我们给本科生、研究生讲的无非也是这几条,只不过是更深、更广一些罢了。 德国数学家、数学教育家F. Klein写了一本书,书名叫作《高观点下的初等数学》,其核心观点之一是“有些基础数学,从高观点下才能看得更加明白”。我们把讲授给本科生、研究生的计算思维做了筛选,然后讲授给孩子们;不揣浅陋,这或许可以称作“高观点下的少儿计算思维”吧。 为了便于孩子们理解和掌握计算思维,我们还设计了一些游戏,比如“找钻石”游戏是为了体会“二分法”,“走迷宫”游戏是为了体会陶哲轩提出的解题大法—解题无非是尝试寻找一条从已知到结论的路径。我们几位老师平时研究的就是算法和系统,所以给孩子们讲授的计算思维自然而然地带有浓厚的“数学思维”和“系统思维”色彩。 大概花了4个月的时间,我们就教完孩子们编程了,包括编程基础知识和计算思维。那孩子们学得到底怎么样呢? 事情很是凑巧,2021年5月22日计算所举办“公众科学日”活动,其中一个节目是我带着小SIGMA们做一期“知乎课堂”,讲的题目是“如何用Scratch编程实现一只阿尔法小狗”。台下有300名现场观众注视,线上还有30万观众观看,孩子们顶住压力,现场编程,出了bug现场解决,成功实现了会下tic-tac-toe棋的阿尔法小狗;然后给观众讲解背后的原理和编程步骤,邀请观众进行“人狗大战”;*后又分成两个战队进行“狗狗大战”,看哪一队设计的阿尔法小狗更厉害。 现场完成编程和讲解,说明孩子们掌握了基本的计算思维和程序设计技能。此外,张秦汉小朋友参加“核桃杯”编程大赛,获得了北京市金奖,也是一个小小的证明,值得鼓励。 我们在讲课时就要求孩子们做笔记,记录自己的理解、实验设计思路和实验结果。孩子们轮流来,每一讲都推选一位小朋友负责整理笔记:写程序、分析实验结果、上网查资料,这通常需要花费一周的时间。孩子们写完之后,由我们修改、校补和点评,*终汇集成了这本小书。我们所做的大修改都以“教师点评”的形式明确标识,尽量把修改*小化,以保持孩子们写作的原汁原味—童言童语,自当胜过老生常谈。 这本书是孩子和家长共同劳动的成果:部分插图是孩子们手绘的;封面是刘卫玲设计的;全书由包云岗、张春明、谭光明、兰艳艳、何海芸校对。每一位家长都没有缺席。 在我的心目中,小SIGMA数学特别兴趣组不是一个课外补习班,而是我们这些做父母的和孩子们做的一场亲子游戏,是把我们的思考和领悟教给孩子们的一次传承,是共同领略数学思维和计算思维的一次探秘之旅。 我们这些家长们会永远记得这段时光。我想我们的孩子们将来上了大学,学到高等数学、概率论、计算机算法、人工智能时,应该时不时会感觉似曾相识,大道至简,当会心一笑罢。 是为记。 中国科学院计算技术研究所 卜东波 2021年8月23日于北京中关村

作者简介

小SIGMA数学特别兴趣组的六名学员:包若宁,中关村一小四年级魏文珊,中关村一小四年级傅鼎荃,北大附小四年级张秦汉,北京双榆树中心小学三年级卜文远,中关村一小四年级谭沛之,中关村一小五年级 指导老师卜东波中科院计算所研究员。研究方向为计算机算法设计和生物信息学。在国科大讲授“算法设计与分析”,讲授问题求解思维。包云岗中科院计算所研究员。研究方向为计算机系统。负责国科大“一生一芯”实践计划,在国科大讲授“操作系统”,讲授系统思维。兰艳艳清华大学教授、前中科院计算所研究员。研究方向为统计学和机器学习。在国科大讲授“人工智能与机器学习”,讲授机器学习思维。

预估到手价 ×

预估到手价是按参与促销活动、以最优惠的购买方案计算出的价格(不含优惠券部分),仅供参考,未必等同于实际到手价。

确定
快速
导航