文章目錄
- 一、基礎學習
- 1.別人家的大學(復旦)的培養方案
- 2.渣渣大學
- 二、研究方向
- 三、CS讀研規劃
- 1. 確立目標
- 2. 制定規劃
- 4. 核心競爭力
- 四、著作/期刊
- 五、reference
一、基礎學習
1.別人家的大學(復旦)的培養方案
學碩科研的基本要求
(1)應了解本研究方向的發展動態,基本熟悉本研究課題的文獻,
(2)掌握英語,讀寫英語外文,
(3)具有一定的發現問題、表述問題、分析問題、解決問題的能力,會利用本專業工具,
(4)應至少以第一作者在核心期刊上發表1篇以上較高水平的學術論文,
能在國內外重要的學識訓議上發表有見解的論文,能在導師的指導下,開展本專業熱點問題的研究作業,能在導師指導下,跟蹤本專業前沿研究方向的發展,
(5)研討會次數:
討論班每周一次,每學期每個研究生報告1次以上,參加討論班的總次數應在60次以上,每年聽3次以上的前沿講座,
學位論文的基本要求
(1)學位論文選題應屬于本學科專業有關研究方向的基礎研究或應用研究中的重要課題,對于學科發展或產品開發應用有一定的意義, (2)文獻綜述應基本掌握與課題有關的國內外研究發展動態,能明確提出待解決的問題,
(3)研究作業部分應有一年以上的作業量,有一定的創造性成果,至少以第一作者在國內核心刊物上發表一篇以上(含一篇)的研究論文,且論文內容與學位論文中 的部分內容密切相關,
(4)科學碩士生申請學位發表的論文必須以第一作者發表(特殊情況除外)、且第 一署名單位為復旦大學,滿足以下要求之一:
1、根據《中國計算機學會推薦國際學識訓議和期刊目錄》中的A類國際學識訓議或 期刊上發表(含錄用)的論文(長文);
2、根據《中國計算機學會推薦國際學識訓議和期刊目錄》中的B類國際學識訓議或 期刊上發表(含錄用)的論文(長文);
3、在列入ESI的國際學術期刊上發表(含錄用)論文;
4、在《復旦大學學位與研究生教育國內期刊指導目錄》中的A類期刊上發表(含錄用)論文,
一區二區是中科院根據雜志的影響因子(平均每篇文章兩年參考數)對雜志按照專業進行劃分,一區是占前5%,二區是前20%對期刊,一區二區一般認為是該專業的top期刊了,一區二區期刊有很多,比如,大家熟知的nature science就是綜合類一區,
清華發布新版計算機學科推薦學識訓議和期刊串列
別人家的大學課表(不包括選修課的部分)


2.渣渣大學
可以看出渣渣大學和別人家的大學差距是非常巨大的,,,,,,,,
下面只列出必修課,不包含3門選修課和導師的任務(橫&縱向課題):
(1)第一學期:
機器學習導論+矩陣論及其應用(另外中特+英語)
(2)第二學期:
演算法分析與設計+人工智能與深度學習導論+2門AI相關專題課
(3)第三學期:
論文寫作學術規范+機器視覺與模式識別+自然語言處理
軟體工程技術與設計+無線網路與移動計算+計算機應用綜合實踐+大資料&電商智能
——另外實踐和科研各為2個學分,學位論文3個學分,
二、研究方向
繼續看別人家的大學,,,研究方向的介紹

三、CS讀研規劃
說實話自己還不知道怎么規劃,也還沒選好導師,看到知乎的YANBO大佬的經驗貼內心有點震撼,下面是YANBO的計算機碩士讀研規劃,后面再補寫自己的計劃:
YANBO大佬上海某高校計算機專業,科班出身,
熱愛存盤與虛擬化技術,在相關領域有一定的技識訓累,包括資料庫、rocksdb存盤引擎、檔案系統、NVMe驅動、虛擬化以及kernel by pass技術,在秋招中有幸獲得阿里、騰訊、百度、Intel、網易互娛、金山云等公司的offer,在此希望能夠為未來的同學介紹一些碩士期間的學習路線,希望大家能夠有效利用三年的學習時間,積累自己的技術堆疊,
1. 確立目標
大家剛入學,首先要對自己未來三年后的規劃有明確的目標,對于一般人來說(大神除外),無非主要關注兩種選擇,一是未來能夠加入到喜歡的公司繼續搬磚做工程技術(工程型),另外一種是希望能夠做research,參與最前沿的科研專案,將來能夠將自己的學術成果發表在頂會上(學術型),只要大家能夠確定自己的目標,制定相應的學習計劃,堅持下去,就一定會有識訓,當然,在自己剛入學還在迷茫時候,可以試著嘗試先選定一個努力的目標,只有試了才知道自己適不適合,博主本人屬于工程學術兼備型,具體的學習規劃后面將詳細介紹,
2. 制定規劃
在這不具體介紹每個專業的學習規劃是什么,因為計算機方向實在太多了,對于每一個方向都要涉及到特別多的技識訓累,在這是講不清的,況且博主對其它方向也不是特別熟悉,在這里主要告訴大家,該如何摸索自己的學習規劃,坦白的說,就是在這個方向上我如何學哪些東西,才能在將來秋招大隊中顯示出自己獨特的地方,在此以博主自己的“存盤”方向為例,來說明如何摸索,
基礎知識
基礎知識相當重要,主要是計算機相關的必修課,如語言相關、資料結構、作業系統、資料結構、計算機網路等,基本上對于所有的計算機方向來說,都離不開上述基礎知識,雖然說把這些學好,貌似還做不了什么成就出來,但沒有這些基礎知識是萬萬不能的,然而,大多數同學對基礎知識還有很大的誤區,認為所從事的作業就是以語言劃分為主的,本科加碩士七年時間,只要熟練掌握一門語言,例如Java,未來就能勝任一份作業,這是遠遠不夠的,編程語言是計算機學科中最重要的一項基礎知識,也是做其它事情的先前條件,就好像剛出生的小孩子一樣,學會了走路說話,似憾訓不能自己獨立做一些事情,然而如果連說話走路都還沒有達到的話,還說明還是需要很多的時間來成長的,其實編程語言是大二就應該熟練掌握的知識,而且至少需要會三種不同的編程語言,個人認為,語言只是基礎,必須熟練掌握,沒有哪個語言好,哪個語言不好,各類編程語言(C/C++、Java、Python、Shell、Golang等)都是相通的,不存在會不會的問題,團隊需要什么,老板需要什么,大家就用什么,即使不熟悉的,看個兩三天基本就應該可以上手作業了,
以存盤方向為例,這是我遇到的各種編程語言的使用場景:
C:底層基本都是用C寫的(例如檔案系統、driver),C是我個人使用最多的語言,
C++:由于喜歡鉆研資料庫的原始碼,因此如果要自己動手修改MySQL內核、Rocksdb引擎等,都必須掌握C++,否則原始碼看不懂,自己改內核也無從下手,
Python:因為在論文中,博主經常會遇到一些演算法方面的研究,因此在模擬各類不同的演算法時,經常會選用Python最為測驗語言,
Shell:由于經常操作Linux,對于一些經常使用的集成測驗,都會手寫shell腳本來完成,并且針對一些有規律的重復性操作,自己經常會寫一些shell腳本來控制,大大提高了自己的作業效率,
Golang:由于在深圳某T公司實習的時候,專案需要優化Kafka的客戶端,因此使用golang進行重構,雖然之前沒接觸過golang,但看了一天教程,基本第二天就直接開始用golang來coding了,
此外還有資料結構、作業系統等,此處不再多敘述,如果在基礎知識方面還很欠缺的話,建議多花額外的時間補習,
必備工具
熟練掌握各類工具真的是事倍功半,最早的時候沒有在這方面投入很多精力,導致失去了很多東西,因此建議大家在自己方向上的必備工具一定要花時間去學習,這是未來在效率上和別人競爭的神器,下面還是以我的專業"存盤"方向為例,來說明工具的重要性,
在做存盤相關的技術時,經常會遇到行一些奇葩的bug,例如I/O hang,segmentation fault等,此外,存盤方面大部分的主要關注點是性能的提升,因此不同的型別的性能評估測驗也是必備項,此外,對于經常寫代碼的同學來說,好的編輯器,例如vim,各種除錯、測驗工具都是必不可少的,
fio: 大名鼎鼎的fio,用來直接評估裸盤以及檔案系統的I/O性能,
perf:可以用來生成火焰圖分析程式中的熱點函式以及CPU使用率等,直觀的分析出程式中的瓶頸以及問題所在,
cgroup:在做性能評估的時候,經常會遇到為了達到真實的使用場景,用于一些資源限制,系統資源分配管理的工具,
gdb:Linux下編程,尤其是系統軟體,都離不開gdb的除錯,尤其經常遇到segmentation fault的時候,熟練的使用gdb決定了debug的速度,
valgrind:程式檢測工具,就算再嚴謹的人,難免會遇到一些疏忽的意向不到的錯誤,例如memory leak,因此,熟練使用這類工具能夠保證代碼的質量,提前解決一些意想不到的bug,
vim:vim真的是特別強大的編輯器,尤其是在Linux環境下作業的同學,vim的常用配置方法以及各種快捷鍵都是必須要熟練掌握的技術,
此處不再一一介紹,主要是向大家說明工具的重要性,
提升階段
在有了牢固的基礎知識以及熟練掌握各類神器工具之后,后面需要開始進階學習,并不斷的動手提升自己,
首先是基本的進階,就是一些常見的演算法與編程,建議可以通過在各類編程平臺上動手練習(例如leetcode),一是鍛煉自己的演算法思維以及語言的熟練度;其次是學習其它大神的寫代碼規范,如果能夠堅持一到兩年,每天至少一道題的話,會有很大的提高,這個程序是量變到質變的程序,
其次是閱讀學習一些優秀專案的原始碼,如果能夠將一個專案理解到一行行代碼程式的話,才是真正的學習到其精華,并且能夠加深對其的認識,例如,我們都學過作業系統,知道作業系統基本的執行緒管理、記憶體管理、I/O系統等,但都是理解在文字概念的層面,如果能夠深入內核原始碼,去細細品味每一個子模塊,每一個資料結構的話,對個人的技術來說是很大的提升,例如,在博主大四的時候,便開始閱讀Linux內核檔案系統與記憶體管理相關的原始碼,當然,當你第一次看這么龐大的專案的時候,一定是一臉懵逼,不知所云,所有人都會經歷從不會到會再到精通的程序,沒有人第一次看就能直接看懂的,我們要做的是,堅持不懈,在別人看電視劇的時候,我們在看原始碼,在別人玩游戲的時候,我們還在看原始碼,在別人逛淘寶的時候,我們還在看原始碼,所以當別人在最后抱怨太難放棄的時候,你基本已經上道了,
博主在碩士期間精讀過多個優秀專案的原始碼,ext4、blobstore、Redis、Rocksdb、SPDK、DPDK等,
進階學習
要想在相關領域內學習到最前沿的技術,個人認為有兩個最佳的渠道,一是各類開源社區,二是各類計算機頂會的論文,
首先從開源社區談起,隨著我國互聯網的發展,越來越多的大公司開始倡導去IOE,因此隨之而來的是各種開源專案的不斷崛起,而且越來越多的企業開始使用開源軟體作為底層服務軟體,并且為了更夠更加匹配公司的實際業務環境,越來越多優秀的開發者加入到開源社區當中來,
因此,為了學習到這些新技術的發展方向,要時長關注各類社區的動向,最好能參入其中,首先,若想了解到更多的未來發展方向,可以訂閱社區的mailing list,看社區中的大牛經常會提出什么討論,新的patch等,
其次,再不斷的學習相關原始碼的時候,試著做一些優化,可以向社區提patch,來參與其中,對于大家來說,這個剛開始不容易上手,可以選擇先從檔案和注釋做起,比如有一些檔案寫的不夠全面、不夠規范,或者有一些必要的地方缺少注釋說明,這些都可以作為一個貢獻去向社區提request,
在逐漸的更加熟悉后,可以經常關注該專案的github issues,看是否有一些bug需要解決,可以嘗試幫著社區解bug,其次也可以針對一些該專案缺少的功能,自己進行開發,向社區做貢獻,這是一個很好的學習路徑,
其次是各類計算機頂會,各大公司和名校的最新research都會發表在一些好的計算機會議上,要經常關注每年的會議,精讀自己感興趣領域的最新研究,例如,博主是學存盤方向的,因此經常會關注一些系統和資料庫方面的會議,例如FAST、OSDI、VLDB、USENIX ATC等,例如,經常閱讀這些頂會的論文,你將會發現,如今LSM Tree、用戶態軟體堆疊、Open Channel SSD、RDMA、NVDIMM等,都是目前近幾年無論在企業界還是學術界都特別關心的技術,通過閱讀學習這些優秀的論文,一是能夠學習到其中精妙的系統設計,二是能夠學習到很多表達的技巧(包括presentation、做PPT、畫各類圖等),這些積累都是特別重要的財富,
其次,無論是參與到開源社區中,還是精讀論文,都需要有一個良好的英語基礎,無論是閱讀、寫作、還是聽力和口語都是必須的,因此,每天留出額外的時間去學習英語是必不可少的,博主本人在這方面就有些缺失,因此目前仍在不斷努力加強中,
4. 核心競爭力
確立了目標與學習計劃是遠遠不夠的,態度決定一切,最主要的還是腳踏實地,一步步地去學習,當然,學習的程序中難免會遇到很多困難,最主要的還是堅持不懈,勇敢的去戰勝困難,要向優秀的人看齊,不要被外界的東西所打擾,例如,書還沒看兩頁,就去打游戲了,剛配了一個環境,遇到點困難就放棄了,轉身去看電視劇了,這樣是萬萬不能的,
要有堅定和果斷的意志,以博主本人碩士期間的生活舉例,通常周中晚上都是12點、1點睡覺,早上一般都是7點吃過早飯就坐在實驗室了,中途從不玩手機、不打游戲、不看劇、不逛淘寶的,但是周末喜歡出去瘋玩兩天,周末除了特殊情況需要加班加點趕論文外,一般情況周末是不去實驗室的,因此,可以做到勞逸結合,但個人非常喜歡技術,曾經,修改一個開源專案,自己琢磨到半夜,在遇到問題真的很難過,但在自己的堅持下,當新的功能可以完全跑起來的時候,半夜回去躺下都激動不已,難以入眠,
四、著作/期刊

