計算機科學與技術學什么,需要做哪些準備?
不廢話,直接上干貨。首先拿到某985院校的計算機科學與技術的培養(yǎng)方案。拿到最精確的信息,學最重要的知識點。

一、學習好一門編程語言
可以參考我這個回答,這個回答有理有據(jù),通過數(shù)據(jù)分析,用數(shù)據(jù)論證了如何選擇編程語言:https://www.bilibili.com/video/BV1T84y117e3/
二、學習網絡編程和網絡原理
目前的互聯(lián)網時代,程序基本上都離不開網絡,我個人覺得了解計算機網絡是必須的,在大學的課程中,基本上會開設這門課。
不知道大家有沒有想過,一臺計算機是怎么把數(shù)據(jù)發(fā)給另外的計算機的呢?我們可以把問題再分解一下:
1、兩臺計算機完全沒有連接,怎么通信?
2、全世界有那么多計算機,如何識別呢?---類比到人類,用什么來識別你是一個真真正正存在的人?也就是說如何識別那臺有特點的計算機呢?有人說我們可以用 MAC或者 IP 來唯一標識,可是,全世界那么多計算機,有了這個IP,我們如何查詢呢?難道去遍歷嗎?
3、多個程序同時發(fā)消息給一臺計算機,計算機是如何準確把這些信息拿到,并分配給這些不同程序的呢?
4、如何處理丟失的信息?
如果說大家把這幾點信息理解了,那么網絡編程的原理就能理解一大半了。在這里我只是舉個例子,具體我不展開了。
關于推薦書籍大家一般都推薦《計算機網絡:自頂向下》、《圖解http》這兩本,但我看了一下,術語太多,難理解,不適合初學者。
我覺得兩本就夠了,尹圣雨《TCP/IP網絡編程》韓國人寫的,都是通過舉例子,寫得非常好,大概一星期就能看完了;第二本就更好了,來自于游雙的《linux高性能服務器》,我就是看了這本書正式從嵌入式端轉為服務器開發(fā)的。
具體怎么學?紙上學來終覺淺,絕知此事要躬行。我是把里面的demo代碼一個個敲完的,收獲非常大,強烈推薦。
三、學習操作系統(tǒng)原理
操作系統(tǒng)是真的難理解,所以要選擇一本好的教材是非常非常重要的,我強烈推薦一本寶藏書籍,叫做《操作系統(tǒng)哲學》。我個人建議不要去學那些網上推薦的什么《現(xiàn)代操作系統(tǒng)》、《操作系統(tǒng)—精髓與設計原理》、《深入理解計算機操作系統(tǒng)》,我看過目錄,用一個詞來形容就是:枯燥無味。當我看了《操作系統(tǒng)哲學原理》之后,我真是太佩服這個作者了,能夠把如此索然無味的操作系統(tǒng)寫得如此有趣。


不得不佩服這位大佬的智慧,吐血推薦。說實話,在我畢業(yè)之前,我是完全不知道如何去理解操作系統(tǒng)。
四、學習數(shù)據(jù)結構與算法
數(shù)據(jù)結構是相互之間存在一種或多種特定關系的數(shù)據(jù)元素的集合。數(shù)據(jù)結構是一門研究非數(shù)值計算的程序設計問題中的操作對象,以及它們之間的關系和操作等相關問題的學科。那怎么學習數(shù)據(jù)結構??
1、記憶,記住算法思想
我覺得這個是數(shù)據(jù)結構與算法學習最基礎的部分。
學完之后,你至少得能給人說明白,什么是”堆?!?,什么是”平衡二叉樹“等等等吧。我之所以說”記住“,是希望這些能夠形成長久記憶,存儲到你的”硬盤“里,而不僅僅在學習的時候過了一遍你的”內存“。
例如,學習哈夫曼樹的時候。哈夫曼樹的定義:WPL(帶權路徑長度)最小的二叉樹;哈夫曼樹的特點:(1)沒有度為1的結點;(2)n個葉子結點的哈夫曼樹共有2n-1個結點;(3)哈夫曼樹的任意非葉節(jié)點的左右子樹交換后仍是哈夫曼樹。關于”數(shù)據(jù)結構“,需要記憶的內容也需要自己在其中慢慢領悟。
至于”記住算法思想“,舉個例子,思考我們如何構造一個”哈夫曼樹“。當然,在知道它的定義后,我們可以自己去設計一個算法。如果,自己可以想出來,恭喜你。如果自己沒想到,再看看先人的解決辦法后,不是僅僅“驚嘆”一聲,更要去記住它。我強調“記住”,并沒有死記硬背的意思,而是,很多東西的理解和創(chuàng)新都是以記憶為前提的。
2、練習,用編程語言去實現(xiàn)某一數(shù)據(jù)結構上的算法
因為人的精力有限,千萬不要貪多,只需要搞定那些常見的就行了,這就足以去搞定90%以上的公司,如果是算法崗位就當我沒說,如果只是一個開發(fā)崗位,那就只需要掌握最常用、最基礎的20個數(shù)據(jù)結構與算法,學習他們的“來歷”、“特點”、“適合解決什么問題”和“實際的應用場景”。
數(shù)據(jù)結構:數(shù)組、鏈表、棧、隊列、散列表、二叉樹、堆、跳表、圖、Tire樹
算法:遞歸、排序、二分查找、搜索、哈希算法、貪心算法、分治算法、回溯算法、動態(tài)規(guī)劃、字符串匹配算法。具體分為3個小步驟:
(1)邊學邊練,每周花 1~2 小時集中攻關一個數(shù)據(jù)結構和算法,全部寫出來。
(2)?多思考、多拓展、多理解,找到適合的方法去解決問題。
(3)自我激勵,每次學習完做一篇學習筆記。
吐血推薦書籍:程杰老師的《大話數(shù)據(jù)結構》

五、學習設計模式
設計模式是在軟件工程實踐過程中,軟件開發(fā)者們總結出的良好的編程方法,使用設計模式能夠增加系統(tǒng)的健壯性,易修改性和可擴展性,當你進行開發(fā)的軟件規(guī)模比較大的時候,良好的設計模式會給編程帶來便利,讓系統(tǒng)更加穩(wěn)定。
怎么學習設計模式??
1、記憶,記住典型案例
2、看一些開源代碼,比如redis;
3、練習,用編程語言去實現(xiàn)一些設計模式;
4、吐血推薦書籍:程杰老師的《大話設計模式》

非常非常好的設計模式的入門書?;旧弦舶衙總€設計模式講清楚了。國內很多教材和教師講述專業(yè)知識都是很枯燥的,就因如此才把很多初學者拒之門外,讓一部分人喪失了學習興趣。而這本書則類似于少數(shù)名師一樣,采用交互式及啟發(fā)式的講述方式,在不知不覺中向讀者傳授了知識。有些人傾向于像專業(yè)論文一般嚴謹?shù)谋硎龇绞剑绱艘詠碓诶斫馍暇鸵嗷ㄒ恍┕し蛄?。就目前而言,像這本書一樣,以大家所熟知的例子來描述問題,步步深入,具有中國特色風格的書,才是我們更加需要的。把這些設計模式讀進去了,那么你對編程的理解就會更上一層樓。