本科生怎樣正規地進行CS前沿科研內容的學習?

定義:

一篇paper的知識結構組成大概為:本科課程知識+研究生課程知識+前沿方法。我問的是「前沿方法」如何學習。「前沿方法」指最近10年(或更短)的方法,與研究生課程知識有一定重疊。

學習目的:

理解(看懂paper推導和思想)和掌握(發展新理論,或能在源碼基礎上開展別的工作)前沿科研內容。

困難之處:

前沿科研內容與各種級別、相近學科知識思想都有交融,交織的科技樹使得技能的學習有先後區別,而科技樹是在學習之前是不可得知的。探求科技樹的工作可以在看paper引用中摸索,但是很緩慢。同時,缺失的研究生級別課程對知識的理解造成了很大困難,需要在學習前沿知識中缺啥補啥。

題主知道的學習方式:

1. 通過名校公開課學習。有的名校研究生課程與前沿結合緊密,比如Computational Camera and Photography這門5XX課就是prof.講解自己paper並介紹前沿科研。開課時間是2009年,講授的paper時間是2000-2007,可以認為是前沿內容。

2. 通過每年頂級會議的培訓PPT、錄音自學。

3. 看新書。教材更新時間,或新領域的教材出版時間往往落後前沿5年左右,而且由於新國內沒有影印版,也不易找到PDF。

4. 看paper自學。時間拖得很長,但是讀懂「源」paper後會很快掌握,因為大部分經典的開端方法建立在本科生知識基礎上,利於理解和吸收。但對於大部分一般paper難以理解和吸收。

5. 像王垠一樣自己想(非黑)。與4不同在於是通過別人的idea來自己創造領域的知識。沒成功地運用過。

6. 與導師或同學面對面討論。沒嘗試過。

7. 論壇或QQ群討論。這個效率最低而且成員素質參差不齊。

題主現在採取1和4結合的方法學習。

問題:

什麼方式才是一個正常的PhD學生應該經歷的前沿科研內容學習過程?


基礎知識(工具包)靠上課,在名校爭取多上課,在弱校就多看名校的課的視頻或者課件。我們學校大多數課件網上都有,沒事當刷知乎吧。

不管本科生也好,研究生也好,探究前沿問題的方式是一樣的,就是靠導師。自學太緩慢,一個是看不懂,另一個是你覺得你懂了其實你不懂,因為學術論文假設你懂他cite的所有的paper裡面的內容,在你不具備的情況下,根本是不可能看懂學術論文的,因為你理解的通常和作者想說的以90%的概率不同,而對於初學者這本來就是悖論(也就是題主加粗的部分,說的很對)。所以起步是,你需要導師告訴你看哪些書,哪些論文,然後你看的一知半解的時候和他討論得到反饋,然後繼續無限迭代。第一階段爭取先在一個具體的研究問題上突破,掌握了這個小問題的知識,以及學術論文閱讀的能力,然後在第二階段不斷拓寬自己的知識集,從點到線再到面。在這個過程(第二階段)中,多和同事(同學,其它老師)交流,把你知道的教給別人,讓人家把知道的教給你,儘快拓寬自己的知識面。懂的越多(哪怕是皮毛),學新的就越快。同時知識不是金錢,你給別人一份別人給你一份就是兩份。經過了5-6年這樣的過程,你就發現,啊原來自己還是什麼都不懂……開個玩笑了,你就發現你懂了很多東西了,雖然和不懂的東西比還是冰山一角,但是至少可以自由的了解這個世界上任何自己想知道的內容了。

題目問的是本科生,本科生和導師做暑期實習之類的大概是3個月左右吧,大概第一階段有走完的有走一半的。本科生嘛,就是導師看下你有沒有做研究的天份,如果有幫你推薦一下,99.99%的人不會在本科期間到達第二階段的,不用太心急。整個走下來就拿到了博士學位,這個過程的速度主要取決於導師的水平和視野,這也是為什麼找個好的導師總是最重要的。


我的畢設就是老師還未完成的幾篇論文的一小部分,然後老師給了我具體的任務,幫我圈出論文里關鍵的幾個假設,理解它,然後寫程序驗證它們。然後對於這幾篇論文所包含的領域,自己也有了大概的印象。並且寫過代碼,所以談到這些領域,自己也不慌。

