你好 我叫Michael Kapelko。 我从事专业软件开发已有十多年了。 近年来致力于iOS。 我在业余时间开发游戏和游戏开发工具。
总览
今天,我想分享一下我教孩子们编程的经验。 我将讨论以下主题:
- 学习过程的组织
- 学习计划
- 记忆游戏
- 开发工具
- 课程
- 结果和计划
学习过程的组织
学习过程是企业社会责任的一部分:公司为设备提供了一个房间,并将希望尝试扮演老师角色的员工与希望教育孩子的员工联系起来。 所有这些都是自愿完成的。
潜在教师分为几组,因此每组包含三名教师:经验丰富的一名和两名新手。 这样的三位老师带领一班学生。 按年龄和技能将学生分为几类。
我于2018年第二次作为老师参加了该计划。孩子们大约十岁。 我们的小组从2018年10月到12月的每个星期六(10:00-12:00)都很活跃。 利用我作为老师的职位,我还把我的妻子带入了一个学生。
学习计划
我第一次参加该计划时,我们的小组相当不专心地教孩子们:我们提出了一些简单的任务来解释不同的操作员。 到课程结束时,我们没有什么可以评估,分析和共享的具体内容了。
我第二次决定要和孩子们一起制作一个记忆游戏。 如果每个孩子都能在一个小时内从头开始创建一个简单的记忆游戏,我决定考虑该课程是否成功。
为了实现这一目标,我们在每节课中都从头开始重新创建了相同的游戏。 我想强调一点,我们没有使用个人帐户来保存进度。 我们的任务是将创造游戏的技能保存在头脑中,而不是PC。
记忆游戏
让我们看看什么是记忆游戏。
1)在最简单的情况下,我们有16张卡,其中只有8张是唯一的,其余8张是唯一卡的重复。

如您所见,我们只有两只带猫的卡片,只有两只带狗的卡片,等等。
2)开始时,我们将卡片洗牌并朝下放置。

3)第一位玩家转两张牌。

4)如果卡不同,则将它们再次面朝下。

5)下一位玩家转另一张牌。

6)如果卡片相同,则将其从字段中删除。

游戏的目的是从现场移除所有卡牌。 这里没有比赛,因此可以单独玩游戏。
一方面,记忆游戏非常简单。 另一方面,游戏实现要求基本功能,每个或多或少复杂的游戏都具有:
开发工具
我们使用Scratch作为开发工具。 Scratch是教孩子们编程的好工具,因为每个动作,每个操作都以图形方式表示。
例如,您可以使用以下脚本在1秒内将猫旋转360度:

这是实际的样子:

我想强调一下,Scratch是一种相当成功的解决方案,可以以图形方式表示代码。 例如,SAP的付费解决方案使用相似的多维数据集概念来编程逻辑:

