親妹:計算機專業(yè)應(yīng)該怎樣規(guī)劃自己的大學(xué)四年
大家好,我是二哥呀!
雖然今天是工作日,但講真,我打算好好摸一天老板的魚,把今天作為休息日來對待。所以,開頭就簡短的和大家聊兩句吧。
好久沒帶三妹來給大家聊聊天了,老讀者們講心里話,是不是有那么一點點想念呢???
新來的讀者可能這時候內(nèi)心有很多問號:“三妹是誰?”
這里就簡單交代下背景哈,二哥有個親妹,去年上的大一,今年大二,在我的安排下,她也選的計算機專業(yè),做了一名程序媛。
前幾天,帶三妹去逛街,打算給她買雙鞋子。店員很熱情,笑嘻嘻地說:“你們要不要選個情侶款?”
我連忙說:“這是我妹!”
店員以為我在解釋,還將信將疑。可我妹不高興了,“我哥有那么顯年輕嗎?”
我心里狂喜:健身看來初見成效哈,以后還得繼續(xù)堅持,爭取練出來個 8 塊腹肌。
好了,跟大家套完近乎后言歸正傳:來聊聊計算機專業(yè)應(yīng)該怎樣規(guī)劃自己的大學(xué)四年。
假如不讀研的話,大學(xué)四年時光應(yīng)該是人生當(dāng)中最幸福、最快樂、最無憂無慮的四年了。拿春夏秋冬來當(dāng)做人的一生,大學(xué)四年應(yīng)該是春與夏交接的時分。
規(guī)劃的好,學(xué)有所成,走到社會上后就是精英,順風(fēng)順?biāo)?/section> 規(guī)劃的差,一無是處,走到社會上后注定是處處碰壁。
關(guān)于大學(xué)期間的學(xué)習(xí)規(guī)劃和路線,二哥來分享一些自己的經(jīng)驗,希望能給大家一點點幫助和啟發(fā)~
先給大家分享一套方法論。

可能沒那么全面,但大局觀肯定是沒毛病的。
01、打基礎(chǔ)
基礎(chǔ)不牢,地動山搖。
不管是以后從事什么方向,想要吃得開,這些前置的基礎(chǔ)知識肯定是必須拿下的。
當(dāng)然了,如果你只是想混口飯吃,報個班,短期培訓(xùn)下也是可以的。
但如果想比同齡人好一些,計算機專業(yè)的這些核心知識,比如說計算機組成原理、操作系統(tǒng)、數(shù)據(jù)結(jié)構(gòu)與算法、編譯原理等等還是要去學(xué)的。
如果你要問我學(xué)這些有用嗎?
我直接告訴你,有用,可能你也不會信,但最后你找工作時候的薪資自然就會告訴你。
02、明確方向
大的方向就是做硬件還是軟件,再細(xì)分的話,就是前端、后端、算法、客戶端這些,當(dāng)然了,實際情況還可以分的更細(xì),比如說算法分為數(shù)據(jù)挖掘,還是深度學(xué)習(xí)等等。
一旦確定了自己的方向,就千萬不要心猿意馬。
選方向就好像談戀愛一樣,就要專一,心猿意馬的話,可能最后全打水漂。
03、打怪進(jìn)階
我一直強調(diào)的:編程是聽不會看不會的,只能練會。初學(xué)編程的階段,就是要 coding 啊!
不僅要完成課業(yè),還要利用業(yè)余時間多參加一些比賽,像 ACM 金牌這種還是很吃香的,詳情可以參照下面這篇:
當(dāng)然了,如果你不是一名天賦異稟的選手,也沒關(guān)系,可以自主搞一些開源作品,或者成為一些優(yōu)秀開源項目的貢獻(xiàn)者,都是對自己非常不錯的鍛煉。
如果你和老師關(guān)系走得比較近,老師手頭上有一些資源的時候,也會喊你參與。這時候,別計較錢多錢少的事,就當(dāng)是增加一下自己的項目經(jīng)驗。
如果能碰上一個比較出彩的項目,找工作的時候?qū)懙胶啔v上,是個不錯的加分項。
看到這,可能很多同學(xué)要問,那具體到每個學(xué)期,應(yīng)該如何安排學(xué)習(xí)呢?
這里有一張哈工大的課程表,大家可以參考。

