00後的AI開發者進階之道:從入門到鏖戰MIT編程大賽 | 人物誌
作者 | 若名
責編 | 胡巍巍
出品 | AI科技大本營(ID:rgznai100)
當所有中國的高中生都在拚命為跨過高考這道窄門疲憊不堪時,美國的准高中畢業生們也開始申請大學,北京某國際學校的陶子進是其中一員,他的眼神中似乎看不出慌張感。
今年 18 歲的陶子進出生在美國芝加哥,11 歲的時候由於父親工作的原因隨全家回到北京生活。
回國後,在國際學校就讀的他仍然成長在美國教育體系下,與國內的同齡人被淹沒在繁重的學業壓力下相比,陶子進在學習之餘還堅持拉小提琴、下棋、擊劍,成績都還不錯。
近兩年他還喜歡上了編程,當國內的大部分同齡人還在死磕數學題時,他已經做了十幾個編程小項目,除了興趣使然,當然也受到了家庭影響。其父親是一位連續創業者——濤思數據 CEO 陶建輝。說起陶子進學編程的經歷,陶父認為主要是美國教育體系下成長的學生知識面很廣,而國內的高中生除了準備高考的課程內容,沒有時間和精力考慮太多。
隨著對編程語言了解的更加深入,陶子進開始通過參賽來檢驗自己的編程水平。
在今年 2 月初結束的由大學生和高中生組隊參加的MIT Battlecode 比賽上,600多個參賽隊伍中,陶子進和四人團隊在全球所有參賽隊伍中拿到第 9 名,高中生團隊中排名高居第 4。
左一為陶子進,右邊依次為隊友 Alex、Drason,Tom 連線參加頒獎
Battlecode 是一款即時策略遊戲,參賽者通過兩兩對戰決出勝負。每年的比賽目標任務都會有變化,今年雙方需要編寫 AI player,通過管理機器人資源並執行不同的攻擊策略來摧毀對方的城堡。
參賽者將需要學習使用 AI, pathfinding 插件,分散式演算法和網路通信技術以使自己的 AI player 儘可能具有競爭力。
整個比賽歷時一個月,前十六強在麻省理工學院進行比賽,獎金總額超過 50000 美元。它目前已成為發掘優秀程序員的選拔賽。
這是陶子進第二次參加 Battlecode 大賽,他稱這是 MIT 最硬核的 AI 編程比賽,因為特別難做,經常要寫程序到半夜,才有機會進入前 16 ,他們整個團隊在最後一個星期的比賽中,有好幾次到了凌晨 4 點還在編程。
對編程的激情離不開陶子開始學編程時做的小項目,積累更多經驗後,才能在大賽中施展拳腳。
就此,AI科技大本營與陶子進就參與 Battlecode 的過程和感受,高中生入門學編程的經驗進行了交流,其背後也呈現出美國教育體系下學生成長路徑的一個切面。
不可否認,縱然家庭環境對陶子進的成長非常關鍵,而成長在中國教育體系下的大部分高中生沒有多少可比性,因為大多數人都沒有其他選擇。
即便如此,至少在編程學習方法和路徑上,陶子進的個人學習經驗對國內高中生甚至大學生來說是具體、可執行的操作建議。也不止於編程,從他身上,你更應該看到那種超越國內大部分同齡人都還未擁有的廣闊眼界和認知。
再戰 Battlecode
AI科技大本營:為什麼還要再次去挑戰 Battlecode 比賽?
陶子進:去年打完以後就去看其他人寫的 code,看到各種各樣的比賽方法,學習後感覺今年有更好的改變,再加上今年我用的編程語言是 JavaScript,寫得更快。
另外,我近期也參加了華爾街對沖基金 TwoSigma 的 Halite AI 比賽,全球共有來自 100 多個國家的 4000 多個隊伍參加, 我最終排位第 66,屬於擊敗 Benchmark 的前 94 個隊之一。
在參賽的全球 500 多高中生中,排名第 5,在中國區參賽隊中排名第 2。它比 Battlecode 比賽更簡單,但是拿第一必須得用好多其他方法,我也積累了一些比賽經驗。
AI科技大本營:比賽中主要使用了哪種編程語言?
陶子進:這是第二次參賽,團隊的其他三個成員都是我同學。去年第一次參賽的成績不太理想,當時總排名是前 32,在國際的選手中是前 16。
我們第一年用的語言是 Java,今年用的是 Javascript,其他比賽隊伍有使用 Java 的,Python 也是有的,但 JavaScript 其實更快。
AI科技大本營:你們在比賽中是如何編寫演算法來制定戰略?取勝的關鍵點是什麼?
陶子進:你要編寫一種能夠在引擎上運行的演算法,然後結合比賽中的地圖和已經給出的數據,來給出最好的策略,比如寫的某個策略是你用來控制整張地圖的,如果你獲得更多的機器人資源,你就會比競爭對手更好,但如果你寫的程序超過 20 毫秒都沒有響應,那可能就會輸掉比賽。比賽的第一周基本都是寫 Foundation,這樣後面寫的策略都可以加進去。
每個隊伍都有自己的策略,然後你要看他們的用的是哪種策略,因為這種比賽可能有 A、B 和 C 三種策略,你得先選一個好的,然後再看你對方在做什麼,完了再改你自己的,但由於比賽時間有限,有些策略是沒時間去做的,所以你要全局考慮進行應對。
AI科技大本營:拿到這麼高的名次,你們團隊還有哪些做得比較好的地方?
陶子進:我們經常會看別人以前的比賽,仔細研究為什麼輸了或者贏了,這會提醒我們在比賽中要做出改變,比如最後一次比賽中就用了觀察到的新策略讓我們進入了前 16。
其次是我們寫程序算是比較快的,比如要對 DFS(深度優先演算法)很熟悉,馬上能在幾十秒內就寫完,所以加新的策略很容易,沒有花那麼多時間在 Foundation 框架上。
AI科技大本營:比賽過程中遇到比較困難的地方有哪些?當時是怎麼解決的?
陶子進:困難的就是 Debug,因為這次比賽中沒有明顯給我們提示程序哪個地方出了錯,所以還是耗了好多時間找到問題來解決。
AI科技大本營:比賽最刺激的經歷是什麼?
陶子進:賽程是 22 天,特別短。有意思的是你必須要選做什麼,沒有足夠的時間找到最優解,必須得選要寫 A 還是寫 B,做數學計算,估計它的重要性。當然,最後我們團隊拿到了第九名,主辦方給了我們 1750 美元獎金。
AI科技大本營:團隊止步第九名,哪裡出現了失誤?
陶子進:每一場比賽裡面都是隨機地圖,你得做出很好的判斷去適應這些地圖,第二句和第三局(雙淘汰機制)我們都沒有做好。
贏了我們的那個團隊,其實平常我們是打敗他們的,只是這一次他們有一點小幸運。
編程入門之道
AI科技大本營:你是從什麼時候對編程感興趣的?
陶子進:六年級的時候接觸過編程,但當時並沒有產生興趣,真正開始學編程是在高中十年級的時候,最近兩年,做的項目也更多了,對編程產生了更大興趣。
去年開始寫程序的時候,是從 JavaScript 和 CSS 開始寫的,逐漸開始對編程感興趣,通過 JavaScript 還學了 Processing.js, Node.js。
AI科技大本營:主要通過哪些途徑學習編程?
陶子進:主要是看網上的資源,一些在大學裡開始學計算機的朋友給我推薦了一些網站,對我幫助挺大的。另外我自己有幾本 CS 書和 Script 類的書,這兩者還是有關係的。
AI科技大本營:有哪些可以推薦的學習網站?
陶子進:美國的 edX 課程(註:edX 是麻省理工和哈佛大學於 2012 年 4 月創建的大規模開放在線課堂平台),還有 freecodecamp, Github 和 MDN Web Docs 網站,比如我要做軟體的話,就會從 Github 上找到我需要的庫,我最基礎的編程能力都是從這些網站學來的,不會的東西都是靠維基百科現搜。
AI科技大本營:除了參加編程比賽,你都做過哪些項目?
陶子進:現在大概做了十幾個項目。去年 10 月,我和另一個人幫北京一所小學寫了一個讀英文書 ese 學習平台,幫助小學生學英語,平常記錄他們讀書的時間,通過這個平台可以檢測學生是真的讀,還是在玩遊戲。
還有一個聖誕節做的「teachers appreciate week」的小程序,通過掃二維碼,把祝福和感謝的話發送到大屏上,然後顯示出來,後台統計有超過 400 人掃碼。
很多小項目都是通過我自己在微信跟人聊,覺得好玩的才去寫的。一個比較大的項目是 Polytomizator,這是一個 web 小程序,當你上傳照片到這個網站上的時候,它可以幾秒鐘生成 Poly 藝術照,但如果你要用 Photoshop 處理照片的話,可能需要很長時間。它主要是用 JS 和 HTML 來做的。
還有一個是讓人玩的 Cut-Bread 的小程序,它可以均勻切割麵包、水果等事物,比如圖片上有兩個麵包一個火腿,可以讓你一刀切下去保證一半是火腿,一半是麵包,我也不知道為什麼,但這個小遊戲已經有數千人玩過了。
更多項目可查看 GitHub 網站:
https://stonet2000.github.io/projects.html
AI科技大本營:讓你不斷去做這些項目的動力是什麼?
陶子進:做這些項目很有成就感,因為都是很容易可視化的成果,這其實是比較好的。但如果一開始不是直接寫程序,而是學離散數學這些理論知識,我覺得自己不會對編程產生興趣,但我知道那些東西是需要學的。
AI科技大本營:這應該跟美國教育的風格相關。
陶子進:是,我有個老師之前教了一些基本的編程原則,教得很好,而且美國人的教法特別注重你自己要做點什麼東西。
AI科技大本營:你爸媽都會編程,家庭環境的影響也是一部分?
陶子進:會有影響,會講一些基本概念,但並沒有具體輔導。
AI科技大本營:馬上要讀大學了,申請了哪些學校?準備讀什麼專業?
陶子進:申請了 MIT 等 10 所大學。因為我現在做了這麼多 CS 項目,現在主要想學的是 CS,但也不一定說大學還想去做,我也不是特別知道我想幹嘛,所以我特別想去美國,因為美國學校可以讓你(自由)選擇。
(本文為 AI大本營原創文章,轉載請微信聯繫 1092722531)
※Redis Labs 再次更改開源許可證,但 Redis 本身不受影響
※華為抄襲蘋果?
TAG:CSDN |