GitHub 上這份計(jì)算機(jī)自學(xué)指南火了~
https://github.com/izackwu/TeachYourselfCS-CN/blob/master/TeachYourselfCS-CN.md
你應(yīng)當(dāng)學(xué)習(xí)哪些科目,為什么?
對(duì)于這些科目,最好的書(shū)籍或者視頻課程是什么?
簡(jiǎn)而言之
大致按照列出的順序,借助我們所建議的教材或者視頻課程(但是最好二者兼用),學(xué)習(xí)如下的九門(mén)科目。目標(biāo)是先花 100 到 200 個(gè)小時(shí)學(xué)習(xí)完每一個(gè)科目,然后在你職業(yè)生涯中,不時(shí)溫習(xí)其中的精髓??。
| 科目 | 為何要學(xué)? | 最佳書(shū)籍 | 最佳視頻 |
|---|---|---|---|
| 編程 | 不要做一個(gè) “永遠(yuǎn)沒(méi)徹底搞懂” 諸如遞歸等概念的程序員。 | 《計(jì)算機(jī)程序的構(gòu)造和解釋》 | Brian Harvey’s Berkeley CS 61A |
| 計(jì)算機(jī)架構(gòu) | 如果你對(duì)于計(jì)算機(jī)如何工作沒(méi)有具體的概念,那么你所做出的所有高級(jí)抽象都是空中樓閣。 | 《深入理解計(jì)算機(jī)系統(tǒng)》 | Berkeley CS 61C |
| 算法與數(shù)據(jù)結(jié)構(gòu) | 如果你不懂得如何使用棧、隊(duì)列、樹(shù)、圖等常見(jiàn)數(shù)據(jù)結(jié)構(gòu),遇到有難度的問(wèn)題時(shí),你將束手無(wú)策。 | 《算法設(shè)計(jì)手冊(cè)》 | Steven Skiena’s lectures |
| 數(shù)學(xué)知識(shí) | 計(jì)算機(jī)科學(xué)基本上是應(yīng)用數(shù)學(xué)的一個(gè) “跑偏的” 分支,因此學(xué)習(xí)數(shù)學(xué)將會(huì)給你帶來(lái)競(jìng)爭(zhēng)優(yōu)勢(shì)。 | 《計(jì)算機(jī)科學(xué)中的數(shù)學(xué)》 | Tom Leighton’s MIT 6.042J |
| 操作系統(tǒng) | 你所寫(xiě)的代碼,基本上都由操作系統(tǒng)來(lái)運(yùn)行,因此你應(yīng)當(dāng)了解其運(yùn)作的原理。 | 《操作系統(tǒng)導(dǎo)論》 | Berkeley CS 162 |
| 計(jì)算機(jī)網(wǎng)絡(luò) | 互聯(lián)網(wǎng)已然勢(shì)不可擋:理解工作原理才能解鎖全部潛力。 | 《計(jì)算機(jī)網(wǎng)絡(luò):自頂向下方法》 | Stanford CS 144 |
| 數(shù)據(jù)庫(kù) | 對(duì)于多數(shù)重要程序,數(shù)據(jù)是其核心,然而很少人理解數(shù)據(jù)庫(kù)系統(tǒng)的工作原理。 | 《Readings in Database Systems》?(暫無(wú)中譯本) | Joe Hellerstein’s Berkeley CS 186 |
| 編程語(yǔ)言與編譯器 | 若你懂得編程語(yǔ)言和編譯器如何工作,你就能寫(xiě)出更好的代碼,更輕松地學(xué)習(xí)新的編程語(yǔ)言。 | 《Crafting Interpreters》 | Alex Aiken’s course on Lagunita |
| 分布式系統(tǒng) | 如今,多數(shù)?系統(tǒng)都是分布式的。 | 《數(shù)據(jù)密集型應(yīng)用系統(tǒng)設(shè)計(jì)》 | MIT 6.824 |
還是太多?
如果花幾年時(shí)間自學(xué) 9 門(mén)科目讓人望而卻步,我們建議你只專注于兩本書(shū):《深入理解計(jì)算機(jī)系統(tǒng)》 和 《數(shù)據(jù)密集型應(yīng)用系統(tǒng)設(shè)計(jì)》。根據(jù)我們的經(jīng)驗(yàn),投入到這兩本書(shū)的時(shí)間可以獲得極高的回報(bào)率,特別適合從事網(wǎng)絡(luò)應(yīng)用開(kāi)發(fā)的自學(xué)工程師。這兩本書(shū)也可以作為上面表格中其他科目的綱領(lǐng)。
為什么要學(xué)習(xí)計(jì)算機(jī)科學(xué)?
全球短信系統(tǒng)每日收發(fā)約 200 億條信息,而僅僅靠 57 名工程師,現(xiàn)在的 WhatsApp 每日收發(fā) 420 億條。 — Benedict Evans (@BenedictEvans)?2016 年 2 月 2 日
23333 然而他們...?pic.twitter.com/XVNYlXAHar — Jenna Bilotta (@jenna)?2017 年 3 月 4 日
分科目指引
中文翻譯新增:
關(guān)于 SICP 國(guó)內(nèi)視頻觀看地址
MIT 的免費(fèi)視頻課程(中英字幕)
Brian Harvey 開(kāi)設(shè)的 SICP 課程(英文字幕)
Scheme 學(xué)習(xí)的相關(guān)資源參見(jiàn):https://github.com/DeathKing/Learning-SICP
更詳細(xì)的補(bǔ)充說(shuō)明:#3
新版原文刪除了對(duì)?《Concepts, Techniques, and Models of Computer Programming》?一書(shū)的推薦,但這本書(shū)對(duì)各種編程模型有深入的見(jiàn)解,值得一讀。所以譯文中依然保留。?— 譯者注


