孙教授的背景与K-12教育初衷
课代表: Hello孙教授,欢迎来到课代表立正的频道。
孙教授: 课代表,多谢邀请。我一直是您的忠实粉丝,终于有机会跟您在这边做一些分享。
课代表: 嘿,客气客气。可不可以请你做一个简短的自我介绍嘞?
孙教授: 我个人的背景,因为我也是做Computer Science出身嘛,其实和大部分华人的背景有相似之处,但也有不一样的地方。PhD毕业之后先去了Amazon,也是先去了大厂,但我做的时间不长,做了大概一年多吧。我和我的一个老师去做了一个Start-up,是2012、2013年,然后我们在做Mobile AR。那时候做的比较早,是做这种Photo-based AR,就通过照照片来作为识别。当时我们有了一个Seed funding嘛,那个Start-up做了一年多,但做的不是特别成功。
2014、2015年的时候,我就落脚回到南加这边,在Cal Poly(加州州立理工)。因为做Faculty有一些时间和灵活度嘛,所以就开始继续去Explore这些不同的创业机会。后来大概过去十年,将近有十年的时间,一直在专注于做这个K-12 Computer Science和AI的教育。
其实起因主要是15年的时候我们在大学拿到一些Funding,当时在美国有一个很有名的事情叫做CS for all,其实是奥巴马当时提出来的,就是鼓励所有中小学生去开始学编程,从Kindergarten开始。当时政府拨了好多Grant和Funding,然后我们在大学做了好多Teacher training,包括Curriculum development的工作,包括一些After School的Program,教周边的这些小同学们Coding。当时受到这波影响,就开始转头做正儿八经的K-12教育。
过去大概七八年吧,从我一个人自己在教,大概有六七门课,三四十个同学,我一个人教、一个人开发课程、一个人做运营,到今天将近快不到十年的时间,发展得也比较稳当一些。现在我们大概有8个校区吧,大部分在西海岸,大部分在南加州,然后在西雅图也有三个校区。现在学生也多一些了,过去这么多年,我们接触过、带过的同学也得有大概4,000-5,000个。
课代表: 5,000个K-12,就是学前班一直到高中生对吧?
孙教授: 对的,整个这个跨度。因为你也知道,最近这些教编程的东西题目比较多一些,教低年级其实有很多选择,从Block Coding、Minecraft、Game Coding开始;然后到高年级的话,能做的东西就更多一些。况且现在每天这个Topic也在变化,给我们的选择余地也比较多,我们很容易给不同的同学、不同的年龄、不同的兴趣,找到他们比较适合的一个Learning path。
AI如何降低编程门槛:从信奥赛到应用开发
课代表: 这个创业过程本身也是很有意思。但我们今天主要Focus还是讲:从你的角度,教了这么多学生,你看既当大学教授教大学生,然后又自己开始教中小学生编程。最近咱们一起上了一个活动,你在上面讲大家是怎么样子学AI的,以及你讲了好多个故事,这些学生们是怎么样子使用AI去解决了真实的问题,包括从学区拿到钱,包括他们在韩国明星演唱会上卖周边,特别有意思的一些案例。所以我就特别想帮大家——这里边可能有家长,但是更多的反而是程序员想转AI,或者说Data scientist想转AI,他们会觉得不知道怎么样子入手,以及什么样子才是真的用AI用的好。我想从你做教育的角度来说,帮大家分享一下这样的故事。
孙教授: 好呀好呀课代表,我先从您刚才提到几个例子开始讲起。其实核心是,为什么我们开始带这些孩子们开始做这些Project?最初我们主要就是教大家Python、Machine learning、Java这些课。然后后来没多久我们就开始反思:你最终的出口和目的在哪?
其实这跟我个人的经历也比较有关系。我很小的时候是打信奥赛(信息学奥林匹克竞赛)出来的,但是后期我就发现,信奥赛这个东西可能从编程、刷题来说是一个很好的技能,但它可能不是你学编程的终极目标。终极目标其实还是要做应用。换句话说,现在这个时代其实是一个做Start-up的好时候。
我之前一直在带研究生、带本科生,现在带中学生,我就在想说,为什么不能让这些年龄低一点的同学,很早地就有这种创业的体验和经历?所以我们在教编程时发现,做软件其实是个很好的突破口。比如说你要想让一个高中同学搞一个创业项目,比如开个奶茶店,这件事情基本上不靠谱:第一你需要很多资金,第二他也没时间去运营。但是你说你教一个高中生去做一个APP、做一个平台,那这件事情在一定条件下其实是可以完成的。
零基础高中生:7周用AI开发上线K-pop社区APP
课代表: 提个问,很多人觉得高中特别忙,甚至我也觉得我高中可能是我这辈子最忙的时候之一了。从你的角度来看,为什么高中生反而有时间去做这些事儿?
孙教授: 我们接触的还是美国这边的高中生。我一开始其实有一个误区,总觉得美国的高中同学不是那么忙,但实际情况下我发现,其实要比咱们国内高考还要更忙。原因很简单,国内高考的目标比较单一,就是一个分数;而这边除了分数还需要你做很多课外的东西,而课外这东西是没有天花板的,所以大家压力很大很卷,每个人都在想各种各样的办法充实自己的背景。
所以我们带高中同学的时候,需要明确一下目标:你能做的事情很多,但是你的时间是有限的,哪些值得去做,或者能够出一些比较好的亮点和成绩,你要优先做。第二的话,要看你自己的兴趣和爱好。不是说每个人最后都要去学Coding、学Computer Science。假如说我的目标就是学一个商科,那我能不能围绕着这个Idea做一个好的项目,尽量把它Launch出来,哪怕我是用AI来做的也没关系。所以就是要结合同学的兴趣和精力去做。倒不是说有什么捷径可以省时间,而恰恰是因为大家时间都比较少,一定要把目标定好,找自己擅长的、能出成绩的东西去做。
课代表: 所以他们课余其实是有时间的,但是选择很多。作为一个想用AI或者想编程做好这方面的人,确实AI带来了很大的助力。我们经常说有的人是10倍效率、5倍效率,但你得找到发挥场景。对于这些高中生,他可能恰好就用上了这10倍。
孙教授: 现在AI导致了一个结果,我之前看到一篇文章,大概意思就是说,AI其实从某种程度上减少了CS学生的优势,因为普通同学通过这个工具也能达到同样的效果。这在我们带高中同学的时候,其实是打开了一大扇窗。以前假如说我们想带同学做一些技术含量比较高的项目,如果这个同学没有相当多的CS背景、Coding基础,可行性上是有考量的。但现在,包括今年我们尝试带一些高中同学直接就用Cursor、用Claude Code去做。
他跟我们教大学生还不一样。大学生本身还有一些Coding background,但我们在带高中同学的时候,即使他没有Coding background,我们发现这个东西也能做成。就是我那天分享的其中一个例子,我们有一个女生叫Tammy,完全本身不是想搞Coding,也不是想搞STEM,她想搞Business。
我们那天在聊天,我说你想搞商科,我们做一个创业项目,你要找到一个问题和痛点。她就很快给我分享了一个非常特别的例子。Tammy很喜欢关注这些Pop star,比如BLACKPINK这些韩国明星。她在南加嘛,这边的活动也比较多。她告诉我,基本上夏天每个活动她都尽量去参加。她发现每一次去参加演唱会的时候,她会自己准备很多种歌迷道具、宣传品,然后其他歌迷每次都会问她说:“你这个东西在哪买的?我怎么买不到?”她觉得这就是个很好的商机。
我说这个特别好,咱们能不能建立一个小的社区平台,甚至是一个APP。当然你不能光卖东西,你要放一些Concert的信息,给歌迷交流的空间,然后附带着卖一些产品。这东西对于我们做技术来说可能不是特别难,但也是挺大的一摊项目。后来我们就尝试用Claude code来教Tammy做这个APP。现在做APP常用的就是Flutter框架,用到Dart语言。这些东西我们教大四同学,是专业的选修课。现在在同学没有太多Coding background的前提下,直接用Claude code去做。
经过7周到8周的时间吧,我们第一个版本已经在App Store和Google Play上线了。她已经把自己的产品都列上去,打印了QR code,准备在下一次去参加Concert的时候去做分发。当时我们也很Surprise,一开始我还比较担心质量,后来发现前端也好、后端也好,经过大量反复的测试和反馈,还真的是能够达到可用的版本。
结对编程与Prompt Engineering的实战
课代表: 当时我看的那个APP,它的完成度其实是挺高的。Tammy在这里边比重是多少?你们是几个人?
孙教授: 这样分配的:我们一开始大概花了一周的时间先教Tammy基础,你至少得知道手机开发是怎么回事,得把Android Studio、Flutter这些Framework安装上去,知道怎么用Emulator。第二,要给她过一下Foundation,比如做Frontend其实就是做UI,怎么做Button、Layout。但不用花很多时间,我们会定几个典型的例子,让同学跟着我们像Pair Program(结对编程)一样。因为同学没有学过编程,所以我们至少会告诉你说,这个参数是控制Margin的,那个参数是控制Color的,你要跟着我们走一遍,试着换一换,看看能不能变出相应的效果,这样她有一个直观的印象。
第二,要教她一点简单的Backend的东西,其实就是Database、Firebase这些。你要告诉同学这里边怎么去组织Data structure,那些Attributes属性都是什么东西。有了这个概念以后,后面就直接上Claude code。
这里边最重要需要教同学的关键是:一方面是一些最基础的Prompt Engineering的东西;第二个方面是反馈。任何一个Change出来以后,你一定要知道怎么去测试、去Verify,然后不对的话怎么样能够把很具体的反馈给AI。前期老师带得多一些,后期很多时候我们会给她发一些设计好的Design feature作为Homework。后来我们发现,她在课下甚至可以独立完成相当多的东西。中间有一两次遇到比较麻烦的Build问题,老师花点时间帮着解决了一下,但大部分在Functionality上面,同学最后的主动程度还挺高的。
我估计一下,一个同学平均一周能花4-5个小时左右,差不多就这样一个Level。
课代表: 课上的四五个小时,还是课上课下加起来?
孙教授: 加起来吧。实际情况来说,我不觉得同学在课下有太多的时间。因为Tammy应该是Junior(11年级),是最忙的一年。所以当时这样做的时候,我心里面还是不是特别确定,但出来的效果远远超越我预想。
你说真的Tammy现在她对Dart这个语言很熟悉吗?我觉得肯定不至于。她对整个Architecture、Networking很熟悉吗?我觉得也不行。但是这真的重要吗?我觉得是个问号。她的目标就是要做产品,要做一个创业项目,想把商品放出去,在Community里宣传,那我觉得这足够了。
课代表: 我刚刚算了一下,一周4小时,七八个周的话,基本上就是30个小时。作为一个全职打工人,一周拿出20个小时来其实是可以的,你两个周就可以搞定这些事情。
效率革命:从一个月到一周的课程项目演进
孙教授: 对,一定的。AI给我们的机会越来越多。早些年带同学,百分之七八十可能想去走Computer Science、Data Science这些专业。但是这两年,纯粹要做CS Major的高中同学可能也就是20%。一方面大部分同学并不是都要走这条路,另一方面CS相对来说申请比较Competitive。
所以很多同学会走一些交叉学科。我发现从CS或AI的角度去做一些跨学科的结合,能提供非常好的机会。如果传统来说,同学真的要去搞生物、化学,要去Wet Lab(湿实验)去做,资源和机会是一方面,更重要的是同学没有时间真正泡在实验室里。但现在,我们如果能够用这种Computational的办法,用AI的办法,带一个中学同学做Research也好、做Start-up也好,反而更加可行一些。
课代表: 我量化一下,你觉得在AI之前,如果Tammy找一个学的比较好的高中生去Partner,需要多长时间把这东西做出来?和你们一个老师在没有AI的情况下,从头到尾把这个APP做出来,分别需要多长时间?
孙教授: 这个项目取决于它的Complexity。我在大学给大四同学上同样的课,是一个Semester-long(15周),每周大概三小时。一般来说,2/3的时间讲Foundation,1/3的时间留给大家做一个Project。从我这么多年教课来看,对于大四有Coding基础的同学,做一个Individual project,基本上我认为要两个月到三个月,这是一个比较Reasonable的Estimate。
课代表: 他们这个是有AI的辅助还是没有?
孙教授: 没有,我说的是之前没有AI辅助的时候。现在在AI辅助的时候,上周我们在学校也教Prompt Engineering。第一次教这门课是23年底,那时候还没有Cursor这些东西,我给了一个月的时间做Final project:调用OpenAI API,做一个Full Stack带UI的Agent。
今年再上这门课时,我意识到同学用Cursor这些工具用得挺好,再给一个月就没必要了。我就做一个尝试,把Final project提到了月中,只给大家一周的时间。我这周没有上课,就说下周你们Focus在做这个Project,然后下一周做Presentation。
这次就一周的时间,最后看Presentation,我会发现Overall大家做的项目质量要远远超于上一次用一个月做的东西。我自己感受特别明显。整个工具水涨船高了以后,大家的效率提升特别明显。而且不光是快,降低门槛以后,大家对这个东西信心强了很多。
AI时代的核心能力:发现问题与执行力
课代表: 既然编程的门槛一下子拉低了这么多,那什么东西变得有用?什么样的同学能比较好地抓住这波机会?
孙教授: 我觉得有两点。技术门槛下降了,这个大家不接受也要接受。我自己写了这么多年程序,一开始还是觉得有点可惜,感觉好像这事情没什么技术含量了。但现在想一想,有更重要的东西需要Focus。我们更有时间Focus在应用本身、解决问题本身。
这么多年我看同学,做的比较好的真的就是两个特别重要的技能:一个就是发现问题的能力,第二就是所谓的执行力。
好的同学在发现问题上非常Proactive。我那天讲了另外一个例子:有个同学弹钢琴,他跟我聊,说他最近挺喜欢弹,但特别不喜欢边弹边翻琴谱,很不方便,因为他记不下来谱。这是一个Problem。我就提示他:你最近不是在学Python吗?咱们看能不能判断声音的位置,做成自动翻谱的软件。
最后我们做了一个Prototype出来,其实Work得非常好。就是一个iPad程序,把乐谱变成图片存进去,程序在后台听弹钢琴的声音。声音进到电脑里变成Frequency(频率),写一个算法通过这些数字告诉我弹在哪一个位置。如果弹到页面末尾,就自动切换图片。
这个项目做出来以后效果特别好,因为这里边有很多Research,需要优化准确度。同学当时甚至还写了一个Research paper,参加了Science Fair这些竞赛。除此之外,他还开始在自己的钢琴老师和Community里推广。后来他申请大学时,这个项目作为一个非常真实、自然的补充,打动了招生官。
这就是我所谓要发现问题。有些同学对小的、不Perfect的东西比较敏感,会主动思考。这种能力不难培养,只需要引导同学去看类似的例子。我经常给同学开会,给一个Homework:一周时间,能不能给我想至少5个Problem?不能只说一两个。最后发现,10个同学里可能9个拿到的Idea都是Very very unique。
摆脱“知识的诅咒”:像Builder一样下水游泳
课代表: 这个我非常感同身受。我觉得发现问题是需要激活的。我相信每个人一天平均能发生3个值得解决的问题,只不过大家全都忽略了。对于程序员或者有经验的人来说,Curse of Knowledge(知识的诅咒)非常明显,会把问题想复杂,觉得解决不了,结果根本不会开始。
孙教授: 对,同学的优势在于他没有想过那么多Challenge,所以他比较大胆。但他也由于没有经验,所以我们需要告诉大家:一开始不要想的是完美的,要有MVP的概念,先搞一个Prototype出来,然后一点点提升。
关于执行力,我再分享一个例子。有个大一同学搞了一个选课的Web工具,功能很简单:我想做一个Perfect schedule,比如只想周二周四上课,或者只想下午上课。工具本身没什么难度,做好了也上线了。我问他怎么推广的?他说他上线后的两个星期之内,每天和Roommate到大学教室里,在黑板、白板上把URL写在教室墙面上。第二天同学到教室就看到了。能做到这一点的同学其实挺少的。
课代表: 执行力这件事情是可以激活的吗?
孙教授: 我认为大部分还是通过后期培养。它需要一个Trigger。执行力差往往是因为没有Motivation或者没有信心。这两个东西是从成功的经历里来的。如果我们能让你通过实际操作产生一点点成功的经历,你就愿意多投入时间,产生更好的结果,变成良性循环。
所以我们很强调你要动手。比如有个七年级男生叫Bernard,喜欢玩游戏。我们教他做Roblox游戏开发,他Publish了一个Game。结课一个月后,我发现他还在更新,而且下载量有70多次。我问他,他说:“老师你不知道,我Publish完第二周就有人玩了,甚至有人给我留Comments说我Feature没做完,我很紧张,就自己试着去修改。”
从教育者的角度来说,目的达到了。别人的Comments、下载量,就是他的Inspiration。前提是他当时把东西做出来了,而且把它Launch出去了。
课代表: 我们的课程叫AI Builders,之前叫From users to builders。在AI时代,最重要的就是Builder的心态和习惯。你要Self-identify as a builder,遇到东西能看到问题并解决。
孙教授: 对。现在的建议就是:尽量多去动手和尝试。发展实在是太快,很难去预测和分析,更多的还真的是试一试。迈出这一步比较重要。给孩子一个从0到1的创业过程,他只要走过一次,就知道产品是怎么出来的,就有信心了。
课代表: 我打个比方:你要学游泳,一定要下水。Build with AI就是下水游泳,站在岸上学一堆课是学不会的。刚下水可能觉得水凉,但适应了以后,你就能游得很开心。非常感谢孙教授今天的分享,对家长和打工人都很有启发。
孙教授: 没什么特别的,谢谢课代表。