(一)著作
1、The Art of Computer Programming,Volume 1:Fundamental Algorithms,3rd Edition,Donald.E.Knuth,Prentice Hall
2、James F.Kurose,Keith W.Ross,Computer Networking,Pearson Education,2001
3、M.J.Zaki and C.-T.H,editor.Large-Scale Parallel Data Mining.Springer,2002
4、Jiawei Han and Micheline Kamber.Data Mining:and Technique.Morgan Kaufmann Publishers,2006
5、Ian Sommerville,Software Engineering,8th Edition,Pearson Education,2006
6、Richard.Stevens.Unix.Network.Programming.Vol.1 and 2,Addison-Wesley
7、Randal E.Bryant and David R.Ohallaron,Computer Systems:A Programmer Perspective,Prentice-Hall,2005
8、Tanenbaum.潘愛民譯.計算機網路(第4版).清華大學出版社
9、Margarent H.Dunham.郭崇慧,田鳳占等譯.資料挖掘教程.清華大學出版社
10、尼爾森.鄭扣根等譯.人工智能.機械出版社
11、Patrkzk Henry著.人工智能.清華大學出版社
12、Abraham Silberschatz著.資料庫系統概念.高等教學出版社
(二)期刊
1、Artificial Intelligence
2、IEEE Transaction on Pattern Analysis and Machine Intelligence
3、ACM Transaction on Database Systems
4、IEEE Transaction on Knowledge&Data Engineering
5、Journal of Data Mining & Knowledge Discovery
6、Computer Networks
7、Distributed Computing
8、Information syatems
9、計算機學報,計算機學會主辦,科學出版社
10、軟體學報,中國科學院軟體研究所和中國計算機學會聯合會主辦
五、reference
計算機碩士如何規劃研究生學習與生活
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/273230.html
標籤:其他
