複習 Computer Science 的資源
在上一份工作,偶爾會有種「要是我當初有認真念書」就好的感覺。
離職後,邊休息邊複習一些基礎科目:作業系統、計算機網路、資料結構,而網路上已經相當多人描述過這類主題,提供各式各樣的教材,這篇文章的目的是記錄我最終用來複習的教材。
別人整理好的資源
-
以考研為目標的 [心得] 無補習台大資管考取-讀書資源分享,主要採用各種 MOOC
-
提供各種 CS 基礎科目頂尖教材的 TeachYourselfCS,每個科目提供一個最佳影片,或最佳書籍
-
不僅涵蓋 CS 基礎科目,還收錄各種領域(如 Web、資料科學、分布式系統等)教材的 CS自学指南
-
整理得很好的刷題心得:Leetcode刷題學習筆記–心得統整
關於計算機概論,不少人推薦 CS:APP(可參考 CS:APP學習指引緒論),但可能不是每個人都啃得動
作業系統
我覺得 Mr. Opengate 的 作業系統 Operating System Concepts 系列文 很好理解
計算機網路
《圖解 TCP/IP 網路通訊協定》這本書很不錯,依序講了網路怎麼誕生的、OSI 模型、物理層的連線方式、第二層的 Ethernet、第三層的 IP、第四層的 TCP、UDP、第七層的各種應用協定,以及封包在每一層的長相,還有在家裡、在工作時接觸雲端都很常聽到的技術如:DNS、ICMP、DHCP、NAT、IP 隧道。這本書應該能讓讀者有系統地的認識網路。另外可以參考我對這本書目錄畫的重點。
資料結構與演算法、LeetCode
Arthur Lin 寫的《演算法學習之-Leetcode-破關總指南》 描述了自己的心路歷程,先看過一遍之後可以有效降低焦慮感,並開始按部就班的學習。總而言之,針對每一個主題:先上課、再針對性用題目練習。
在開始介紹教材前,我想先說明:每一份教材涵蓋的主題略有不同,但根據《提升程式設計師的面試力》這本書第 80 頁的整理,你至少應該掌握下列知識:
-
資料結構
-
Linked list
-
Tree
-
Graph
-
Heap
-
Hash table
-
Stack
-
Queue
-
-
演算法
-
Breadth-first search
-
Depth-first search
-
Binary search
-
Merge sort
-
Quick sort
-
-
概念
-
Bit manipulation
-
Recursion
-
Dynamic programming
-
如果想看中文教材,交大彭文志教授的課程有放到 HiSKIO (免費觀看)
如果能接受英文教材,Abdul Bari 製作的課程十分不錯,推薦原因是:在各種 tree traversal 的章節如 preorder,不論是 recursive 或 iterative,他都會一步一步講解,每一步的變數及 stack 的狀態都會講給你聽,因此其教材易於理解又非常友善。
當有任何主題你無法透過單一教材有效理解時,可以透過其他教材補充,藉由不同的描述增進理解程度,alrightchiu 的《演算法與資料結構》系列很棒。