那如果是讓我重新回到學(xué)校,我會怎么安排主修的課程呢?
大一(上):學(xué)好計算機基礎(chǔ)。
推薦學(xué)習(xí)資料,國防科技大學(xué)的計算機基礎(chǔ)課:
https://www.icourse163.org/course/NUDT-17003?tid=1465305450
計算機科學(xué)速成課:
https://www.bilibili.com/video/av21376839
大一(下):編程語言入門,可以選擇 C語言或者 Python 語言。
推薦學(xué)習(xí)資料,阮一峰老師的《C語言入門教程》:
https://wangdoc.com/clang/
配合翁愷教授的視頻課:
https://www.icourse163.org/course/ZJU-199001?from=searchPage
大二(上):學(xué)習(xí)一門面向?qū)ο蟮木幊陶Z言,可選 Java 或者 C++。另外就是對數(shù)據(jù)結(jié)構(gòu)于算法發(fā)起沖擊。
推薦學(xué)習(xí)資料,二哥的《Java 程序員進(jìn)階之路》:
https://github.com/itwanger/toBeBetterJavaer
配合尚硅谷宋紅康老師的視頻課:
https://www.bilibili.com/video/BV1Kb411W75N
大二(下):開始搞計算機組成原理、操作系統(tǒng)、計算機網(wǎng)絡(luò)。
大三:繼續(xù)理論知識學(xué)習(xí)的同時,投入更多時間和精力到實戰(zhàn)上面,可以參與老師安排的項目,或者搞個人的開源作品,都 OK。
如果大三下半學(xué)期就有實習(xí)機會的話,可以提前去體驗一下互聯(lián)網(wǎng)的工作環(huán)境,應(yīng)該會大有所獲的,因為學(xué)校課程的學(xué)習(xí)和實際的工作之間會有比較大的差別。
大四:需要考研的話,可以準(zhǔn)備起來了;不需要的話,就繼續(xù)深耕,然后準(zhǔn)備秋招、春招,上岸。
那除了緊跟學(xué)校的課程外,自學(xué)這塊有什么建議呢?
我推薦視頻入門+書本輔助+大量 coding 的方式。
我最不推薦的方式,就是抱著所謂的大黑皮書使勁地啃呀啃。黑皮書是經(jīng)典,但如果不是天賦異稟的話,很可能四年都不一定能把一本書啃下來。
這不是嚇唬大家,因為枯燥的理論知識真的很容易讓一個人產(chǎn)生厭學(xué)的情緒,然后既耽誤了時間,又什么都沒學(xué)到,慘的一筆。
一開始,還是推薦大家先看視頻入門。等自己有一定的知識儲備后,再去讀書,效果會好很多。
這里給大家推薦一些網(wǎng)上經(jīng)典的計算機公開課吧,都是經(jīng)得起時間考驗,評價非常高的。
如果英語功底非常扎實的話,推薦去看國外頂尖大學(xué)的公開課。
像數(shù)據(jù)庫實驗課,國內(nèi)的課程一般都是對 MySQL 進(jìn)行增刪改查,然后做個管理系統(tǒng),國外往往會從 0 開始實現(xiàn)一個數(shù)據(jù)庫。
像操作系統(tǒng),國內(nèi)通常會考 PPT 上那些需要死記硬背的知識點,而國外往往會要求實現(xiàn)一個簡單的操作系統(tǒng)內(nèi)核。
但如果英文功底沒那么扎實的話,就不建議去看了,因為如果你連單詞都不知道什么意思的話,走馬觀花地看一遍,并不會起到多好的學(xué)習(xí)效果,同樣也是浪費時間。
這種情況下,要么去補英語;要么就選擇帶中文字幕的,要么就選擇國內(nèi)相對比較優(yōu)質(zhì)的教程,也不是沒有。
①、操作系統(tǒng)
國外的 MIT6.828 是一門公認(rèn)的硬核課程,是理論與實踐相結(jié)合的經(jīng)典。
https://pdos.csail.mit.edu/6.828/2018/schedule.html
國內(nèi)的「清華大學(xué)公開課:操作系統(tǒng)」口碑也相當(dāng)?shù)牟诲e。
https://open.163.com/newview/movie/courseintro?newurl=ME1NSA351
②、計算機組成原理
國外的安利一門 Coursera 上的課程,從與非門到俄羅斯方塊,簡單來說,這門課會教你怎么從與非門開始造一臺計算機。
https://www.coursera.org/course/nand2tetris1
國內(nèi)的推薦哈工大的這門視頻課,整體評價非常高。
https://www.bilibili.com/video/BV1WW411Q7PF
③、計算機網(wǎng)絡(luò)
國外的推薦斯坦福的 CS144,結(jié)合《計算機網(wǎng)絡(luò):自頂向下方法》這本書。
https://www.scs.stanford.edu/10au-cs144/
國內(nèi)的推薦湖科大教書匠的《計算機網(wǎng)絡(luò)微課堂》,制作得非常用心,是一部不可多得的佳作。
https://www.bilibili.com/video/BV1c4411d7jb
④、數(shù)據(jù)結(jié)構(gòu)與算法
國外的推薦 MIT 6.006,是經(jīng)典的數(shù)據(jù)結(jié)構(gòu)和算法入門課程,涉及到排序、哈希、圖論、動態(tài)規(guī)劃。
https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-006-introduction-to-algorithms-fall-2011/
國內(nèi)的推薦浙江大學(xué)的一個的課程,很系統(tǒng)很經(jīng)典,適合小白入門。
https://www.bilibili.com/video/BV1JW411i731
Talk is cheap, show me the code.
對于計算機專業(yè)來說,我認(rèn)為實踐是非常非常重要的。
不管是搞科研,還是參加工作,最終的本質(zhì)都是要能夠解決問題,交付產(chǎn)品,紙上談兵肯定是行不通的。
對于大學(xué)生來說,實戰(zhàn)的方式主要有三種。
1)參加比賽
比較有含金量的比賽大概有這么幾個:
ACM 天池比賽 阿里巴巴中間件性能挑戰(zhàn)賽
2)參與開源項目
如果有自主開發(fā)能力的話,可以自己搞一個,不要管 low 不 low,比如說圖書管理系統(tǒng)、人臉識別系統(tǒng)等等。
當(dāng)然也可以搞一些高端點的,比如 mini os,編譯器等等。
或者,直接參與網(wǎng)上的一些明星開源項目,比如說 GitHub 上的 mall、miaosha、vhr,可以直接去搜這些關(guān)鍵字。
3)刷題
像浙大的 PTA,像牛客,像LeetCode,都是不錯的刷題去處,不僅能提高編程的思維能力,還可以在找工作的時候“帶一把刷子”。
4)實習(xí)
經(jīng)常有一些小伙伴臨近大四畢業(yè)了,才慌慌張張地跑來說,自己簡歷上沒有項目經(jīng)驗,要不要緊?
如果能在大三的時候出去實習(xí),就趁早去,感受一下互聯(lián)網(wǎng)公司的環(huán)境、氛圍,如果能有幸認(rèn)識一些比較熱心的前輩,那對以后的職業(yè)發(fā)展絕對是大大的利好。
最后,我想提醒大家的兩點是:
1)提升自己的信息檢索能力
互聯(lián)網(wǎng)時代,最不缺的就是信息,甚至說到了泛濫的程度,那如何憑本事找到自己想要的東西,就是一項非常重要的能力了。
2)提升自己的抽象思維能力
抽象是什么?我認(rèn)為是:忽略一個主題中與當(dāng)前問題無關(guān)的那些方面,以便更充分地注意與當(dāng)前問題有關(guān)的方面,一種從個體把握群體、從現(xiàn)象把握本質(zhì)的認(rèn)知過程和思維方法。
我心目中抽象能力最強的當(dāng)屬計算機科學(xué)之父——阿蘭圖靈。

圖靈機就是一個通用的計算機的抽象模型,它有三個組成部件:
一條兩頭都可以無限延伸的紙帶 一個讀寫頭 一個控制器
一舉奠定了現(xiàn)代計算機的科學(xué)理論基礎(chǔ)。
好了,就給大家聊這么多吧。大學(xué)四年看似很長,其實很短,不要浪費一丁點時間——二哥作為過來人,真的是掏心掏肺。
領(lǐng)先一個人可能只需要一點點努力,追趕一個人可能需要花一輩子的努力。

我是二哥呀,我們明天見~
沒有什么使我停留——除了目的,縱然岸旁有玫瑰、有綠蔭、有寧靜的港灣,我是不系之舟。
推薦閱讀:
