顧名思義,Computer Science是計算機科學,Computer Engineering是計算機工程,一個的目的是成為一個思想家,一個目的是成為一個實幹家。這是兩者的不同之處,所以要看孩子到底是喜歡多思考抽象的問題,還是更喜歡實際動手操作。
具體而言,Computer Science 注重的是邏輯推理,對實際問題的模型化,抽象化,程序化,這是典型的科學家的工作,所以叫做Science。而Computer Engineering更多在具體構造實際產品方面,怎樣將想象中的、理論上的、或者是用軟件實現的功能和方法具體化、硬件化。這是典型的工程師的工作,所以叫做Engineering。
前面有人講到Computer Engineering包含了Computer Science,只是不正確的。也許他本人是Computer Engineering的吧,不過實際上Computer Engineering和Computer Science是的的確確兩個不同的領域。如果要講聯繫,可以粗略地說,通常一個計算機產品的開放要經過兩個階段。第一,是從實際生活中發現需要,將這個需要進行抽象模型,用計算機程序進行模擬分析,尋找解決方法,這是Computer Science的工作。而後第二階段,因為軟件運行效率永遠是比硬件差很多的,如果一個軟件程序在實際生活非常重要,並且很有商業價值,就要考慮它的硬件化,把它變成一個產品,這是Computer Engineering的工作。
當然以上的分析是從很大的角度上說的。學Computer Science也要懂一些計算機結構上的東西,學Computer Engineering也要懂寫計算機程序。但本質上,一個的目的是培養科學家,一個的目的是培養工程師,如果你的孩子將來目的是要讀博士,那他就要好好思考一下他到底要成為怎樣的人了。至於如果只是讀本科,甚至碩士,在我看來,其實無所謂,因為我知道不是人在兩個領域裡面交叉的,畢竟在實際工作中,這兩個領域的人的交流機會是很多的。