学习,思考,分享,创造

分类:未分类

白小迎曦分校Python社团课

周三上午从杭州出差回来,回家稍作休整之后,就直接来到了白小迎曦南校。今天是学校四年级学生Python编程社团的日子。

这个社团是鲸小小2019年面向学校合作的第二个合作成果。 学校的校长在收到我们的提议后,非常支持编程社团的开办,放手让老师们安排。虽然由于校区计算机室资源的问题,有些曲折,但是整体效率是非常高的。 老师们在帮助学生接触新的知识和技能,非常努力积极地在工作。

跟着负责这个项目的高老师,从教学楼的西边楼梯上二楼,辗转穿过教学楼,到了最东边的计算机教室。 教室里整整齐齐的摆着5排电脑,井井有条。

高老师介绍说,由于社团成立的时间比其他社团要晚,一开始担心与其它社团活动时间冲突,报名人数会比较少。

没想到的是,消息一经发出,就有来自于5个班的12位四年级的同学积极地选择了Python编程社团。

时间差不多了,同学们三三两两地陆续到来。

有同学一进来,就迫不及待地大声说:“老师,你知道我报了几个社团吗? 算上编程,有三个了!”

还有个同学说,她特别想来编程社团, 虽然班主任老师专门给高老师打了招呼,说她已经很忙了。但是她仍旧是来了。 这个同学进门之后兴奋地跟我讲了这么多。

这第一节课,课堂目标最主要的是:

1) 了解一下学生的水平。因为我知道,每个孩子接触电脑的机会是不一样的,使用电脑的程度参差不齐

2) 让学生们了解一下Python编程大概是怎么回事,为什么要学,要展示一个具体的例子

3) 介绍一下课程的安排和上课的一些基本规则

“多提问, 多尝试, 多分享”这样的三多理念当然也是要给同学们讲到的。除此以外, 在讲到多尝试的时候,补充了一下。

“在Python编程社团里面,你们不要轻易相信任何人的话,只有自己动手尝试过确认以后才能相信” 估计这帮孩子从来没有听到过课堂上的老师这么讲过,着实懵了一下下。经过解释之后,他们还是连连点头的。

孩子们需要开始更多地接触独立思考,独立验证这样的习惯了。技术方面来不得弄虚作假,大部分时间对就是对,错就是错。 学生们有了计算机工具,思维上再强化一下自主意识,自学意识,对于他们个人的发展也是很有帮助的。

这些学生中,有的上过计算机信息技术课,所以使用键盘输入,鼠标操作都非常熟练。有的很少接触电脑,也没有上过计算机信息技术课,所以在电脑上敲字挺费劲的。


教编程,真正地从零开始了。教如何输入大写字母,标点符号,汉字等等。 不知道孩子们在家有多少时间练习一下呀!


没有教他们安装Python软件包,而是课前早就请鲸小小的老师和高老师安装好了。 如果第一天教安装,对于电脑系统操作不熟悉的孩子,在短短的40多分钟中,估计大部分时间都是迷糊的,万一学习编程的热情遭受了打击, 罪过就大了。


在情绪调动起来之后,孩子们开始敲人生第一行代码。 首先教他们怎么打开Python的IDLE, 然后输入print()这样的指令。 熟悉键盘操作的学生一下就好了,不熟悉的就费点劲, 需要到他的位置上指导。 “Hello World” 这样的一行程序,有的同学需要漫长的时间才能敲好,有的三下五除二就好了。 然后为了让他们互相认识一下,就让他们编程给左手边的同学打招呼,然后再给右手边的同学打招呼。 一个同学挺投入, 完成之后,写程序给妈妈打招呼。做好了以后,把手举得高高地,让我过去看。


千里之行,始于足下。只要开始了,就有机会走得很远很远。

Cason 老师

受计算机室资源所限,我们只开了Python班。如果将来时机成熟了, 低年级的Scratch班, 高年级的C++班, Arduino班,Micro:bit班,都可以做起来。 希望编程社团能够做得越来越受欢迎, 很可能未来有一天,他们在大学中学习的课目,或者未来从事的工作,都会受益于这个社团的活动内容呢!

同学们加油!

解数独,学编程-Python 4

python

上一篇我们使用了列表的生成方法, 用一条语句就可以根据现有的数据生成一个新的列表,避免了显式的循环,让代码显得非常简洁。

本次我们会继续分析cross这个函数的使用, 并用它来生成含有所有单元的列表的列表。

