编程学习
1.37K subscribers
69 photos
17 videos
7 files
169 links
我不是什么编程高手,不是什么优秀教师,但是我就爱与孩子们一起玩。这里记录了我与几十个孩子边玩边学习编程的心得。
Download Telegram
这个swift playgrounds是真·大师级的设计,但是就是眼睁睁的崩,真的是bug重重堪比光遇。尽快完成后,咱们转战蟒蛇~

附:知道为啥要用github了吧
Grace阿姨贡献一个非常棒的主意,书写一个24点游戏机器人,和24点竞赛机器人。
游戏机器人负责主持游戏,发牌,收结果排名次。
竞赛机器人参与游戏,收到题目后,给出答案,看看谁给出的答案快、多,不同。
为了娱乐和锻炼,我们可能会给出不同的游戏规则。参见wiki https://zh.wikipedia.org/wiki/24%E7%82%B9

贡献者这个想法的是住在伦敦的两个孩子的母亲,她以前是小学老师,一个非常细心的妈妈。用这个游戏陪伴孩子,培养了孩子对数字的兴趣和乐趣~
哈哈哈,故事接龙让娃娃们好开心,接下来我们会有一个群,专门让大家写故事~
哈哈,今天的结果不错
昨天有新的小朋友加入学习,这里我特别整理了一个github使用的小笔记,希望能帮助到新的同学们 https://docs.google.com/presentation/d/1-orBKn3sOVqTNzd34Ow0liEkRum_ui4SFXU1JJ12xfo/edit#slide=id.p
寻找有缘人
今天开启了一个新的Swift Playgrounds小组,现在有三个学生,美东周六下午四点和周四晚上七点上课,一节课一个半小时。如果时间能碰上,我面试一下,可以加入一到两个有缘的孩子~
现在三个孩子组两个team对战总有一种一对二的不公平感觉~
要求:8岁以上,家里有一台Mac,有第二台电脑或者iPad
编程学习 pinned Deleted message
大朋友学习编程看看有多少
今天有几个大朋友想学编程,做为自己在工作和生活里学点不同的东西的入门。这里准备一个线索,看看有几个大朋友想尝试。让我思考一下如何进行。 :) 这个是我之前完全没有想过的,只是一个线索哦~
大朋友们竟然也有了四五个坚定了学习的想法。我思考了一下,有了以下几点想法:
1.学习的目的只是为了让自己有编程的能力,了解计算机的编程会是什么样子。如果要进行计算机专业的学习,建议可以去社区的大学或机构报名,可能会更好一些。另外,更多的是为了一个兴趣和可能的爱好,而不是为了通过学习去找到一份工作。当然,也许它会为你的生活或工作带来一些帮助。
2.学习的方法将会是我们以完成一系列Telegram Bot上的功能被大家、朋友、家人使用为目的。边学、边写、边用,最后一起讨论设计、实现、改进、完善的一个过程。以实用和简洁为主,尽可能是浅显易懂。
3.学习时间会多久,我暂不清楚,但是需要来参与学习的朋友每周要有一个固定的时间一起学习和讨论。每周一次的学习应该会有一个半小时到两小时。除了这个学习的时间,在一周的其它时间里应该能拿出至少累计四小时的时间来思考和尝试。

4.我们暂定第一组大朋友们学习的周期是两个月,请务必考虑清楚,在未来的三个月里每周日上午10点(美东时区)你会有两小时的时间。什么时候开始我会与大朋友们一一确认一下。

这里是准备上第一节课前你需要准备的内容:
https://hdcola.medium.com/大朋友们第一课前的作弊条-eab38b76f348
👍5👏21
大朋友学习编程的第一课记录

想到的可能是大家在计算机水平上有很大的差异。没有想到的是大家在计算机使用的经验上有如此巨大的差异。不过还是有同学在上课时耐心的帮助别的同学,如何复制和黏贴。第一节课的结果真的是很大的失败,完全超过预定时间的时长、没有控制好的节奏。预计的内容是这样:
• 了解如何使用github和提交pull request
• 了解一下基础的运行方法
• telegram bot的command是什么
• 如何为bot增加一个command
• 完成 /start /help command
实际上的内容是:
• 如何输入中文
• 如何复制和黏贴
• 如何fork和clone一个代码库
• 如何向BotFather申请一个bot
• 如何在VSCode中运行和中断一个Bot
• 在现有的项目里如何增加一个echobot的功能
• 在现有的项目里如何支持一个 /tecker 的命令

第一节课的内容实在是太多了。想来我有几个问题:
• 没有在课前为每个人准备好bot
• 没有准确的确定每个人的计算机使用经验

所以我需要仔细考虑一下,第二节课降低难度。

第一节课的作业是:
基于 https://github.com/HDCodePractice/chstockbot
为自己的机器人支持 /group 的命令。如果用户直接和bot对话,输入 /group 返回两个作业小组的进群链接,就像这样:

