
出品 | AI技术大本营(ID:rgznai100)
当所有的中国高中生都筋疲力尽地试图跨过高考的窄门时,美国的准高中毕业生也开始申请大学。北京一所国际学校的陶子金就是其中之一。未恐慌。
18岁的陶子瑾出生在美国芝加哥。11岁时,因父亲工作原因随家人返回北京。
回国后就读于国际学校,依然在美国教育体系下长大。相比国内同龄人在沉重的学业压力下淹死的情况,陶子金坚持拉小提琴、下棋、击剑等,一切都很好。
在过去的两年里,他也爱上了编程。当他在中国的大多数同龄人还在为数学问题苦苦挣扎时,他已经完成了十几个小型编程项目。除了兴趣之外,他还受到家人的影响。他的父亲是连续创业者,陶思数据CEO陶建辉。说起陶子学习编程的经历,陶爸爸认为,在美国教育体系下长大的学生,知识面很广,而国内的高中生没有时间和精力去想太多的课程内容。高考。
随着对编程语言的深入了解,陶子瑾开始通过参加比赛来检验自己的编程能力。
在今年2月初结束的由大学生和高中生参加的麻省理工学院Battlecode竞赛中,陶子金和他的四人团队在600多支参赛队伍中获得了全球所有参赛队伍的第9名,并且在高中生队中排名第9。排名第 4 位。
(左为陶子金,右为队友Alex、Drason、Tom为参与颁奖)
Battlecode是一款实时战略游戏,参赛者成对竞争。比赛的目标和任务每年都会发生变化。今年,双方都需要编写AI玩家通过管理机器人资源和执行不同的攻击策略来摧毁对方的城堡。参赛者需要学习使用人工智能、寻路插件、分布式算法和网络通信技术,以使他们的人工智能玩家尽可能具有竞争力。整个比赛历时一个月,前十六名在麻省理工学院角逐,总奖金超过5万美元。它现在已成为寻找优秀程序员的试验场。
这是陶子瑾第二次参加Battlecode比赛。他称这是麻省理工学院最难的人工智能编程竞赛。因为难度很大,他经常要写程序到半夜才有机会进入前16。比赛期间,有好几次我凌晨4:00还在编程。
对编程的热情与陶子刚开始学习编程时所做的小项目是分不开的。积累更多经验后,他就可以在比赛中大显身手了。对此,AI科技大本营和陶子金就参与Battlecode的过程和感受,以及高中生入门编程的心得等进行了交流。其背后,还有美国教育体系下学生成长路径的一个方面。
不可否认,尽管家庭环境对陶子金的成长至关重要,但大多数在中国教育体制下长大的高中生并没有太大的可比性,因为大多数人都别无选择。即便如此,至少在编程学习方式和路径上,陶子瑾的个人学习经历对于国内的高中生乃至大学生来说,都是一个具体的、可执行的操作建议。这不仅仅是编程。从他身上,你应该看到了超越大多数国内同行的广阔视野和认知。
与战码战斗
Q:为什么又去Battlecode比赛了?
陶子瑾:去年玩完之后,就去看别人写的代码。我看到了各种各样的比赛方法。学习之后,感觉今年变的更好了。另外,我今年使用的编程语言是 JavaScript。快点。此外,我最近还参加了华尔街对冲基金 TwoSigma 的 Halite AI 竞赛。来自全球100多个国家的4000多支队伍参赛。我最终排名第 66 位,是击败 Benchmark 的前 94 支球队之一。在来自世界各地的500多名高中生中,在中国参赛队中排名第5,排名第2。比Battlecode比赛要简单,但是还有很多其他的方法可以拿到第一名,我也通过比赛积累了一些经验。
Q:比赛中主要使用了哪种编程语言?
陶子金:这是第二次参加比赛。团队的其他三个成员是我的同学。去年第一次不是很好,当时整体排名在前32位,在国际选手中是前16位。第一年我们用的语言是Java,今年我们用的是Javascript。其他团队使用 Java 和一些 Python,但 JavaScript 实际上更快。
问:你是如何在游戏中编写算法来制定策略的?获胜的关键是什么?
陶子瑾:你得写一个能在引擎上运行的算法,然后结合游戏中的地图和已经给出的数据,给出最好的策略。例如,你需要编写一个特定的策略来控制整个地图对于地图,如果你获得更多的 bot 资源,你会比你的竞争对手更好,但如果你编写的程序对更多的时间没有响应超过 20 毫秒,您可能会输掉比赛。比赛第一周基本就是写Foundation,这样后面写的攻略就可以补充了。
每支球队都有自己的策略,然后你要看他们用的是什么策略,因为这个游戏可能有A、B、C三种策略,你要先选一个好的,然后看你的对手是什么做,然后自己改,但是由于游戏时间有限从机器语言程序员看,有些策略没时间做,所以要顾全大局来处理。
Q:这么高的排名,你们团队还有什么做得好的?
陶子瑾:我们经常看别人之前的比赛,仔细研究我们为什么输赢,这提醒我们在比赛中做出改变,比如上一场比赛观察到的新策略让我们进入Top 16。其次,我们可以相对较快地编写程序。比如我们需要熟悉DFS(深度优先算法),几十秒就可以马上写出来,所以很容易添加新的策略,不用花那么多时间在Foundation框架上. .
Q:你在比赛中遇到的最困难的地方是什么?当时是怎么解决的?
陶子金:调试是最难的部分。因为在这次比赛中程序哪里出了问题,并没有给我们明显的提示,所以还是花了很多时间去发现问题并解决。
Q:游戏中最激动人心的体验是什么?
陶子瑾:时间是22天,时间很短。有趣的是你必须选择做什么,没有足够的时间来找到最优解,你必须选择是写A还是B,做数学,估计它的重要性。当然,最终我们队获得了第九名,主办方还给了我们1750美元的奖金。
Q:车队停在了第九位,哪里出现了失误?
陶子金:每场比赛都有随机地图。您必须做出良好的判断以适应这些地图。第二句和第三局(双淘汰机制)我们做得不好。赢了我们的队伍,其实我们平时都是战胜他们的,只不过这次他们有点运气。
开始编程
Q:你是什么时候开始对编程感兴趣的?
陶子瑾:我在六年级的时候接触过编程,但当时并没有什么兴趣。我真正开始学习编程是在高中十年级。在过去的两年里从机器语言程序员看,我做了更多的项目,并对编程产生了更大的兴趣。去年开始写程序时,我从 JavaScript 和 CSS 开始,逐渐对编程产生了兴趣。我还通过 JavaScript 学习了 Processing.js 和 Node.js。
Q:学习编程的主要途径有哪些?
陶子金:我主要看网上资源。一些大学开始学计算机的朋友向我推荐了一些网站,对我帮助很大。另外,我还有几本CS书和Script书,还是有关系的。
问:有哪些推荐的学习地点?
陶子金:美国edX课程(注:edX是MIT和哈佛于2012年4月创建的海量开放在线课堂平台),还有freecodecamp、Github和MDN Web Docs网站,比如如果我想做软件,我会从 Github 找到我需要的库。我最基本的编程技能都是从这些网站上学来的,不知道的东西都在维基百科上搜索。
Q:除了参加编码比赛,你还做过哪些项目?
陶子金:我现在做了十几个项目。去年10月,我和另外一个人为北京的一所小学写了一个阅读英语书籍的学习平台,帮助小学生学习英语,平时记录他们的阅读时间。通过这个平台,你可以检测学生是否真的在阅读或玩耍。游戏。
还有为圣诞节制作的“教师感恩周”小程序。通过扫描二维码,祝福和感谢的文字被发送到大屏幕上,然后显示出来,400多人在后台统计了扫码。
很多小项目都是我自己通过微信跟人聊天写的,我觉得写起来很有趣。其中一个较大的项目是 Polytomizator,这是一个小型 Web 程序,当您将照片上传到网站时,它可以在几秒钟内生成 Poly 艺术照片,但如果您想用 PhotoShop 时间处理照片,则可能需要很长时间。它主要是用 JS 和 HTML 完成的。
还有一个小程序叫Cut-Bread,可以均匀地切面包、水果等东西。例如,图中有两个面包和一个火腿。你可以用一把刀把它切开,确保一半是火腿,一半是面包。我不知道为什么,但是这个小游戏已经被成千上万的人玩过了。
更多项目可以在 GitHub 网站上查看:
问:是什么促使您继续做这些项目?
陶子金:做这些项目是很有成就感的,因为都是很容易看到结果的,其实挺好的。但是如果我一开始不直接写程序,而是学习了离散数学的理论知识,我想我不会对编程感兴趣,但我知道那些东西是需要学习的。
问:应该和美国教育的风格有关。
陶子瑾:是的,我之前有个老师教过一些基本的编程原理,他教的很好,而且美国的教学法特别注重自己需要做什么。
Q:你的父母既有节目,家庭环境的影响也有一部分吗?
陶子金:会有影响,会教一些基本的概念,但不会有具体的指导。
问:我马上就要上大学了,我申请了哪些学校?你打算学什么专业?
陶子金:我申请了麻省理工等10所大学。因为我现在做了这么多CS项目,主要是想学CS,但这并不一定代表我还是想在大学里做,也不是特别清楚自己想做什么,所以特别想去美国,因为美国学校可以让你(自由地)选择。
热文推荐
戳他↓↓↓
拯救中国996程序员!GitHub 近 23 万个 Star,Python 之父获得正义!
农民的晚餐会有多复杂?
爬腾讯视频39万弹幕,我踩到了什么坑?
京东淘汰“三类人”,近18万员工一头雾水?!
V神最新笔迹:“你是怎么被骗的?”
特斯拉Q1销量暴跌,马斯克“交付100万”怎么破?| 极客头条
2019技术盘点微服务(二):青云直上云霄|程序员硬核评测
刺激!我今年 31 岁,打码 10 年,明天就要退休了!
System.out.println(“点击查看!”);
console.log(“点击观看!”);
print(“点击查看!”);
printf(“点击查看!\n”);
考特
请登录后发表评论
注册
社交帐号登录