接下来我们在看两个例子:

# first column list , then row list, then 4x4 unit #
UNITLIST = ([cross(ROWS, c) for c in COLS] + [cross(r, COLS) for r in ROWS] + [cross(rs, cs) for rs in ('ABC','DEF','GHI') for cs in ('123','456','789')])

这条语句形成了一个新的列表,由三部分列表组成。

[cross(ROWS, c) for c in COLS]

编程时当遇到在一个抽象基础上累加另外一个抽象的时候,看起来就比较复杂了。 但是当我们抓住抽象的本质,就能理解代码的真实意图。

上面代码就是针对每个COLS中来的c,都做一下与ROWS中元素的组合。假如c为1, 则cross(ROWS, ‘1’) 就会生成 [‘A1’, ‘B1’, ‘C1’, ‘D1’ … ‘I1’] 这正好是第一列

如果c为2,则生成第二列, 所以 [cross(ROWS, c) for c in COLS] 生成的就是所有列组成的一个列表。

如果反回来思考,如何生成一个包含所有列的列表呢?

首先我们要明白, cross()函数的第二个参数不能是一个列表,因为该函数的算法是先取第一个参数中的一个元素不变,逐个与第二个参数中的某个元素组合。 如果第二个参数是列表且有多个元素, 新生成的列表元素第二部分就是变化的,不会像上面分析的结果一样,第二部分是不变的。

所以就先从列中取一个元素,作为cross函数的第二个参数。

那么,如何生成包含所有行的列表呢? 就是 [[‘A1’, ‘A2′,’A3’, ‘A4’ ,… ‘A9’], [‘B1’, ‘B2’, ‘B3’, … ‘B9’], … [‘I1’, ‘I2’, ‘I3’ … ‘I9’] ]?

cross(‘A’, COLS) , cross(‘B’, COLS) … cross(‘I’, COLS)

再把变化的部分抽出来,就变成了

[cross(r, COLS) for r in ROWS ]

这正好是 UNITLIST 中第二个部分,所有行的列表组合

下面我们来看如何生成3×3的方格的单元。 左上角的是[‘A1′,’A2′,’A3’, ‘B1’, ‘B2’, ‘B3’, ‘C1’, ‘C2’, ‘C3’], 中间的是 [‘A4’, ‘A5’, ‘A6’, ‘B4′,’B5′,’B6′,’C4′,’C5′,’C6’] 右上角的是 [‘A7′,’A8′,’A9’, ‘B7′,’B8’,’B9’, ‘C7’, ‘C8’, ‘C9’]

我们能找到什么规律呢?

我们可以看到,cross()的第一个参数‘ABC’, 第二个参数是 (‘123’,’456′, ‘789’)

中间一行最左边3×3单元是: [‘D1′,’D2’, ‘D3’, ‘E1’, ‘E2’, ‘E3’, ‘F1’, ‘F2’, ‘F3] 中间一个单元是 [‘D4′,’D5’, ‘D6’, ‘E4’, ‘E5, ‘E6’, ‘F4’, ‘F5’, ‘F6’] , 最右边的单元是 [‘D7′,’D8’, ‘D9’, ‘E7′,’E8′,’E9′]。cross()的第一个参数是‘DEF’, 第二个参数是 (‘123’,’456’, ‘789’)

由此,我们可以大胆地假设, 最后一行3×3单元, cross()的第一个参数是‘GHI’, 第二个参数是 (‘123’,’456′, ‘789’)

这正好是: [cross(rs, cs) for rs in (‘ABC’,’DEF’,’GHI’) for cs in (‘123′,’456′,’789’)]

所以看到了吧, UNITLIST 就是所有的单元, 包括行, 列,以及3×3的方格。所有这些单元,都保存在了UNITLIST这个变量里面了。

如果你仔细观察的话, 生成的列表中,有几个列表元素, 第一个参数就有几个元素。

本篇的主题就是根据cross函数和要实现的目的,来构造列表的生成式了。

看起来很复杂,只要理解了cross函数的本质,就容易掌握了。 只所以要学列表的生成式, 因为Python语言里面用得比较多,这样做简介,显得更加像Python程序员写的程序。

作业

根据cross()函数的定义,要实现 [‘A1’, ‘A2’, ‘A3’, ‘A4’], 应该怎么写构造列表的生成式呢?

cross(‘A’, [‘1′,’2′,’3′,’4’])

