畢業幾年後,偶然發現From NAND to Tetris這個線上課程,從前求學時總是東一塊西一塊支離破碎的概念終於可以有一個概觀性的整理。
- 心得
- 整理
- 參考
心得
回頭去看,對於資工系科目要求的重點,有些小小的感想如下:
邏輯脈絡、對技術的熱情、對本質追根究柢的精神且要能夠應用出來、設計和解決問題的想法
自己在求學階段碰到實作的問題時,大部分會覺得很困難無法輕易解決,總是想逃避而不去找出問題的本質(用已知的理論去推演)
總之,要在這領域有所成長,我覺得必須掌握以下的概念:
- 觀察
- 和實際生活做關聯
- 原理
- 抽象化能力(實例轉換到抽象程式語言)
- 邏輯能力(資料結構和演算法理解的過程而非結果)(精神)
- 大腦記憶和大腦Compiler
整理
- From NAND to Tetris中Abstract Design的觀點
- 以計算機為單位
From NAND to Tetris中Abstract Design的觀點
[現實世界問題] > 抽象化方法 > [抽象化模型] > 用計算機觀點模擬現實世界的問題 > [計算機可運作的程式]
抽象化方法
- 系統分析與設計(UML)
- 資料庫系統(ER-Model)
- 資料挖掘
- 社群網路與運算
用計算機觀點模擬現實世界的問題
- 物件導向設計(SOLID, Design Pattern)
- 資料庫系統(CRUD, DDL, DML)
- 資料結構
- 演算法
以計算機為單位
計算機本身
- 電子電路學, 電子電路技術
- 數位邏輯, 數位系統, 數位系統技術, 微算機技術(C)
- 計算機組織, 計算機結構, 系統程式, 作業系統, Unix系統程式設計(C)
- 程式設計(C), 計算機技術(C), 物件導向程式設計(C++), JAVA程式設計, 網際網路資料庫程式設計(PHP)
連接現實世界和計算機的橋樑
現實世界問題抽象化後的模型轉變為計算機可理解的組成元素,意即用計算機觀點模擬現實世界的問題
- 資料結構
- 演算法
應用計算機解決問題
- 系統分析與設計
- 資料庫系統
- 資料挖掘
- 雲端運算導論
- 社群網路與運算
- 普及計算
把計算機組成一個軍團
- 網路概論, 計算機網路
- 網路程式設計(JAVA)
- 網路模擬與測試
- 網路管理
- 網路安全
- 分散式系統
- 雲端資料網路
計算機數學理論
- 線性代數
- 離散數學
- 機率論
- 計算幾何