作者/分享人:陈世欣 来源:Chat 实录
12月05日周一晚8点30分,GitChat团队迎来了《在家里教孩子玩Scratch和学Python编程》的主题交流。以下是主持人黄威整理的问题精华,记录下了讲师陈世欣和读者之间关于儿童学编程及教育等问题的精彩片段。
1 问:小孩子几岁比较适合开始学习编程?或者有没有一个时间表?什么时候开始准备,什么时间学什么层次的比较好?
答:一般五岁左右就可以,通过在线的教学网站比如code.org来学习,启蒙一下。六岁后就可以开始了,最开始可以通过改一些动画类的小应用如万花筒,多媒体贺卡等,玩一玩。逐步切入到改编一些孩子喜欢的场景化的小游戏。
工业级的语言竟还是在十岁之后再学习,如Python,Html,Javascript都很好学。建议在了解熟悉了语言基础后,还是要以一些基本的算法为核心来教学。
外面的各类机器人编程,乐高机器人等也可以去玩一玩,包括单片机等等。但我觉得不用花太多时间,这个其实并不是编程的核心,一般程序都太简单。没有程序员是通过学这些机器人编程掌握了核心算法的。作为兴趣启蒙,我觉得很不错。
初中以后如果希望进一步发展,建议去找一些竞赛类的试题,许多也是考算法的,包括像google举办的codejam竞赛可以在大人指导下进行。
2 问:怎样长期保持小孩子的兴趣? 开销会有多大?
答:长期是不容易的,我觉得可能是阶段性的。不要急。启蒙阶段一定要让孩子觉得是在玩编程,而不是说在做一件成人的工作,如果觉得好玩,他才会一直做下去。
等大一点了,可以提些有趣的挑战题目,这个时候他需要有成就感,比如说做一本圣经电子版的词频分析,这个挑战听起来就很有意思,或做一个经典密码的解密程序。如果孩子有时候厌倦了,可以暂停,再等一个合适的契机重新激发。网络教育初期可能需要陪伴,否则孩子搞不懂,就去玩自己的网络游戏去了。
如果就学纯软件的话,家长可以用互联网上的免费教材引导,买一些书,然后再花些时间陪伴,这样几乎是免费的如果需要参加外面机构举办的一些竞赛,可能要去上一些专业点的指导班,那么会用高很多,一般奥林匹克信息学竞赛相关的软件课程可能会便宜一些,一年两三千左右。
如果是机器人的教学费用,一年可能要1万多,还不包括购买器材。 如果你的孩子非常有天赋,而自己又不怎么懂计算机编程,也许还需要去请到外面的大学生,或者说工程师来教孩子,Facebook的创始人扎克伯格就是这样去学习的,那这种费用就更贵了,可能一个月就要花三四千。但我想如果真的要到这样的地步的时候,孩子的成就也可能会非常可观,比如可能做出很好的软件,那也是值得的。如果不到这样的水平,我建议也不要花这个钱。
3 问:国外现在比较成功的做法是怎么样的?
答:国外有很多学校本来就有不错的计算机课,也用很多在线的课程来组织学习的,也有很多编程夏令营班教孩子学编程,当然特别有钱的也会去选择一些专业的培训或者一对一培训。
美国有很多博物馆里面组织很多相关的活动,学校也组织一些项目,另外还有很多的竞赛。还和大公司比如google,就提供了学生一些暑期实习机会,叫summer of code。许多有天赋的孩子,就直接在MIT的Scratch官网甚至是github上面去看代码,学代码。
4 问:我儿子现在2岁半,喜欢玩手机和电脑(随机打键盘),有没有适合引导更小的孩子学电脑的软件或者游戏?Scratch编程应该得会简单的英语以及打字吧,怎么进行循序渐进的教孩子英语以及用电脑?
答:两岁半的孩子就让他玩儿吧,有很多智力类的,逻辑类的应用都可去玩儿。程序的核心是逻辑,还是对逻辑了解的越清晰,然后有一定的数学基础就越容易做好编程。
比如可以去玩“”我的世界Minecraft”。Code.org上有些编程的题目,入门启蒙时候可以给一些题目去完成,都是比较简单的,慢慢引导自己找东西玩。
5 问:目前我们的这种方式与乐高机器人编程的方式有哪些区别,乐高的费用比较贵,而且需要购买他们的产品,我想这也是一种商品促销的方式,但是乐高本身确实比较吸引儿童去学习,那么我们的这种方式是否可以持续吸引孩子进入或者持续发展呢?
答:乐高非常伟大,但是要把乐高做好需要有大量的积木块。而且要见过很多的积木块的组合方式,才能做得出好的作品来。一般家庭里面没有那么多空间放大量的乐高,所以就必须借助于教育机构提供大量乐高积木块儿和指导。
其实Minecraft属于一种虚拟乐高积木,你有无穷尽的虚拟积木块可以用,而且不需要再花钱。但是我觉得虽然Minecraft孩子很喜欢玩,可是里面没有逻辑,其实跟编程差的还是很远。更多的是像是一个创作工具。当然,他们也有编程工具,可以做出更好的作品来当这个更加专业,也是需要有编程基础的,美国这边有些夏令营是教孩子用Minecraft编程的。
6 问:对于特别爱玩游戏,也有一定编程基础的孩子 怎么引导他们在这条路上健康的发展下去?
答:Scratch在设计时候就是借鉴了乐高的做法,把代码变成积木块,加了逻辑化和事件等形成的。所以有很多人,一旦迷上了,也是爱不释手,实际上比乐高更好玩,因为它可以无限制地使用更多、更有趣的东西,也可以混合音乐、图片,做出一些效果等等,其实会做得更有趣,还可以直接从网上借鉴别人作品直接做修改。更容易学习,乐趣更多。
可以让孩子来学会改编游戏甚至创作游戏,去理解游戏中设计的一些奥秘。游戏化机制实际上已经大量的被使用在互联网和日常生活里面了,因为游戏化设计就是借鉴了游戏的很多优良的设计点,让用户粘性更强。很多孩子一旦能够自己创作游戏,他获得的成就感其实比玩游戏通关更强,而且反过来促进他对游戏的理解和分析能力就更强。
家长可以一起跟孩子讨论,能不能模仿设计一个简单的小游戏,现在流行的游戏里面有什么地方是特别好,比如说我们家孩子就模仿做过飞机大战的游戏。
实际上这个时候孩子是站在上帝视角,是从一个游戏设计者的视角来看游戏的时候,会更加有趣,孩子一旦当过上帝了,甚至会更愿意做上帝而不是做玩家。
7 问:请问怎么给娃找到各种阶段性小目标,比赛或俱乐部之类的氛围?
答:不要放弃有兴趣的游戏编程领域,空的时候玩一把,调剂下。学习肯定是重要的,特别是五年级需要升初中,更加关键,先提高效率吧。
其实任何大目标都要拆解为很多小目标,不断地引导孩子往前走,每个小目标都是设计得刚好能让孩子把它给完成。如果孩子一直能够把阶段性目标的编程很好地做出来,才有成就感。
如果家长懂计算机编程,很容易去互联网上找到一些合适的编程相关的学习资源,并根据孩子的情况制定一些合适的小目标,比如说在学Scratch初期的时候让孩子掌握基本的动画编程,然后在一起来寻找一些有趣的游戏编程分析和修改。再尝试提出一个小的挑战,让孩子自己创作。
8 问:我家儿子喜欢玩游戏,但是由于五年级课紧,就不许他玩游戏了,我看他连编程也没那么感兴趣了。我们就很有点担心如何平衡学业和游戏的关系,又如何引导孩子在玩游戏过程中提高自己的编程技巧?
答:初期的时候肯定是启蒙和打基础。启蒙就是让孩子喜欢,玩得开心,不断的通过各种编程网站,软件例子,机器人、乐高等让孩子去玩。
打基础的时候呢,就要选择一些有趣的小游戏,小动画题目,把基础知识能够包容进去,在孩子玩的过程中,在做这些有趣的小游戏的过程中,慢慢就学会了基础知识。一些编得比较好的教材就有这样的基础引导性。
如果是工业级的编程,还需要掌握一些算法,这个可能会稍微枯燥一点。最好能够把每个题目,设想有一个故事场景,让它变得很有趣。
可以选择参加一些教育机构的各种相关课程。很多机构愿意提供给孩子插班试听,他就跟其他小孩子一起,对比,学习,就能够发现自己能力还不错,有一些自信心。像上海有少年宫或少科站,可以去学习。
还有一些科创类的竞赛,网上搜索一般都能找到本城市的,科创竞赛、信息学的竞赛等。也可以找一些志同道合的家长带着孩子一起,学习一个下午,或者参加一些相关的夏令营或冬令营。
有条件的可以到美国去参加夏令营,感觉会更好。有一些面向学生或已经工作人员的黑客马拉松等活动,也可以带孩子去感受一下。
9 问:最近买了Seymour Papert 的书(他是LOGO语言的发明者),里面说“让孩子对电脑编程,而不是让电脑对孩子编程,提供一种构建环境,让孩子其主导作用,而不是灌输的教育,现在的编程教育都是面向有一定知识结构的成人,是名副其实的「电脑教人做事」。现在市面上,哪些编程语言或者玩具是符合「让孩子对电脑编程」的?
答:以前把编程作为工具,作为一种工作的手段。但实际上,编程是一种信息加工和展示的控制方式。成人用它来工作,孩子可以用来玩,毕竟有很多的动画,很多的图形或声音的处理都是很有意思的事情。
也可以把它变成一些互动性的,游戏化的做法。这时候动画、好玩的声音图像的处理,有趣的游戏就是孩子的应用,对孩子来说计算机其实个玩具或者创作工具,根本不是做事的工具。不是写程序而是在玩程序。
目前看来是Scratch就是这样一个比较完美的工具,它有一个庞大的国际化在线社区,全球几百万的孩子都在这里分享作品和交流,这些作品的代码大都是为了玩而不是工作,那对孩子来讲,他们就是在一起在玩这些代码,玩计算机。
10 问:另外一个计算机领域的先驱Alan Kay的TED中,也是讲孩子编程的。1960年代的时候,艾伦·凯参与开发了图形用户界面(GUI)、面向对象编程以及个人电脑本身。后来几十年在各大计算机公司工作的他则不断的刷新人们对工具的认识与看法。现在的艾伦·凯则更希望挖掘出计算机革命的深层次意义,他认为计算机不但可以帮助我们认识人体自身不能认识的世界,还能帮助孩子和大人学会思考,去提问。Alan在视频结尾引用Marshall McLuhan的话“孩子是我们传递给未来的信息”。但事实上,孩子就是我们的未来。这些大牛都在儿童学计算机领域有很深的研究,你在教自己儿子学编程的过程中有学到哪些未来的信息?
答:孩子学的这些简单的计算机的编程,没有包含太多的传递给未来的信息,但是编程提供了一个很好的思维模式,他们在有了结构化编程的这么一个思想之后,而他就会考虑到把很多事情,按照一个可复用的方式,高效率的去组织。自己再去玩游戏,会看到很多其他的计算机相关的程序的时候,更容易理解它里面的本质,而找到它的核心点。
在学编程过程中很多信息,我是让他们自己通过互联网来找的。通过互联网,他们找到了很多信息,既可以玩得更好,也可以快速的去跟同龄人同类人去沟通,学到更多的东西,变得更加开放。其实也是提升了他们自己的能力,所以我儿子,数据库和PHP,都是他自己在网上寻找例子,慢慢去学习的。
11 问:现在市场上有没有哪些以Scratch设计的课程,但是不是为了教编程,而是以编程为载体,主要教育其他的数学和科学知识?
答:目前应该没有,因为要学其他的数学和科学知识的话,应该还是以Python这样的效率更高且软件包更多,类库更多的工业级高级语言为主。如果可以的话可以把部分奥数题抽出来,用于做编程实现。
在各个大学的数学模型大赛里面都有类似的编程题库,当然直接参加谷歌的codejam比赛也是个很好的方法,就是难度较高。
12 问:越小的孩子,思维方式和成人差别越大,很多日常交流已不容易把握孩子的思路,身为已有编程经验的父母,如何陪伴孩子接触程序设计?
答:就跟培养兴趣一样,没有足够的投入也难有特别大的兴趣家长只能简化自己的思维方式,化身小白花点时间,孩子会卡在一些常规的初级错误上,不能责骂,要鼓励,要给方法给孩子看一些其他编程孩子的作品和TED演讲。
13 问:小孩子的网络教育效果好吗?需要父母或者老师陪同么?让孩子学习计算机,怎么能有效预防孩子远离网瘾,比如一些已经很宅的孩子?
网络教育初期可能需要陪伴,否则孩子搞不懂,就去玩自己的网络游戏去了。
曾经因为我家老二偷偷玩游戏,我们给他两个处罚选择,一个是跳绳800个,另一个是玩游戏24小时,条件是不吃饭、不睡觉、只能喝水和站着玩。手机pad轮流充电,换着玩,后来他坚持了21小时终于崩溃了,以后不再犯。
远离网瘾,只能是家长对时间和行为把控,定好规则。
我们还罚过孩子不上学,老二在小学二年级时候调皮,不爱上学,就让他一周不上学,在家学习和做功课。后来他憋不住了,想上学了,以后就好了。
14 问:家长就是电脑白丁,怎么帮助孩子去学编程,别说看书,能否给出一个大概的指导路线?
答:电脑白丁,可以找懂电脑的人开个玩编程的清单,从code.org开始,玩Scratch,慢慢升级到工业级语言。也可以从code.org开始,学习Javascript,然后做HTML等网页编程。具体看年龄和孩子的需求。
15 问:很多机器人的编程都是模块化的,包括Scratch,如何引导孩子从模块化编程到代码编程?
答:这个本质是相通的,顺序、循环,条件分支等孩子做多模块编程后,自然看python这样的代码就容易理解。比如,用Python做什么?之前是奥数验算,后面是文本处理,或者是研究密码学。
16 问:奥数对学编程有用吗?如果让孩子参加科技创新大赛,大体应该掌握的知识有哪些?北京一些高中收机器人科技特长生了,是玩乐高就可以吗?还有什么需要孩子掌握才能成为科技特长生?
答:奥数培训对喜欢的孩子来说是非常好玩,又能得到进入名校机会的捷径。对不喜欢的,则是噩梦。
奥数对学习编程有很大帮助,你看codejam的试题,基本上就是计算机奥数题。编程很难标准化,一个程序卡住了,不代表他不聪明不努力。
其实国家和市里的科技比赛很多根本不考编程,主要还是思路和论文。搞清楚历届获奖的主题,找一个合适的钻研出来,有个好的思路和研究成果就好了。
再次感谢图灵,为本场Chat的获奖读者提供了《Scratch编程》和《父与子的编程之旅》等书籍。