美国计算机科学联赛 简介

See the source image

ACSL,美国计算机科学联赛 您让孩子参加吗?

国内少儿编程培训逐渐升温,相关的比赛竞赛也是发展迅速。

你可知道美国有个计算机科学联赛-ACSL,从举办到现在已经41年了。

在国内上学的学生,尤其是国际学校的学生,如果对于计算机编程感兴趣,参加这样的比赛应该更加合适。 今天就要介绍一下这个计算机科学联赛ACSL。

背景知识

美国计算机科学联赛起源于美国硅谷,是美国历史悠久的中小学生计算机编程赛事之一。该比赛同时获得了美国国家中学校长联盟NASSP 与美国计算机科学教师协会的官方认证和推荐,同时获得了如谷歌、Adobe、No Starch Press、O’Reilly Media、Pearson、Pragmatic Bookshelf和 Wolfram 等著名高科技企业和教育企业的支持。随着各国日益重视编程教育,每年来自美国、加拿大、欧洲、非洲和亚洲的众多中小学生都踊跃参加到该竞赛中。

比赛规则

该项比赛采用的比赛语言是英文,其中在中国参赛, 小学,初级和中级提供中文翻译

赛事组成

分为两种,一种是积分赛,每年四轮,另外一种是全明星总决赛(积分赛获奖选手受邀参加)

比赛时间

积分赛

  • 第一轮: 2019 年12 月20 日 周五,
  • 第二轮: 2020 年2 月7 日, 周五
  • 第三轮: 2020 年3 月13 日,周五
  • 第四轮: 2020 年4 月17 日,周五

完成题目,提交的最后截止日期如上。

其中第一轮属于选拔赛。

全明星赛:

  • 全明星赛:2020 年5月23日

比赛地点

国外是每个学校可以注册,由本校的老师来管理。 目前国内有不少国际学校作为考点。

华北赛区:

组队方式

3 人/ 组

小学组不需要组队,因为小学组只有简答题,没有团队编程题目。

难度级别

  • 高级 Senior Division:适合高中同学,并且具备较强计算机编程能力同学,尤其是选择学习AP 课程中计算机科学课程的同学
  • 中级 Intermediate Division:面向编程基础较浅的初中和高中生
  • 初级 Junior Division:适合没有编程基础的初中同学参加

这是三个级别的比赛分两部分, 书面简答(30分钟)  和上机团队编程 (2小时)

  • 小学Elementary Division:适合小学3-6年级同学参加,不需要具备丰富的编程语言基础,没有编程经验的同学也可以参加, 只有书面简答题,考试时间40分钟
  • classroom division: 面向任何年级的学生,只有简答题,需要在50分钟内完成

其中, 小学、初级、中级是提供中文翻译的。高级是英文的题目。

另外,编程经验丰富的低年级参赛者可以选择高年级的赛事,例如编程能力强的小学生可以选择高级或中级、初级赛事,编程能力强的初中生可以选择高级赛事。但是高中生不能选择小学和初级赛事,初中生不能选择小学赛事。

也就是说可以超前比赛,但是不能降级比赛。

高级、中级、初级比赛内容

  • 第一部分:个人笔试:30 分钟,5 道编程数理题。每题1 分,满分为5 分
  • 第二部分:团队编程:2 小时编程挑战赛,团队共同完成。仅1 道编程题,满分为5 分

注:小学难度竞赛仅个人笔试40 分钟,没有团队编程赛,不需要三人组队

积分规则

  • 个人得分:个人简答题总得分
  • 团队得分:(个人简答题总得分+ 编程挑战赛得分* 团队总人数)/ 团队总人数
  • 简答题 答对一题记1分, 最多5分
  • 编程题: ACSL发给指导老师5组测试数据, 指导老师在输入官方给出的input之后,如果程序能跑出正确答案, 则每一个正确答案记1分, 最多5分。 如果程序出现死循环则不得分。  一个参赛者最高个人得分是10分。 简答题5+编程题5
  • 最后一个队伍选出最高的3个分数交给ACSL,作为这一次比赛的团体总分, 团队最高分是30分( 10+10+10)

奖项设置

每个难度级别单独评奖

个人奖项:

  • 个人卓越奖:四轮比赛全部获得满分
  • 个人高分奖:个人赛积分排名前20% 的个人

