複習 Computer Science 的資源

在上一份工作,偶爾會有種「要是我當初有認真念書」就好的感覺。
離職後,邊休息邊複習一些基礎科目:作業系統、計算機網路、資料結構,而網路上已經相當多人描述過這類主題,提供各式各樣的教材,這篇文章的目的是記錄我最終用來複習的教材。

別人整理好的資源

關於計算機概論,不少人推薦 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 的《演算法與資料結構》系列很棒

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *