顾名思义,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也要懂写计算机程序。但本质上,一个的目的是培养科学家,一个的目的是培养工程师,如果你的孩子将来目的是要读博士,那他就要好好思考一下他到底要成为怎样的人了。至于如果只是读本科,甚至硕士,在我看来,其实无所谓,因为我知道不是人在两个领域里面交叉的,毕竟在实际工作中,这两个领域的人的交流机会是很多的。