团队综合奖:

  • 金牌:团队积分排名前5% 的团队
  • 银牌:团队积分排名前5-15% 的团队
  • 铜牌:团队积分排名前15-30% 的团队
  • 优秀奖:团队积分排名前30-50% 的团队

获奖团队可获邀参加全明星总决赛(北京),角逐全球奖项

邀请每个组别4次比赛中累计得分最高的几个学校参赛。 ACSL同时会给每个地区累计得分最高的几个学校和该学校得分最高的几位学生颁发奖状

全明星赛总决赛 All Star Contest

积分赛获奖团队受邀参与全明星总决赛,比赛于8 月16 日在北京举办。同样分为三个难度级别:初级、中级和高级,参赛团队只能选择与积分赛同样的难度参加,不能跨级。每支团队将获得4 道编程题,每道题根据难度分别值5-10 分,比赛时间为3.5 小时。笔试环节也需团队进行,在规定时间内,完成相应的题目

全明星赛承办学校:北京市第八十中学(北京市朝阳区望京北路甲16 号)

考点

ACSL考试的内容分为两部分, 一部分是重要的计算机科学概念,比如

  • 分析程序流程
  • 分析变量的值
  • 布尔代数
  • 简单的数字电路分析
  • 二进制,16进制 转换

另外一部分是问题的算法解决能力,这就是团体编程部分了。

例题解析

针对小学组的题目,我们可以举几个例子来介绍:

不同进制的转换:

这个题目考了三个知识点, 一个是颜色在计算机中的表示方式, 另外一个就是16进制的表示, 最后一个就是16进制的减法计算。

下面这个题目考察的知识点是后缀表达的解析。 其中用到了计算机可续中堆栈的知识点。

结论

美国计算机科学联赛(ACSL)考察的是计算机科学中的基本的且重要的知识点。 对于小学生来讲,不涉及到真正的编程,关键知识点虽然不是很多,但是涉及的面还是挺广的。需要老师专门的教授,学生需要系统地学习。

另外, 这个考试虽然有中文的翻译,但是如果英文能力可以,最好借此机会把计算机科学相关的英语知识同时强化一下,这对于国际学校的学生未来出国留学,继续学科的学习非常有帮助。

ACSL得到美国计算机科学教师协会的认可,所以把其成绩用于国外学校的申请,作为学术方面的成就,能够起到一定的助力。

如果想要咨询更多的信息,请联系微信: techradio

解数独,学编程 -python 3

数独中每个格子地址的表示

上次我们已经学会了用列表来表示一个数独的值。 当某个空格的值我们不能决定时,可以用一个字符串来表示多个值, 比如下面,就表示A1处1到9都有可能,不能确定。
line1 = [‘123456789′,’7′,’8′,’123456789′,’123456789′,’123456789′,’123456789′,’123456789′,’123456789’]
这个是上次的作业。


本篇的目标是介绍如何用Python代码来实现一些最基本的数独的概念。
我们知道,每个数独的格子都是编号了, 比如 ’A1‘, ’B2‘ 等等。这些编号可以当做地址,所以快速生成这些地址也非常重要。

DIGITS意思是数字, 这里是一个字符串, 还有从1到9这些字符。

ROWS意思是行,含有’A‘ 到 ’I‘ 这些字符。 那么COLS就表示列, 行是字母, 列是数字。 上面是Python里面的三个字符串变量。


我们要写一个函数, 输入是行和列的表示,输出是一个数独格子的地址表示。

函数的定义和使用

函数在编程语言里可以根据一个功能,把一些语句组合起来。这样可以实现代码的重复使用,而且也容易阅读代码。

在代码中,函数涉及到定义和调用。

比如,下面就是一个函数的定义: 它始于用def 定义的函数名字。

def add(a,b):    
    return a+b 

这个函数输入两个值 a 和b,输出一个值, a与b的和。 return的意思是返回。

把a与b的和返回到函数的调用的地方。 这个函数的使用方法如下:

c = add(100, 200)

在函数执行的时候, a=100, b=200, 返回的就是 (a+b) = (100 + 200 ) = 300

函数定义中一遇到return , 函数就退出了, 返回到调用的地方。 在这里返回了300, 然后c这个变量的值是300 。


我们要写一个输入是行和列的值,输出可以表示每个格子的位置。

def cross(A, B):    
     # "Cross product of elements in A and elements in B."    
     return [a+b for a in A for b in B]


这个函数严格来讲只有两行, 里面要理解的概念倒不少。

首先就是列表的生成。


[a+b for a in A for b in B]


