Tag: 编程教育
这篇文章记录了一次教孩子用 VS Code AI Agent 修改 GitHub Pages 个人主页的经历。相比传统手写代码,AI 时代的编程教育更重要的是学会描述需求、指挥 Agent、理解 GitHub 工作流,并能审核 AI 生成的代码。文章借此引出 Harness Engineering 的概念:大模型是“大脑”,而围绕模型的工具调用、文件编辑、工作流和验证机制,才是真正让 AI 干活的 Harness。 去年弟弟学了一些 GitHub、Markdown 和 HTML,也在 GitHub 上搭了自己的个人主页。虽然页面已经能跑起来了,但整体看起来还是比较乱:有些排版不统一,有些内容结构不清楚,代码也有点像“想到哪里写到哪里”。 这次我就借这个机会,给弟弟演示了一下如何在 VS …
从2020年11月22日开始第一课,那时我还在亚马逊 AWS S3 团队,孩子们还很小。最初教娃是每天一课,后来调整为每周三课,再到两课,最后稳定在每周一课(中间还停过大约半年)。 我媳妇说得挺对的——我确实挺喜欢教别人,从中能获得一种满足感和成就感。当然,这只是原因之一。当初教孩子,还有一个小心思:有两个固定“听众”,可以让我更自然地练习表达能力和英语,同时也能顺便刷题,再把知识教给孩子,一举多得。好在两个孩子也挺配合,而且都是理科型,不知道是不是受了我的影响。 其实内容并不局限于编程(数据结构与算法),有时也会穿插一些数据库、数学和逻辑等内容,整体以一种自由探索式的学习为主。 到今天为止,一共给他们上了739节编程课(五年半)。从去年开始,我每天带着弟弟刷 LeetCode,让他多动手实践——他敲代码,我在旁边指导(到今天已经坚持了400天),最近哥哥也加入进来了。说实话,这种陪伴式的成长过程,真的很有成就感。 我以前也试过教我妻子编程,但很快就发现这并不是她感兴趣或擅长的事情。时间一长,她基本也就忘得差不多了。这其实很正常——人往往很难记住那些既不感兴趣、也不常用的知识。这件事也让我意识到:自己擅长,并不代表就一定能教好别人,尤其是在对方缺乏兴趣或动力的情况下。 有人质疑,现在刷题已经没用了。确实,在 AI 时代,单纯为了面试而刷题的意义在下降。但对我来说,教孩子刷题这件事的价值,从来就不只是“做题”本身,而在于它背后的能力培养:比如智力训练、逻辑思维的建立、专注力的提升,以及延迟满足的能力。同时,这也是一种高质量的亲子陪伴方式,在一起解决问题的过程中,关系会变得更紧密。 至于教媳妇,其实意义就完全不一样了。更多是一种尝试去理解彼此思维方式的过程,也是在探索“沟通”和“教学”的边界——你会发现,有些事情不是努力就一定有结果,有些人也不需要被“改变”。与其强行去教,不如尊重差异,找到各自更舒服的相处方式。换句话说,教媳妇最大的收获,反而是让我学会了不再执着于“教会”,而是学会“放手”和“理解”。 RING摄像头有30天(付费)云记录,有时候我会保存一下,以后有空整理一下重温一下,等娃大了,给他们看。 来两张媳妇前几年学编程一脸生无可恋,哈哈。 英文:Programming is not my wife’s thing. Bilibili | 微博 | X | Instagram | …
什么是竞技编程(Competitive Programming)? 竞技编程的英文是 Competitive Programming,是指在限定时间内通过编写程序解决一系列算法问题的比赛形式。比较知名的赛事有 ACM-ICPC、Codeforces、Google Kick Start 等。这类比赛不仅考验选手的算法功底和编程技巧,还需要良好的思维敏捷性和代码调试能力。 比如我二十多年前在高中参加的 ICPC,就是一种典型的竞技编程。当时我们使用的编程语言还是 Turbo Pascal,比赛时间是三个小时,要解决四道题。那时候只要程序能输出正确的结果就行了,根本不太在意代码的实现方式和写得是否优雅。 我家娃在做 LeetCode 的一道算法题时,由于算法不够高效,有两三个测试用例出现了超时。他索性“投机取巧”地加了一个 if 判断,针对那些特定的输入直接返回正确结果。这样做在 LeetCode 上是可行的——前提是你知道测试数据,并能手动处理特殊情况。 但在实际的比赛中,这种做法往往行不通。一方面你无法提前知道测试输入;另一方面题目设计者也会故意防止这种“硬编码逃课”手法,所以比赛更要求通用、稳健的算法方案。这也是竞技编程和普通刷题平台之间的一个重要区别。 🏆 ACM-ICPC(国际大学生程序设计竞赛) 由 ACM 发起,目前由 ICPC Foundation 主办。 …