我如何教孩子Python

我如何教孩子Python

我的主要工作与数据和编程相关 R,但在这篇文章中我想谈谈我的爱好,它甚至可以带来一些收入。 我一直有兴趣向朋友、同学和同学讲述和解释事情。 我也一直很容易与孩子们找到共同语言,我不知道为什么。 总的来说,我认为抚养和教育孩子是最重要的活动之一,而我的妻子是一名老师。 因此,大约一年前,我在当地的 Facebook 群组中做了广告,组建了一个群组,开始每周教授一次 Scratch 和 Python。 现在我有五个小组,自己在家上课,还有个人课。 我将在这篇文章中告诉你我是如何过上这种生活的,以及我是如何教育孩子的。

我住在加拿大艾伯塔省卡尔加里,所以有些事情会因地制宜。

房间

从一开始,练习空间的可用性就是一个主要问题。 我尝试寻找按小时出租的办公室和教室,但没有取得多大成功。 我们的大学和 SAIT(相当于麻省理工学院)提供有或没有计算机的课程。 结果那里的价格不太人性化,最后发现学校不让未成年人入住,而且SAIT一般只租给自己的学生。 所以,这个选项就被淘汰了。 有许多办公中心按小时出租会议室和办公室,有些公司提供多种选择,从完整的教室到可容纳四个人的房间。 我曾抱有希望,因为艾伯塔省是一个石油大省,自2014年以来我们就陷入了不景气的危机,很多商业空间都空了。 我不应该抱有希望;价格实在是太离谱了,一开始我什至不相信。 对于业主来说,坐在空荡荡的办公室里支付费用比扔掉办公室更容易。

那一刻,我想起我定期缴纳税款,以及我们亲爱的州,或者更确切地说,卡尔加里市是否有任何东西。 事实证明,还真有。 这座城市有曲棍球和其他花样滑冰运动的竞技场,在这些竞技场中,有一些房间可供粗犷的冰战士讨论未来战斗的策略。 简而言之,每个竞技场都有几个房间,里面有桌子、椅子、白板,甚至还有一个带水壶的水槽。 价格相当实惠——每小时 25 加拿大图格里克。 我最初决定上一个半小时的课,所以我把一节课的价格定为每节课 35 美元,每节课 XNUMX 人,以补偿房租,并在我的口袋里装点东西。 总的来说,我喜欢在竞技场锻炼,它解决了一个问题——大多数讲俄语的人住在城市的南部,而我住在城市的北部,所以我选择了大约在中间的一个竞技场。 但也有不便之处。 加拿大的官僚机构是好的和友好的,但是,温和地说,可能有点笨拙。 当你习惯了节奏并提前计划时没有问题,但有时会出现不愉快的时刻。 例如,在城市的网站上,您可以方便地选择时间和地点并预订房间,但您无法以任何方式付款。 他们自己打电话并接受银行卡付款。 您可以前往办公室并以现金支付。 当我等待他们支付第二节课费用的电话时,有一个有趣但不太愉快的时刻,但电话没有来,最后一天我到办公室迟到了十五分钟。 我不得不一脸无礼地接近保安并谎称房间已被预订。 我们加拿大人相信我的话;他们平静地让我进去,没有检查任何东西,但如果人们还没有在去上课的路上,我就不会这样做。

我就这样度过了冬天和春天,然后发生的变化成为了最后一根稻草。 首先,办公室不对访客开放,他们提出可以通过拐角处的电话接受付款。 我在过道上坐了至少半个小时才通过。 其次,如果之前我亲爱的阿姨收了我一个半小时的钱,现在有一个女孩接电话说只收了一个小时的钱。 当时我的团队要么是三人,要么是两个人,额外的12.5美元一点也不多余。 当然,我是有思想的,但如果我老婆把我扔到街上,那就没人教了。 那时我还失业。

我决定去图书馆。 图书馆完全免费出租精彩的房间,但有一个问题——不能进行商业活动。 即使是慈善机构也不允许在那里筹集资金。 有人告诉我,这没有特别控制,主要是入口处不要拿钱,但我真的不喜欢违反规定。 另一个问题是房间经常被占用,很难在一个地方同时进行预定的课程。 夏天和初冬的时候我在图书馆教书,我必须选择有空间的图书馆,最后换了五六个图书馆。 然后我开始提前两个月预订座位,即便如此,我也只能在一个小图书馆里做到这一点;其余的经常在规定的时间内没有座位。 然后我决定在家上计算机课。 我挂了板子,从广告上买了第二张桌子和几个旧显示器。 在工作中,公司给我买了一台功能强大的新笔记本电脑,因为在我的电脑上进行分析几乎需要 24 小时。 所以,我有一台新的旧电脑,一台旧的旧电脑,一台我的孩子压碎了屏幕的笔记本电脑,以及一台我自己压碎了屏幕的旧上网本。 我将它们全部连接到显示器上,并在所有地方安装了 Linux Mint,除了上网本,我在上网本上安装了一个非常轻的发行套件,看起来是 Pappy。 我还有一台旧的新笔记本电脑,花了 200 美元买的,我把它连接到电视上。 同样重要的是,我们的主人最近更换了窗户,房间里不再是可怕的、摇摇欲坠的脏乱差,我们现在有了新的白色框架。 我妻子把客厅、厨房和第二间卧室留作幼儿园,所以整个楼层都是纯粹的教学用的。 现在一切都很好,让我们继续教学吧。

划痕

