# 電腦科學學習藍圖 這份清單,是我基於台灣國內資工科系的課程規劃加上個人業界經驗彙整而成的,隨著市場需求變化跟技術成長,每個世代要學習的電腦科學知識略有不同,但在基礎知識的部分,不管經過多少歲月,這些都是知識的根基,沒有太多的變化。 學習沒有捷徑,只有最適合自己的路徑與方法,希望可以幫助大家,規劃自己的目標跟最佳學習路徑。 ## 基礎知識 一開始學習電腦科學,強烈建議找一本好的《計算機概論》來認識電腦科學涵蓋的應用範圍與所需前備知識。 前備知識分成三部分,對於一般人,只需要知道怎麼使用電腦,但對於電腦科學專家,掌握《電腦系統原理》知識,必須知道電腦軟、硬體運作的原理。 再來才是真正設計電腦的功能,所以必須學習《電腦程式語言》,根據不同的應用範圍,透過不同程式語言,掌握本機系統、網路服務、資料庫的設計與管理。 為了設計強大的功能,我們必須具備數學能力,設計出許多演算法與計算數據的方式,讓電腦具備接近、甚至超越人腦的思考判斷能力,所以就要學習《數學與演算法》相關知識。 以下是各前備知識的細項科目與學習目標。 ### 總論 - `計算機概論`:初步了解電腦科學的應用範圍與所需知識 ### 電腦系統原理 #### 硬體 - `基礎電子電路`:了解硬體電路的物理性質 - `數位邏輯設計`:了解硬體電路的邏輯運作、設計硬體運算基礎功能 - `計算機組織`:了解電腦處理器的軟、硬體運作原理 - `計算機結構`:了解電腦處理器的軟、硬體進階設計原理 #### 軟體 - `作業系統`:了解軟體系統環境的設計原理 - `編譯器原理 (Compiler)`:了解程式語言轉換到機器語言的設計原理 - `資料庫系統設計`:了解管理資料的方式 #### 網路 - `電腦網路`:了解網際網路運作原理,從硬體運作方式到軟體通訊協定 ### 電腦程式語言 - `結構式程式語言(Structural Language)` - C - `物件導向程式語言(Object-oriented Language)` - C++ - Python - `網路程式語言(Web-related Language)` - Front-end - HTML - CSS - Javascript - Back-end - ASP.NET - JSP - Django/Flask - React - Node.js - Database - SQL ### 數學與演算法 - `微積分 (Calculus)` - `線性代數 (Linear Algebra)` - `工程數學` - `離散數學 (Discrete Mathematics)` - `機率與統計學` - `資料結構與演算法` ## 進階專業領域 ### 電腦系統原理 ### 軟體專案管理 - 軟體工程 - 軟體測試與驗證方法 ### 使用者體驗設計 - Voice UI - GUI - Web - Desktop ### 系統開發與管理 - 嵌入式開發 (Embedded Programming) - 元件(Component) - 系統(System) - 網路程式開發 (Web Programming) - 金融/電子商務 (E-commerce) - 網路服務 (Service) - 本機系統開發 - 多媒體應用 - 網路通訊系統管理 - 資訊安全 ### 數據資料應用 - 資料檢索與應用 - 數位信號處理 - 影像信號 - 音訊信號 - 雲端與平行運算 - 人工智慧 - 機器學習 - 深度學習 - 類神經網路 ###### tags: `電腦科學概論` `電腦硬體簡介`