我们已经知道,用[]可以生成列表。 可是,这里的列表生成语句好奇怪啊。
我们先看 “for a in A”, 这部分的意思是说,对于每一个在A中的元素a 。

后面紧跟着 “for b in B”, 意思是 对于每一个在B中的元素b。
a+b 表示两个元素相加。我们知道 1+3 = 4而’1‘+’3‘ 就变成了 ’13‘而’A‘ + ’4‘ 就变成了 ’A4‘ 了。


如果我们不用列表生成语句,而是用普通的编程语句来实现,程序可能需要这样:

假如A = ‘abcd’, B= ’1234‘ 那么 程序执行的顺序就是:

先从A中取第一个元素’a‘,然后顺序从B中取各个元素’1234’,做加法,形成

      'a' + '1'  = 'a1'        
      'a' + '2'  = 'a2'  
      'a' + '3' =  'a3' 
      'a' + '4' =  'a4'         

然后从A中取第二个元素’b‘, 接着从B中取各个元素’1234′, 做加法,形成

'b' + '1' = 'b1'

'b' + '2' = 'b2'

'b' + '3' = 'b3'

'b' + '4' = 'b4'


以此类推。最后形成了一个列表, 结果是这样的

[‘a1′,’a2′,’a3′,’a4′,’b1′,’b2′,’b3′,’b4’, …. ‘d4’] 所以, 下面的列表生成语句就是先从A中取元素,然后再在B中取元素,做加法,最后形成一个列表。

[a+b for a in A for b in B]

由此,我们可以得出结论 函数 cross(A,B) 就是生成了一个新的列表,这个列表中每个元素都是来自于A和B的组合。

如果我们调用下面的语句:

CELLS = cross(ROWS, COLS)

CELLS变量的值就是一个列表, 其中包含了 [‘A1′,’A2′,’A3′,’A4’ …. ]

CELLS的意思是单元。 我们用它来保存数独中每个格子的地址。

作业

1. 已经知道一个列表A,其中都是数值, 请构造一个新的列表,其中每个元素都是列表A中元素的3倍。


2. 一个字符串A,内容是’this is good’, 请构造一个新的列表, 其中每个元素都是字符串A中字符的大写, 比如 [‘T’,’H’,’I’, ‘S’, ‘I’, ‘S’, ‘G’, ‘O’, ‘O’, ‘D’]


3. 理解CELLS中的元素值, 看它是怎么形成的。

解数独,学编程-Python篇-2

python

问题解决是学习编程、学习计算机科学的核心。

很多少儿编程班都是带孩子一步一步地做一个游戏。学生做出来了,觉得很高兴,也挺有成就感。可是后来一想,除了做这样一个游戏之外,似乎再做别的游戏就不太会了,摸不着头脑。

这种现象出现的主要原因是老师没有教到问题的分析和思维过程。依样画葫芦很容易,但是学生要学到知识的迁移,举一反三,就不那么容易了。

解决数独问题就是一个具体的问题。 我们这一系列文章要通过解决数独问题,教会你怎么分析问题,怎么把问题在程序中表达出来,怎么设计算法,最后怎么编程来解决问题。

有些情况需要学生先理解人力是怎么解决问题的,然后把人解决问题的方法(算法)转换成计算机操作的步骤,然后用编程语言来实现。有些情况计算机解决问题跟人力解决问题的方法是截然不同的,因为计算机和人相比,有自己显著的优点和缺点。设计算法的时候需要充分利用这些优点。

编程解决问题,首先需要知道如何在计算机上表示那些描述问题的数据,然后设计算法,把这些表示转换成其它形式,直到问题解决。

上一篇介绍了解决简单数独问题时,人们常用的办法。 本次我们会介绍数独在Python中的表示方法。

数独在计算机程序中的表示

计算机其实是非常笨的。因为它只懂一些简单的事情,比如数字, 字符, 列表等等这些原生的数据结构。 而其它所有的信息都必须由多种简单的数据结构组合近似地来表示。把事实信息用这些数据来表示可以看做是一个”编码”的过程。

我们要看一下如何对数独编码,在计算机中表示出来。

从上一次的文章中,我们已经给数独中的每个格子都编了号,

  1. 每一列用数字1到9来表示,
  2. 每一行用字母A到I来表示,

那么,第一行第一列就是A1, 第一行第二列就是A2. 最后一行最后一列是I9。