我开始使用 Scratch 语言教授编程的基础知识。 这是一种使用现成块的语言,由麻省理工学院发明。 大多数孩子已经在学校见过 Scratch,所以他们很快就能学会。 有现成的课程和教案,但我一点也不喜欢。 有些很奇怪——例如,创造你自己的故事。 整个程序由无数块组成 say '<...>' for 2 seconds。 可以看出,它是由非常有创造力的个人发明的,但是通过这种方法,您可以教如何编写经典的印度面条代码。 我一开始就讲DRY之类的原理,其他的集合任务都还不错,但是孩子们很快就抓住了本质,开始像机关枪一样做。 结果,他们在一节课中完成了本应在五节课中完成的任务。 搜索和选择任务需要花费大量的个人时间。 总的来说,Scratch 更让人联想到的不是一种语言,而是一种 IDE,您只需要记住在哪里单击以及在哪里查找内容即可。 一旦学生或多或少适应了,我就会尝试将他们转移到 Python。 甚至我七岁的女儿也会用 Python 编写简单的程序。 我认为 Scratch 的好处是它包含以有趣的方式学习的基本概念。 由于某种原因,每个人无一例外地都很难理解变量的想法。 起初,我快速浏览了这个话题,然后继续前进,直到我面对这样一个事实:他们甚至不知道该怎么办。 现在我花了很多时间在变量上并不断地返回它们。 你必须做一些愚蠢的锤击。 我改变屏幕上的不同变量,让它们说出自己的价值观。 Scratch还具有控制结构和值检查,例如 while, for или if 在Python中。 它们非常简单,但是嵌套循环存在问题。 我尝试用嵌套循环给出多个任务,以便其操作清晰。 之后我继续讨论函数。 即使对于成年人来说,功能的概念也不明显,对于孩子来说更是如此。 我花了很长时间谈论一般功能是什么,我谈论了一个接收物品作为投入并发出货物的工厂,谈论了一个用原材料制作食物的厨师。 然后我们用产品制作一个“制作三明治”程序,然后用它制作一个函数,将产品作为参数传递给该函数。 我用Scratch完成了函数的学习。

蟒蛇

有了 python,一切都变得更简单。 有一本好书《Python for Kids》,我就是用这本书来教的。 一切都是标准的——线路、操作顺序、 print(), input() ETC。 语言通俗易懂,幽默风趣,孩子喜欢。 它有一个许多编程书籍都共有的缺陷。 就像著名的笑话——如何画猫头鹰一样。 椭圆形-圆形-猫头鹰。 从简单的概念到相当复杂的概念的转变太突然了。 我需要几次会话才能将对象附加到点方法。 另一方面,我并不着急,我以不同的方式重复同样的事情,直到至少有一些图片拼凑在一起。 我从变量开始,再次敲定它们,这次是在 Python 中。 变量是一种诅咒。

几个月前,一位聪明的学生在 Skratch 上熟练地单击了变量,他看起来就像新大门前的公羊,无法将 X 与 Y 相加,而 Y 显然写在黑板上的一行上面。 我们重复! 变量有什么作用? 名字和含义! 等号是什么意思? 任务! 我们如何检查平等性? 双等号! 我们一次又一次地重复这个,直到完全开悟。 然后我们继续讨论函数,其中关于参数的解释花费了最长的时间。 命名参数、按位置、默认情况等。 我们还没有到达任何组的班级。 除了 Python 之外,我们还研究了书中的流行算法,稍后会详细介绍。

其实,训练

我的课程结构是这样的:我讲半个小时的理论,测试知识,巩固所学知识。 是时候进行实验室了。 我常常得意忘形,讲一个小时,然后就剩下半个小时练习。 我学python的时候看了课程 算法和数据结构 来自 MIPT 的基里亚诺夫。 我真的很喜欢他的演讲和讲座的结构。 他的想法是这样的:框架、语法、库正在变得过时。 架构、团队合作、版本控制系统——现在还处于早期阶段。 因此,算法和数据结构仍然是已知的很长一段时间,并且将始终处于相似的形式。 我自己只记得帕斯卡学院的整数。 由于我的学生大多很年轻,从七岁到十五岁,我相信对于他们的未来来说,打好基础比用Python快速编写一个平台游戏更重要。 不过,他们更想要平台游戏,我理解他们。 我给他们提供了简单的算法——冒泡、排序列表中的二分搜索、使用堆栈的逆波兰表示法,但我们对每一个算法都进行了非常详细的分析。 事实证明,现代的孩子原则上不知道计算机是如何工作的,我也告诉你。 我尝试在每堂课中将几个概念联系在一起。 例如,计算机 - 内存/百分比 - 内存由单元组成(我让你拿着内存芯片,猜猜有多少个单元) - 每个单元就像一个灯泡 - 有两种状态 - true/false - 和/或 - 二进制/十进制 - 8 位 = 1 字节 - 字节 = 256 个选项 - 一位上的逻辑数据类型 - 一个字节上的整数 - float 两个字节 - string 在一个字节上 - 64 位上的最大数字 - 来自先前类型的列表和元组。 我保留认为,在真实的计算机中,一切都有些不同,这些数据类型的内存量也不同,但最主要的是我们自己在这个过程中从更简单的数据类型创建更复杂的数据类型。 数据类型可能是最难记住的事情。 这就是为什么我在每节课开始时都会进行快速热身 - 一个学生命名数据类型,下一个学生给出两个示例,依此类推。 结果,我发现连最小的孩子都高兴地大喊——漂浮! 布尔值! 七、五! 披萨,汽车! 在演讲期间,我不断地拉第一个或另一个,否则他们很快就会开始挖鼻孔并看着天花板。 每个人的知识水平都需要时不时地检查一下。

我的学生总是让我感到惊讶,他们的愚蠢和意想不到的聪明才智。 幸运的是,更多的时候是有智慧的。

本来想多写点,结果只是一张纸。 我很乐意回答所有问题。 欢迎大家百般批评,只是请大家在评论中多一些宽容。 这是一篇好文章。

来源: habr.com

添加评论