学渣队: https://t.me/joinchat/xxxx 群id: -100xxxx
渣学队: https://t.me/joinchat/yyyy 群id: -1001yyyy

写在 cmdproc 目录里的 groupcmd.py

进阶高级作业:
你们的群里发group时,回复另外一句话:
本队成员a b c d
也就是单独聊天,和在你们小队群里回复的不同。

对于进阶作业,你们需要去google一下如何得到发出信息的来源是哪里,如果是一个群,群的ID是你的小队的群的ID,那么你就需要回复一个不同的消息。
大朋友们的编程课 第二课(2021/5/2) 课堂记录 :
• 了解telegram bot的运行机制Updater、Dispatcher、Chat以及CommandHandler到你的处理函数的处理流程
• 了解如何使用和查找python-telegram-bot的文档
• 课堂小抄( https://docs.google.com/presentation/d/1ZhygqeSw5OoVgwciSEByZFm17DRZeXbUvuF5jXxRG5s/edit?usp=sharing )
• 作业: 完成rewards命令,从0到200出一个随机数,如果大于零,用一个随机的话语提示你要得到一个奖励。如果为0,提用一个随机的话语提示你很惨。
• 附加学习作业:阅读github desktop的建立分支和推送分支部分的说明:https://docs.github.com/cn/desktop/contributing-and-collaborating-using-github-desktop/managing-branches#creating-a-branch 建立一个自己的名字的分支并推送到自己的github上去。
p5js学习记录
在之前我说过,在推特上一个朋友的启发后,我选择了p5js来做图形化部分的教学。其实这个课程已经进行了差不多四周了。这四周里将小朋友分成了两组,一组小朋友因为对程序逻辑已经非常熟悉且已经能相对独立的完成作业,所以只上周六的课。另外一组小朋友刚学完swift playgrounds,对于程序逻辑的应用还比较生疏,除了周六的课程外,周三晚上还会一起写作业。同时加深和巩固变量、循环的运用。经历了几十个孩子下来,发现孩子们和我当年一样一样的,变量+循环是学习编程中最为困难的地方。不要小看变量,用参数转换一下,大多数小朋友就绕不过来了。这需要一个时间的沉淀和契机,突然有那么一天,你会突破一个境界、参悟到一个神秘的感觉,从此踏上一个神奇的境界。所以我在安静的等着小朋友们突破成功。
再来说说有关学习的进程,我提前写好了教程,在学习过程中,大部分的进程与我的教程差不多,这很让我欣慰。

第一节课:我们学习了安装使用GitHub Desktop、VSCode、p5.vscode plugin。新建一个p5.js project、非常非常基础的html知识以及完成了第一个p5.js(如果画出一个圆)的样子。作业就是让大家画一个自己的作品,结果我就得到了这样的东西:
车库: https://hdcodepractice.github.io/CodePracticeResult/Sichengthebest/p5js/01.html
城堡: https://hdcodepractice.github.io/CodePracticeResult/Noah/p5js/sketch1.html
火箭: https://hdcodepractice.github.io/CodePracticeResult/Jaden/p5js/01.html

第二节课:以前的作品不能放大缩小,我们加入变量和画布的宽和高让作品能够用相对的位置和大小来呈现。在学习了如何知道画布大小、如何使用变量、如何能够让画布适应浏览器窗口大小后,我们完成了一个撑满窗口的花朵:
https://hdcodepractice.github.io/CodePracticeResult/Noah/p5js/sketch2.html
https://hdcodepractice.github.io/CodePracticeResult/runrun/p5js/02.html
甚至还得到了一个让自己的作品撑满屏幕的作品:
小女孩? https://hdcodepractice.github.io/CodePracticeResult/runrun/p5js/01.html
作业是让大家画出一个满屏都有十朵花儿(或自己的作品)在动的动画:
花儿: https://hdcodepractice.github.io/CodePracticeResult/Jaden/p5js/02.html
溜溜球?: https://hdcodepractice.github.io/CodePracticeResult/Noah/p5js/sketch3.html
马蜂群?:https://hdcodepractice.github.io/CodePracticeResult/Jaden/p5js/03.html

第三节课: 学习了如何完成一个在天上飞动的小球,动画是p5js的特点,如何用一个变量的计算完成让物体在天上移动。作业是两个,一个是完成一个在四壁上弹动的小球:
https://hdcodepractice.github.io/CodePracticeResult/Noah/p5js/sketch5.html
另一个是完成一个太阳、月亮在天上飞过并且白天和夜晚会有颜色变化的动画(使用函数让画多个物品更为简单):
城堡: https://hdcodepractice.github.io/CodePracticeResult/Noah/p5js/sketch8.html
车库: https://hdcodepractice.github.io/CodePracticeResult/Sichengthebest/p5js/04.html
被揍的熊猫: https://hdcodepractice.github.io/CodePracticeResult/Claire/p5js/01.html

之前的节奏有点紊乱,现在慢慢节奏越来越好了,看到孩子们画出不同的东西来,大家都好开心的~
p5js学习记录(二)
第四节课:学习的是鼠标相关的变量与事件,通过加入事件的函数、得知鼠标的当前座标我们就可以完成用鼠标去操作一系列的东西(其实这也是触摸屏的基础)。作业是这样的:在一个花园背景的画布最上边,罗列着我们所有人的作品。可以用鼠标单击选择其中一个。然后在花园里双击放置一个作品。就像是自己在布置自己的花园一样。然后这次收获了好些个不同的作品:
基础版:https://hdcodepractice.github.io/CodePracticeResult/runrun/p5js/03.html
选中标注版: https://hdcodepractice.github.io/CodePracticeResult/Jaden/p5js/06.html
一个更好的选中标注版: https://hdcodepractice.github.io/CodePracticeResult/Claire/p5js/04.html
一碰车库就挂版:https://hdcodepractice.github.io/CodePracticeResult/Sichengthebest/p5js/06.html
强大版:https://hdcodepractice.github.io/CodePracticeResult/Noah/p5js/sketch10.html

第五节课:学习了如果获取键盘输入,能用上下左右控制一个圆在屏幕上走动。作业是完成一个接元宝游戏,键盘控制一个在下面左右走的人,天上随机位置掉下元宝来,如果拉住就加1,接不住减1。
变量名神奇版:https://hdcodepractice.github.io/CodePracticeResult/Claire/p5js/keyboard.html
屏幕哆嗦版:https://hdcodepractice.github.io/CodePracticeResult/Sichengthebest/p5js/07.html
custom失效版:https://hdcodepractice.github.io/CodePracticeResult/Noah/p5js/sketch11.html
其实还有一个AI版,等回头补上来。
大朋友们的编程课

第三课(2021/5/9)课堂记录:
发现很多大朋友们还是无法在平时花出一些时间来做一些自我学习,当一个任务相对大一点时就难以完成了。在这一点上是我没有预料到的。所以我决定开始在上课时间快速而系统的把W3Schools的Python Tutorial给他们简单的讲一遍。这节课讲了足足两个小时,一直讲到了Python字符串的部分。

第四课(2021/5/16)课堂记录:
花了一些时间讲Github以及git的分支使用,在Github上如何提交一个Pull Request。另外把第三课的作业分别讲了一下。第三课的作业是在一个群里回复一个人的消息/r来举报。

四节课过去了,我认为还是应该在第一节课一个小的Hello Bot World后把基础打好。

第五课(2021/5/23)课堂记录:
今天把Python布尔值到Python函数快速掠过一遍。这样Python的基础部分已经讲的差不多了。接下来,准备让大朋友们边作业、练习、边开始新的征途了。

总结一下,大朋友们和小朋友们一样也不一样。一样的是需要不断获取回报,一样的是平时的时间还是碎片化的。不一样的是大朋友们会因为问题而愿意获得更多的为什么的知识。

今天又说明了几个要点:
.看着手册、用google、抄代码是值得的
.有问题就问,问不问是自己的事,怎么回答是我的事 :)
我想接下来的学习会越来越容易的,不能把大朋友们自我的基础要求太高,需要给大朋友们学习基础、练习基础的时间~
又一期Swift Playgrounds小朋友班即将结束了。这一次小朋友们的年龄跨度挺大,经历了几个我以前没有经历的事。总结下来有几点:
.年龄大的孩子被主动吸引的事很多,如果没有积累下对编程的兴趣就会很难让孩子提高平时的投入。
.年龄大的孩子确实有更强的吸收能力,在心理建设上更容易面对挑战,也就是更容易面对甚至享受从不会到会的过程
.swift playgrounds会非常容易上手,但是一但出现间隔忘记的速度也是非快的,所以频次真的挺重要的
.Playgrounds真的是一个让人又爱又狠的货,夏天温度一高,机器同时跑起一个Zoom的分享屏幕就慢的令人发指。另外,这货到现在还是动不动就崩!
不过,这四个孩子给了我有史以来最多的惊喜,能看着你们一起成长也是我的幸福~接下来要准备一个暑期班了,有兴趣的欢迎找我,让我看看能组成一个什么样的新团队~
编程学习
https://www.typingclub.com/ 这是一个很不错的从头开始学习打字练习的网站,delphij推荐,我看了一下,真不错,为了不让我每次再去找他问,分享在这里,也算是留个痕迹,相信很多朋友会用的到。
最近孩子们对盲打速度的追求已经到了拥有车的数量的攀比程度了,下课后都开车去竞技,打字速度快的让我都无法直视。这里有一个在线小游戏,练习打字的游戏,可以体验一下: nitrotype.com