不知道這有沒有參考價值。我感覺在本科,自己會寫代碼其實也是非常重要的,所以應該先讓自己成為一個python熟練工,這樣就可以和老師討論一些實質的內容,不用被具體實現所困擾了。

但為什麼是python呢?因為超級好用啊hahaha


保證自己在計算機領域外有某種愛好,烹飪,攝影,旅行,某種體育運動,甚至只是養一些花花草草,都是可以的。從興趣愛好中獲得的樂趣,可以將人的自我認同錨定在一個比較安全的位置,讓人不被單方面的起伏影響過多。而你對這些愛好的熱情,也可以看做自己狀態的晴雨表。如果發現自己無法對先前熱衷的事物提起興趣,請多加小心。

同理,要讓自己明白,自己永遠有不止一條出路。「前沿科研」也分各種領域,「前沿科研」之外也有許多能走下去的路。世界很大,有很多維度。意識到這一點,或許在走路的時候,可以稍稍放鬆一些吧。

還有一點大約就是注意身體。倒不是一定要去健身,或者正規地參加體育項目。可以靠騎車或者步行來保持一定的運動量。還有就是睡眠。早睡早起沒必要,但至少保證自己作息規律,睡眠充足,白天不容易打瞌睡,就已經足夠了。

在計算機研究的領域內,能見到很多具有超凡才幹的人,很多走在自己(以及絕大部分人)之前很遠的人,很多在不同領域遍地開花的人。以上的建議也許不能讓你成為學界先鋒。我只是希望所有人在面對那種鋪天蓋地而來的挫折感和自我懷疑時,一抬頭,可以在濃霧中看見緊急出口的標識。出口外是你養的花草。而你的身體也有足夠的力量,將你輸送至火場之外。

我對不起你們。


實際上第一個問題是選定一個領域。無論 PhD 還是碩士都會有導師,方向都會限定在某一或若干緊密關聯的領域內。題主已經開始一段時間,無妨說說自己打算深入了解前沿的領域,想必得到的意見會更有針對性。

還有一點個人的不搭題的意見是,觸摸到前沿知識的邊界需要積累起步可能比較難,但終歸可以達到。但是如果研究出成果那是很難的,畢竟成果都是邊界之外的東西,你需要一個厲害的導師。


先確定一個不算小的目標吧:

找你領域影響因子高的期刊 最近一年的文章目錄讀一遍

第一遍是讀不下去的 回去查查那些不懂的詞的維基 正文也是讀不下去的 回去再讀標題

這樣虐自己許多遍 直到有一天好像有一篇文章從標題的某幾個字看出它大約和某個模糊的概念有關了

然後就開始讀這篇文章

繼續被虐

你把第一篇文章可能要表達的意思 大約有個概念的時候 你就進入了所謂的前沿

然後再考慮該學什麼


我以一個過來人的身份(本人小本科畢業,程序猿一枚),發自內心的給予一下忠告:不要一天到晚整一些高大上的名詞,什麼尖端科技、前沿科學,要想在CS有所造詣,擅用google、多讀開源社區裡面各路大神的代碼和文檔、多與大神們保持交流,就是最好的學習方式,等到你整明白了整個CS體系的劃分和未來趨勢,再來選一個自己感興趣或者自己擅長的方向,一心一意的鑽研下去,等到那時候再去談什麼尖端科技、造原子彈核潛艇啥的,不要一上來就整一些不切實際的吹牛逼話題,踏實學習、打好基礎、用心寫代碼是你這個階段最應該乾的事。Google,Code,Communication(我稱之為GCC)是最好的提高方式。

以上僅僅針對CS專業的程序猿方向。至於硬體方面從何入手如何提高,我也不是很了解,就不做過多評論。

希望你能大展宏圖!加油!


你連想學什麼方向都不說,我們可沒辦法把你現階段急需的技能樹寫出來。啥,你說想把前沿都學一學?洗洗睡了吧,你能把本科階段的知識都學一學已經很不錯了。


推薦閱讀:

如何又快又好的完成一篇學術論文?
過柱子過不純是一種怎樣的體驗?
做物理科研有多困難?
中國有哪些產品或技術與西方有代差級領先幅度的?
科研人員經常喝酒嗎?

TAG:學習 | 數學 | 科研 | 計算機科學 | 普通高校本科層次大學本科 |