在Python编程语言中,有一种原生的数据结构,叫做列表。 把一些元素放到[] 中,互相之间用,隔开就会创建列表,比如[1,2,3,4,5] 就是一个有5个数字元素的列表。 [’a’,’b’,’c’,’d’,’e’]  是一个含有5个字符元素的列表。   其实列表中的元素类型可以不一样的, [1,2,3,’a’,’b’,’c’] 也是合法的。

有读者可能会问, 数独既有行,也有列,怎么用列表表示呢?  这个问题好解决, 只要列表中套列表就可以了。

数独第一行可以用 [‘A1’, ‘B1’, ‘C1’, ‘D1’, ‘E1’, ‘F1’, ‘G1’, ‘H1’, ‘I1’] 来表示, 第二行可以用 [‘A2’, ‘B2’, ‘C2’, ‘D2’, ‘E2’, ‘F2’, ‘G2’, ‘H2’, ‘I2’]

那么前面两行可以放到同一个列表中,

[ [‘A1’, ‘B1’, ‘C1’, ‘D1’, ‘E1’, ‘F1’, ‘G1’, ‘H1’, ‘I1’],

  [‘A2’, ‘B2’, ‘C2’, ‘D2’, ‘E2’, ‘F2’, ‘G2’, ‘H2’, ‘I2’] ]

我们介绍过单元的概念,就是包含某个格子的行,列和3×3方格。

下面就是包含了一个数独所有单元的列表的例子, 你可以分析一下,是不是这样的。

作业

语法知识:

我们这次讲了列表,列表的生成在Python中的语法是 []。比如下面的语句就生成了一个名字为aList的列表,其中还有三个数字元素。

aList = [1,2,3,4]

如果数独中一个格子中有不确定的值,我们可以把所有的可能的值放进去。 比如下面数独的例子, 我们单看第一行, 用列表可以这样表示:

line1 = [‘123456789′,’7′,’8′,’123456789′,’123456789′,’123456789′,’123456789′,’123456789′,’123456789’]

1. 请用这样的方法, 表示第二行, 第三行

line2= [] ?

line3 = [] ?

2. 我们根据第一行已经给定的数字 7 和8 ,可以判断出第一行其它数字不可能是7或者8, 所以,第一行的表示可以修正为:

line1 = [‘1234569′,’7′,’8′,’1234569′,’1234569′,’1234569′,’1234569′,’1234569′,’1234569’]

请问, 如果我们根据第一列给出的数字信息, 我们可以如何修正第一行?

同样的,我们可以根据第二列给出的数字信息,如何修正第一行?

如何根据左上角3×3的信息,修正第一行?

3. 你能用同样的方法,表示一下别的行,然后修正吗?

如果你遇到了问题,或者想讨论一下,请在下面留言哦。

世间爱书之人有此一物,岂不美哉

搜索英文书

搜索中文书

懂得自然懂啦。

最佳书单

MIT best seller books https://mitpress.mit.edu/best-sellers

鲸小小第一期夏令营闭营感想

鲸小小 科技创客夏令营

日子一天一天过去,像白开水一样平淡无味。

所以有人就发明了节日,给某些日子特殊的意义,于是就有了期盼。当这些日子到来的时候,大家一起做一些相同的事情,说一些相同主题的话,强化了意义,也增强了归属感。

过去的周五就是一个不同寻常的日子,因为这是是鲸小小第一期夏令营成功结营的日子。

编程大冒险

夏令营的主题为”像工程师一样思考”。 非常重要的 成果沟通环节放在了最后。这个环节的初衷就是:

让孩子们温习和总结一周学习的收获,培养和锻炼孩子们在公众场合,以团队的组织形式,用自己的语言介绍刚刚习得的技能、做出的成果、新颖的发现和有反思的感想。

Cason Wang

无论孩子们在台上发言时表现如何,他们从认真准备、反复练习到勇敢地面对大家,生动演讲的整个过程,以及伴随这个过程的体验和成长, 我们认为对于孩子是最有价值的 。

创造一种环境,让孩子们像种子一样自己发芽,自己长大,自己开花。

Cason Wang

回忆

开营伊始,老师们就跟小营员们宣讲了鲸小小的三多理念: 多提问, 多尝试, 多分享。 这三多也是鲸小小老师日常备课、上课的指导, 给孩子们创造思考和动手实践的环境,激发兴趣和创造力。 在五天的活动当中,4岁到12岁的孩子们分别体验了机械搭建、创意编程、智能硬件编程和3D打印多个技术学科的启蒙。孩子们发现,借助电脑和编程,他们可以做自己从来没有想到过的事情。

