哪個行業(yè)的平均工資最高?
計算機(jī)。
國家統(tǒng)計局的數(shù)據(jù)顯示,2016 年信息傳輸、軟件和信息技術(shù)服務(wù)業(yè)年平均工資為 122478 元,首超金融行業(yè),并于 2017 年再次奪魁。
在互聯(lián)網(wǎng)和人工智能浪潮的推動下,一大批年輕人選擇了 CS(計算機(jī)科學(xué)) 專業(yè),這里面還包括各種轉(zhuǎn)專業(yè)的學(xué)生。
此前營長也給大家推薦過很多學(xué)習(xí)資源,但是大多都是單個資源,比較零散。其實(shí),很多讀者需要的是建議,而不僅僅是資源。
特別是對于自學(xué)的小伙伴來說,為什么要學(xué)習(xí) CS?應(yīng)該學(xué)習(xí)什么?如何選擇教材或者視頻課程?都是讓人困擾的問題。
現(xiàn)在,營長特意為這些小伙伴準(zhǔn)備了一套大餐,希望能幫你厘清方向,消除困惑。
為什么要學(xué)好 CS?
首先,為什么要學(xué)習(xí) CS?
我們知道,任何行業(yè)的從業(yè)人員的專業(yè)水平都是參差不齊的。有人將軟件工程師也分成了兩類:一類是對 CS 這門學(xué)科理解透徹,可以勝任各種挑戰(zhàn)性和創(chuàng)新性的工作;另一類則僅僅是對一些高級工具比較熟悉而已。
雖然兩者都自稱為軟件工程師,而且一開始的起薪都差不多,但是第一類工程師顯然有更大的發(fā)展空間。
比如 WhatsApp 一天要處理 420 億條信息(2016 年 2 月),但當(dāng)時 WhatsApp 只有 57 名工程師,要完成這個挑戰(zhàn)靠第二種類型的工程師是不太可能的。
因此,如果你想成為第一種類型的軟件工程師,踏踏實(shí)實(shí)學(xué)好 CS 才是正途。
怎樣學(xué)好 CS?
在回答了為什么要學(xué)習(xí) CS 這個問題之后,接下來要怎么學(xué)?
其實(shí) CS 不只是編程,還涉及到很多知識。本文將重點(diǎn)介紹編程、計算機(jī)架構(gòu)、算法和數(shù)據(jù)結(jié)構(gòu)、數(shù)學(xué)、操作系統(tǒng)、計算機(jī)網(wǎng)絡(luò)、數(shù)據(jù)庫、計算機(jī)語言和編譯器、以及分布式系統(tǒng)。接下來我們一一分析。
編程
大多數(shù)的 CS 本科課程都是從介紹計算機(jī)編程開始的。營長推薦 Structure and Interpretation of Computer Programs 這本書。
視頻則推薦伯克利大學(xué) Brian Harvey 的 SICP 課程。建議至少學(xué)完 SICP 的前三章,并把練習(xí)題做完。如果你覺得 SICP 的課程太難,可以選擇 How to Design Programs。
傳送門:
https://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book.html
https://archive.org/details/ucberkeley-webcast-PL3E89002AA9B9879E?sort=titleSorter
http://www.htdp.org/
計算機(jī)系統(tǒng)結(jié)構(gòu)
計算機(jī)系統(tǒng)結(jié)構(gòu)是最容易被自學(xué)者忽略的,但是它其實(shí)非常重要。營長推薦 The Elements of Computing Systems 這本書,建議至少看完前 6 章并完成相應(yīng)的作業(yè)。不過這本書并不是完全免費(fèi),因此也可以選擇伯克利大學(xué)的 CS61C 課程:Great Ideas in Computer Architecture,而且可以下載之前的講義。
傳送門:
https://www.nand2tetris.org/
http://inst.eecs.berkeley.edu/~cs61c/sp15/
算法和數(shù)據(jù)結(jié)構(gòu)
學(xué)好算法和數(shù)據(jù)結(jié)構(gòu),將有助于培養(yǎng)你解決問題的能力。營長推薦 The Algorithm Design Manual 這本書,但是真的很貴。不過,這本書的作者很慷慨把這本書的配套視頻免費(fèi)共享到了網(wǎng)上。如果你想練練手,則可以選擇刷 Leetcode。
傳送門:
http://www3.cs.stonybrook.edu/~algorith/video-lectures/
https://leetcode.com/
數(shù)學(xué)
雖然很多人對畏懼?jǐn)?shù)學(xué),但是“計算機(jī)之父”馮·諾依曼曾經(jīng)說過:如果人們不相信數(shù)學(xué)有多簡單,那是因為他們沒意識到生活有多復(fù)雜。
圖片來源:AZ QUOTES
跟計算機(jī)最相關(guān)的數(shù)學(xué)知識當(dāng)屬“離散數(shù)學(xué)”以及“線性代數(shù)”。
如果你想學(xué)好離散數(shù)學(xué),可以閱讀匈牙利的數(shù)學(xué)家 László Lovász 關(guān)于離散數(shù)學(xué)的課程講義。如果你還想更進(jìn)一步,則可以選擇麻省理工的 Mathematics for Computer Science,而且有配套的視頻課程。
至于線性代數(shù),則建議從 Essence of linear algebra 視頻系列開始,然后是麻省理工的相關(guān)視頻課程。
傳送門:
http://www.cs.elte.hu/~lovasz/dmbook.ps
https://courses.csail.mit.edu/6.042/spring17/mcs.pdf
https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-fall-2010/video-lectures/
https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab
https://ocw.mit.edu/courses/mathematics/18-06-linear-algebra-spring-2010/video-lectures/
操作系統(tǒng)
關(guān)于操作系統(tǒng)有很多經(jīng)典書籍,比如 Operating System Concepts和 Modern Operating Systems,但是都價格昂貴,這里營長給大家推薦一本免費(fèi)的作為替代:Three Easy Pieces。
傳送門:
http://pages.cs.wisc.edu/~remzi/OSTEP/
計算機(jī)網(wǎng)絡(luò)
計算機(jī)網(wǎng)絡(luò)是 CS 學(xué)科里最有價值的領(lǐng)域之一。營長推薦 Computer Networking: A Top-Down Approach 這本書以及搭配的練習(xí)題,不過這本書實(shí)在太貴。你也可以選擇斯坦福的在線課程:Introduction to Computer Networking。想要學(xué)好計算機(jī)網(wǎng)絡(luò),最重要的是多做項目。
傳送門:
http://www-net.cs.umass.edu/wireshark-labs/
https://lagunita.stanford.edu/courses/Engineering/Networking-SP/SelfPaced/about
數(shù)據(jù)庫
自學(xué)數(shù)據(jù)庫還是比較難的。營長建議自學(xué)者不要直接看教材,而是通過在線視頻來學(xué)習(xí),比如伯克利的 CS168 課程。那些想了解 RDBMS(關(guān)系型數(shù)據(jù)庫管理系統(tǒng))的讀者,一定要看一下 Architecture of a Database System 這篇論文。此外,Readings in Database Systems 也值得一讀。
傳送門:
https://archive.org/details/UCBerkeley_Course_Computer_Science_186
http://db.cs.berkeley.edu/papers/fntdb07-architecture.pdf
http://www.redbook.io/
計算機(jī)語言和編譯器
對于自學(xué)者,營長推薦斯坦福的在線課程:Compilers。關(guān)于練手項目,營長建議你從 Make a Lisp 開始。
傳送門:
https://lagunita.stanford.edu/courses/Engineering/Compilers/Fall2014/about
https://github.com/kanaka/mal
分布式系統(tǒng)
分布式系統(tǒng)的教材可以選擇 Distributed Systems, 3rd Edition,而且是免費(fèi)的。同時你也可以選擇麻省理工的在線課程:6.824。而且營長還準(zhǔn)備了一份論文清單,供你參考。
傳送門:
https://www.distributed-systems.net/index.php/books/distributed-systems-3rd-edition-2017/
https://www.youtube.com/watch?v=hBWfjkGKRas&list=PLkcQbKbegkMqiWf7nF8apfMRL4P4sw8UL
http://dsrg.pdos.csail.mit.edu/papers/
其他
現(xiàn)在 AI 確實(shí)很火,營長以往也給大家推薦過不少學(xué)習(xí)資源,今天再給大家推薦幾個:
人工智能:伯克利的 Intro to AI 在線課程,以及教材 Artificial Intelligence: A Modern Approach(很貴)。
機(jī)器學(xué)習(xí):吳恩達(dá)的機(jī)器學(xué)習(xí)和深度學(xué)習(xí)課程。(《感動!有人將吳恩達(dá)的視頻課程做成了文字版》)
計算機(jī)圖形學(xué):伯克利的 CS184 在線課程。
傳送門:
http://ai.berkeley.edu/
http://inst.eecs.berkeley.edu/~cs184/fa12/onlinelectures.html
寫在最后
有人可能會問,應(yīng)該從那一門開始學(xué)起?然而這并不是最重要的,克服拖延癥,行動起來才是關(guān)鍵,而且每一門都需要全身心投入至少 100~200 小時的時間。
2018 即將過去,大家共勉。
-
CS
+關(guān)注
關(guān)注
0文章
54瀏覽量
24544 -
計算機(jī)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
3文章
341瀏覽量
22199 -
編譯器
+關(guān)注
關(guān)注
1文章
1636瀏覽量
49172
原文標(biāo)題:如何自學(xué)CS?
文章出處:【微信號:rgznai100,微信公眾號:rgznai100】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論