先附上這篇經典文章
其實資工系是在教你生死學
今天來講我自己對這個系以及所學的想法
資工是資訊工程的簡稱
英文去對照國外的話 通常會是對應到 Computer Science or Computer Engineering
(這直接去翻譯感覺會是information engineering
但根據維基百科的定義 是不太一樣的東西)
所以資工的課程有科學的部分也有工程的部分
科學的部分像是定義何謂計算,怎樣計算比較快,什麼問題是算不出來的等等
工程的部分像是如何建構大型的電腦系統,軟體系統等等
前者算是數學延伸出來的後者部分算是電機那方面延伸出來的
所以我覺得其實資工系有點像是理工科的文學院
每個科系都需要用語言來解決他們的問題
但只有語言相關學系會去研究語言本身 (=> 我只是個理工宅宅 有錯請指教)
你不一定要唸文學才寫得出偉大的文學作品
同理 你也不一定要唸資工系才寫得出偉大的程式
(所以這領域一直被許多人跨進來搶飯碗 嗚嗚嗚
在理工科裡面 其實每個科系都會利用電腦去幫忙解決他們各自的領域
對他們來說
程式就跟語言一樣 是個工具
而資工系 就是在研究電腦這個工具本身的運作原理以及如何利用電腦來解決問題
第一年的計概訓練
學到Imperative programming和 object programming 這些之後
(或許可以想成是兩種文體,當然還有很多種文體)
再來就是資料結構,學習如何去有效率的使用安排數位的資料(就像是教你怎麼安排你的文章結構 起承轉合之類的)
更重要的是到底要怎麼寫
演算法就是教你如何去思考解決各種演算問題的基本方法(或許可以類比說怎麼培養靈感吧)
這幾個科目
只是訓練基本寫作的能力打底子而已
硬體的話 從基本的電子電路學教你兜出邏輯閘
數位電路再去組合成更複雜的元件
最後計算機組織組合成一顆CPU 配合其他元件等等
(我對硬體這塊很不熟 所以都會帶很快)
有硬體之後
就要有個作業系統以及來幫你分配硬體資源
而硬體能讀的懂得都是0與1的訊號而已
所以之後就有組合語言的出現 讓人類比較好讀
但組合語言還是太抽象了
於是乎就開始有高階語言 使程式設計這件事能更加抽象化
當然這些都要歸功於組譯器跟編譯器還有眾多系統程式的發展
然後就有更多更高階的語言啦
一台電腦能力不夠 那你有試過兩台嗎?
電腦之間需要彼此溝通合作解決問題
那就需要網路啦
TCP/IP的五層架構 也幫助我們抽象化了許多的底層問題
除了Physical layer可能涵蓋比較少之外 其他層都是資工的研究範圍喔
當然更不用說最夯的行動網路了
電腦輸入也有圖片 聲音 影像的輸出
這就是多媒體處理這塊的領域
理工科的話
數學也很重要的
何況CS算是數學分支出來的
最基本的就是離散數學 非連續的東西都被包含在這門課裡面(雖然不可能帶到全部)
線性代數是處理多維度問題的重要工具
機率統計是用來處理不確定情況的時候的重要工具
計算理論就是CS的核心了
也就是在研究什麼是計算 什麼可以被計算 什麼計算得很快 什麼計算得很慢等等議題
我修過的各個課程會在後面的文章更細談我的心得
以及一些參考資料
說了那麼多
那什麼是CS的核心能力呢?
我個人的看法還是回歸到
利用電腦來解決問題的能力
這些學到的東西都只是工具技術
如何解決問題才是最重要的
這也是很多課程所帶給我的訓練
也是我出社會後最深刻的體悟
了解整個電腦的運作之後
我們有能力去評估系統上每一個層面的環節
快速的學習所需要的新技術
進而提供最佳解並產生實際的產出去解決問題
這就是我們的價值
電機 資工 資管 的比較
以下只是我個人的認知
僅供參考
歡迎大家分享自己的想法
電機電子會著重在硬體的部分
但當然也包含軟體計算機相關的課程
但就不會那麼多 (必修的部分)
資工就會著重在軟體 計算機相關的課程
當然也包含了基本硬體概念 (同理當然也不會那麼多)
現在的方向都是著重在軟硬整合就是
而資管的話
我的理解會是軟體再加上商管知識的部分
所以課程通常都不會包含硬體的部分
但會比較多資訊系統在商管上的應用課程