成果沟通主要分两部分,一部分由营员介绍学习和实践的内容,即所学和所做,从科技和学习的角度来总结收获;另一部分就是所感,孩子们谈一下在新的环境中,跟营员、跟辅导老师朝夕相处时的感受,自己帮助了谁,谁对自己帮助最大,从人、团队和社会技能的角度来总结。

营员们形成自己的团队后,一起讨论展示的内容,一起创造要展示的实体成果,各斯其职。孩子们看起来年龄小, 表现得一盘散沙,但是当他们在团队中有了自己明确的职责后,就会克服遇到的困难,一本正经地履行自己的职责。这背后的原因有可能是同伴的压力,可能是希望得到家长和老师的认可,也有可能自己纯粹觉得好玩。

要给孩子所做的事情赋予意义, 因为这样可以唤起孩子做事的动力。

Cason Wang

夏令营成果展示的环节当然是很成功了,不管是四岁的小宝贝,还是十二岁的小学生,我们到最后看到了自信和享受,家长也见证了孩子在鲸小小的成长和收获。

完毕之后,不少家长都在朋友圈里分享孩子的精彩片刻,分享体验和感受。

证书是一种荣耀

“咋就那么乐呢!”

一个爸爸在朋友圈里分享时说的话

总结

现在回味成果展示,觉得有些细节令人印象深刻,很值得再说一下。

学为榜样的延彬

延彬这个十几岁的孩子给人的印象永远是彬彬有礼,谦虚好学。

介绍中

爸爸说家里乐高都快堆成山了,有良好的搭建基础。怪不得在我们的搭建项目中,表现出很强的动手能力和创造力。

他做了一个拳击机器人,周围的小朋友争先恐后地拿着玩。3D打印一节课就消化了老师原来设计的几节课的内容。他设计了一个独角兽,打印出来展示给小朋友。Micro:bit的项目中,他在学校里有学过一些Scratch的基本知识,学习给micro:bit编程的时候,能够很快地把知识迁移到新的平台上来。项目中实现不同的功能,我们总是从物理知识入手,然后过渡到传感器,最后反映到程序中的代码。比如智能指南针,我们从磁铁的磁场出发,同性相斥,异性相吸,讲到地球的磁场,然后再讲到把磁场的变化转换成电信号的霍尔效应,指南针传感器,最后就是在代码中怎么获取磁场的强度,获取角度。 从单个功能的实现出发,过渡到多个功能的集成。 除了使用编程平台实现功能,也学习了用流程图来分析复杂的逻辑。他理解和使用输入输出模型来分析一个简单的系统也很到位。

可以看出来,这几天的信息量很大,但是由于我们课程和活动的设计循序渐进,由易到难,而且动手和动脑交替进行,延彬一直保持了很高的学习兴趣和参与热情。
在最后的分享展示环节,我们看到了延彬感性的一面。

他非常照顾比自己小的队友,耐心地解释,细心地配合。小队友把要讲的任务都推给他,他也欣然同意,没有任何的不悦。 分享自己感想的时候,他说“鲸小小的老师很善良”, 让在场的家长门都笑起来,而老师们都觉得是最高的认可;他感谢妈妈的坚持,所以他才有机会参与到鲸小小的夏令营,他每天都很开心,我们的老师和活动给了他大大的惊喜。

要分别的时候,我分明看到他的眼圈有些红。

晚上的时候,延彬的妈妈微信里说,当时差一点就哭了,不想让大家看到落泪,就急匆匆地赶紧离开了。实际上,我们对这样的好学生也是恋恋不舍呀。
希望他把“三多理念”放到自己的今后的学习中,取得自己的成功。

临阵不乱的曼曼

侃侃而谈

曼曼是我们编程班的学员,这次夏令营活动参与的项目也是编程主题。她善于动脑筋,也有一种不解决问题誓不罢休的精神。在整个团队中,她负责整个项目的介绍,指挥别的小朋友做出配合。在排练的时候,我们发现预先要讲的内容有点多,于是老师跟她商量裁一点内容。

这里就挖下了一个坑。