用户只能在预定义字段中输入值。 如果用户想要更多功能,则必须求助于脚本。
就我个人而言,我从未见过Scratch出现任何变慢的情况,SAP的解决方案中有很多。
第一课
第一课是入门课程,我们没有使用PC。
该计划是:
- 见面
- 用卡玩记忆游戏
- 学习算法的概念
- 详细介绍游戏的算法
- 分析课程
1)会议
老师和学生都围成一圈。 这使所有人平等,并使每个人成为团队成员。
第一队成员告诉他的名字,以及他决定参加该课程的原因。 第二个团队成员和其他成员首先重复每个前一个团队成员的名字和故事,然后再说出自己的名字和故事。
看起来像这样:
- 约翰:“我叫约翰,我要去学Scratch,因为父亲强迫我去”
- 亚历克斯:“这是约翰,他在做Scratch是因为他父亲希望他这样做。我叫Alex,这是我在Scratch的第四年。”
- 安:“那是约翰,他的父母强迫他做Scratch。这是Alex,他是Scratch的资深人士。我是Ann,是新手老师,所以我将与大家一起学习”
这种会议形式具有以下目标:
- 互相认识
- 公共空间
- 每个人都在圈子中,而不是在办公桌前,这可以防止PC游戏分散孩子的注意力
- 平等
- 老师和学生都在同一个圈子里,这使每个人都平等地成为团队成员,没有等级
- 注意事项
- 每个团队成员应认真倾听,以便能够正确重复别人说的话
- 意见反馈
- 每个团队成员在表达想法时应尽可能清晰,否则没人会重复它们
- 好玩
2)记忆卡游戏
- 从两副牌中取出8对相同的牌
- 将卡片朝下放在4 x 4网格中
- 学生们在单桌旁站起来
- 每个学生一个接一个地翻牌
4.1。 如果纸牌匹配,则将它们从现场取出
4.2。 如果卡片不同,它们将再次面朝下
学生渴望玩桌面游戏。 在游戏聚会中,老师大声说出游戏算法中的每个步骤。
经过几次聚会,是时候找出什么算法了。
3)算法的概念
- 先问学生,听见他们找出自己的水平
- 纠正学生说出的答案(如果他们接近预期答案)
- 要求学生编写一种算法,将一个人从“房间外站立”状态转移到“坐在电脑上工作”状态
学生喜欢去黑板上写字,因此我们要求每个学生一次来编写算法的单个步骤。 最活跃的学生应该严格遵循算法来执行算法。
4)游戏的算法
要求学生编写游戏的算法。 同样,让学生来到黑板上,一次添加算法的一个步骤。 算法准备就绪后,再次玩纸牌游戏。 现在,每个学生都应该说出他执行的算法步骤。
看起来像这样:
- 约翰:“将16张卡片朝下放置”
- 亚历克斯:“翻牌”
- 保罗:“如果卡片不同,请再次将它们的面朝下”
- 丹:“再换一张牌”
- 迈克:“如果纸牌匹配,将它们从赛场上移开”
5)分析课程
第一堂课就是这样。 老师终于有时间讨论课程:讨论孩子,害羞和活跃的孩子的方法,计划下一堂课。
我们有以下决定:
- 安排学生,让活跃的学生坐在害羞的学生旁边,如“ active-shy-active-shy-etc”,这样我们就不会最终在房间的不同侧出现两组害羞和活跃的学生,这会影响工作效率。
- 只接受来自学生的准确答案,因为活跃的学生喜欢扭动,这会妨碍纪律。
第二和第三课
我们以相同的会议开始每节课:我们将围成一圈站起来,说出我们的名字和所做的事情。 那些什么都不做的人应该说为什么。 和以前一样,每个人都应该首先重复以前的团队成员所说的话。
我们花了第二节课为运动场的某个项目创建需求,然后在Scratch中创建该项目。 这取得了一定的成功。
我们在第三课中尝试创建16个项目并将它们排列在4x4网格中。 由于无法向学生解释坐标系,我们惨遭失败。 显然,课程计划只是计划,现实有其自己的要求。
我们看到了两种解决问题的方法:
- 继续学习可能在课程结束前没有完成游戏的坐标系
- 更改游戏要求,以便不需要坐标系
我们走了第二条路,因为毕竟我们不是学校,我们的目标是教孩子们创造游戏,即在实践中使用技能,而不是理论。 这就是为什么我们将16x的圆圈替换为4x4网格的原因。
这个解决方案引起了我的一些想法:
- 人们通常可以找到一条更简单的途径来解决问题
- 尽管不太灵活,但此路径更易于理解
- 当绝对必要时,可以在更晚的时候增加难度以增加灵活性
- 简化使目标更接近目标,复杂化使目标朝相反方向发展
第四课和其余课程
第四课标志着在课堂上提出要求的结尾,因为这样做开始需要花费太多时间。 我们再次选择实践而不是理论来满足最后期限。 这次,所有要求均在上课之前进行。 不过,没有人读过它们。
我们在第四和第五课中用圆圈创建了16个项目,选择了一对项目并进行匹配。
第六课,我们从头开始重新创建完整的游戏。 每次学生越来越快地创建完整的游戏。 在第八课中,我们引入了排行榜,以跟踪每个学生重新创建游戏特定部分的速度。
最后一课
当上一堂课临近时,每个人都可以在两个小时内或多或少地从头开始创建记忆游戏。
这是上一课的排行榜(名称被隐藏):

排行榜是俄语,以下为字幕翻译:
在这里,您可以见证最快的学生从零开始创建记忆游戏的过程:只需半个小时。
结果和计划
结果超出了我的预期:
- 三个学生在一小时或更短的时间内就做到了
- 两个学生在一个半小时或更短的时间内就做到了
今年,我计划进行另一轮的记忆游戏娱乐。 但是,我将用Opensource Game Studio工具替换Scratch:学生将使用Lua,Git和GitHub Pages。

更新: 教人们在2019年编程