硬件是平臺(tái)。 — Mike Acton, Engine Director at Insomniac Games?(觀看他在 CppCon 上的演說(shuō))

— Richard Hamming

如果人們不相信數(shù)學(xué)是簡(jiǎn)單的,那么只能是因?yàn)樗麄儧](méi)有意識(shí)到生活有多么復(fù)雜。 — John von Neumann


你無(wú)法盯著水晶球預(yù)見(jiàn)未來(lái),未來(lái)的互聯(lián)網(wǎng)何去何從取決于社會(huì)。 — Bob Kahn


不要做一個(gè)只寫(xiě)樣板代碼的程序員。相反,給用戶和其他程序員創(chuàng)造工具。從紡織工業(yè)和鋼鐵工業(yè)中學(xué)習(xí)歷史教訓(xùn):你想制造機(jī)器和工具,還是操作這些機(jī)器? — Ras Bodik 在他的編譯器課程伊始

常見(jiàn)問(wèn)題解答
人工智能:通過(guò)觀看視頻并完成 Pacman 項(xiàng)目來(lái)學(xué)習(xí) Berkeley 的 AI 課程。至于教材,使用 Russell 和 Norvig 編寫(xiě)的?《人工智能:一種現(xiàn)代方法》。
機(jī)器學(xué)習(xí):學(xué)習(xí)吳恩達(dá)在 Coursera 上的課程。耐心學(xué)習(xí),先確保理解了基礎(chǔ)概念再奔向類如深度學(xué)習(xí)的誘人新主題。
計(jì)算機(jī)圖形學(xué):學(xué)習(xí) Berkeley CS 184 課程的材料,使用《計(jì)算機(jī)圖形學(xué):原理及實(shí)踐》作為教材。
https://github.com/izackwu/TeachYourselfCS-CN/blob/master/TeachYourselfCS-CN.md

推薦大家關(guān)注下面公眾號(hào)
每天分享一個(gè)GitHub項(xiàng)目