正式演示的时候,曼曼还是按照原来的讲稿讲,结果跟PPT有点对不上,这个时候有点紧张了。后面遇到的问题就是不靠谱的队友:1)负责演示顶牛游戏的两个小男孩提醒了好几声才进入状态。比赛的时候操作也出现点小问题2) 负责翻页的小朋友入戏太深,忘了翻页,曼曼在着急的时候,声音洪亮地提醒 “下一页” 遇到这些问题的时候,沉着冷静,跟作为观众的家长保持了很好地互动,顺利完成了用名字拼音的首字母来设计昵称的游戏。

显而易见曼曼在最后的展示环节表现出了很强的领导力,尽管我们的老师认为她的水平还没有正常发挥出来,因为在排练的时候她做得更加出色。

晚上,曼曼的妈妈发来微信,跟我们絮叨她今天有点对不起曼曼,因为没能赶得上女儿的演示;说曼曼在展示的时候,没有看到妈妈,有点失望啦;说因为这事,孩子在家里抱着爸爸大哭了一场;然后说用孩子用看动画片的方式来犒劳了自己……
孩子的喜怒哀乐呀,不跟孩子经历这一切你是体会不到的。 孩子潜在的领导力,在这种看似危机的场合下才能体现出来。

老师的作用,就是以百倍的耐心,绞尽脑汁地来创造这些时刻,创造这些让每个孩子需要踮踮脚,甚至跳一跳才能达成成果的时刻,创造这些可以激发自己内心的驱动力, 与同伴合作发出光芒的时刻。

Cason Wang


科技启蒙知识固然重要,但是孩子在接受知识过程中前前后后的体验,在目标驱使下的努力,成功或者失败,再孩子的成长中是更加重要的。

就不上台的小木头

就不上台的小木头

小木头看起来来是一个安静、聪明的小男孩。他过完暑假就上小学了。因为他特别喜欢玩编程,坚持要玩智能板,于是就跟延彬成了队友。他的理解能力还算可以,编程界面也可以操作,基本的程序也能写出来,但是对于那些理论就毫无感觉了。

我们要求每天一张工作簿,上面有所学知识的各种问题,他开始试着用拼音来回答,第一天很棒,第二天回答了一个问题,第三天开始就彻底放弃了….

第一天小木头说: 我不想上台说话。第二天重复,第三天重复… 可像一个无限循环了。但是每次老师都不置可否。

队友延彬就劝他,“咱们一起展示啊。我来说,你不用说话就行。” 于是小木头点点头同意了。

排练的时候,小木头拿着一块智能板,当队友介绍到所学的知识时,他就上台,按一下板上的一个按键,让队友手里的智能版显示一个跳动的心形。然后队友按下按键,他手里的智能版就显示一颗降落的心形。 小木头举着板子,给大家展示,脸绷地紧紧的, 果然一句话也没说。

排练完了,小木头又开始了循环模式 “我不上台, 不说话也不上台……” 我们以为他就真得不上台了。最后还是队友延彬给力,跟小木头沟通了一下下。
我们在最后的展示环节,看到小木头与队友紧密配合,完完整整地给大家做了展示。
晚上回家的时候,小木头问妈妈: “你今天为什么没有去看我们的活动啊? 我也上台了!”

现在看来,小木头的循环模式就是一种寻求帮助和鼓励的信号。 在队友的帮助下,他克服了自己的压力, 有了一点点小突破,心里似乎还有点小自豪。

后记

老师们对于这些孩子们也是依依不舍,大家决定要录一段小视频。说些什么呢? 我说: “我们开营函里面那一句话很好,我们就说,来鲸小小夏令营,见证孩子的成长与欢乐吧。 “ 欢迎更多的小朋友来鲸小小科技夏令营,见证孩子的成长与欢乐!


“科技启蒙,兴趣的激发是最难的一件事,你们的夏令营做到了”。

一位从事K12教育多年的家长这样评价我们


“生活照顾的比我都好,老师比亲爹亲妈有耐心, 再次感谢鲸小小, 在孩子心中留下了美好的夏日回忆”

一位营员的妈妈 给我们的赞


感谢孩子们,感谢家长们,我们会一直努力的。

首先就是,我们不要骄傲呀!

世界,您好!

人们在学习编写第一个程序的时候,往往会选择一个非常简单的“hello world”程序来练手。这个过程就像创造了一个新的东西,而这个东西迫不及待地跟这个世界打招呼。

一个简单的程序宣告其存在性。

一个小小的个人博客网站也宣告了今天的存在。

Hello World

Powered by WordPress & Theme by Anders Norén