kkksc03 的博客

kkksc03 的博客

选择 CS(计算机科学),还是 EE(电子工程)?

posted on 2019-06-10 11:24:14 | under 未分类 |

EE指的是Electronic Engineering (电子工程),而CS指的是Computer Science (计算机科学) 。为什么强调“这(两)个领域”呢?有一种说法是,CS是EE里面的一个分支,毕竟计算机也算是Electronic的东西。不过既然在这边把EE和CS并列出来,那么我们这里的EE就排除掉CS的内容(实际上这些关系都是藕断丝连的,不可能泾渭分明的区分)。

要理解EE和CS,我们要先知道具体要研究什么。为了便于理解,这边举出几个有代表性例子,实际上研究的领域远远不止列出来的这么多。

电子工程包括什么

  • 通讯网络:互联网、移动/无线网络等,研究如何高效(高速准确)的进行数据传输。
  • 信号处理:将日常生活采集到的信息电子化,并且研究这个电子化的数据。包括声音/语音处理,模拟-数字转换,图像视频采集处理等。
  • 系统控制:很多“自动化”系主要研究的内容。主要研究对于一个系统(机器人无人机之类的)如何按照人类的要求运作的。
  • 电子学:大概设计各种电器都需要用到。常见的是LED展板与嵌入式等。
  • 微电子:其实也算电子学的一个分支。微电子主要是设计制造芯片,具体包括集成电路设计和芯片制造工艺。这一点中国大陆还有待加强。比如中兴因为这个是软肋被美国人一制裁就休克。
  • 电气工程:主要研究国家电网研究的东西。弱电控制强电。
  • 电磁学:射频技术。无线网络(物理层面上)以及蓝牙啊,NFC啊之类的。

计算机科学包括什么

  • 计算机系统:研究操作系统、网络系统等。也包括编译原理及其优化。
  • 算法:建立逻辑模型(离散数学等),借助计算机解决实际问题。
  • 人工智能:其实也是属于算法,让计算机可以像人一样“思考”一些问题并且给出结果。最近非常火。
  • 数据存储技术:比如数据库系统、数据结构、磁盘容灾备份。
  • 大规模数据处理与分布式:分布式计算。当一台电脑不够用,那么就让电脑集群处理。最近经常听到的“区块链”也和这个有密切关系。
  • 人机交互与软件工程:我们常见的“码农”干的事情,可以写出网站、App等,以及对这些项目进行管理。

以上只是一些粗分领域,实际上这些领域之间都有各种联系。所以说,一般写一些网站前端后端作为码农,或者搞LED、单片机,都不能说是研究CS或者EE,只能说是应用到了一些CS和EE领域的一些基础知识。经常会有同学将软件工程和计算机科学混为一谈,这一点要注意。

学习路线

然后是EE和CS分别需要在本科阶段学习的课程(因校而异),大概看课程名称就知道CS和EE侧重啥了。

  • 理工科的共同课程:数学系列(高数、线代、概率、复变)、大物……
  • 专业共通课程(EE/CS都要学,主要是大一大二):程序语言(主要是C++)、离散数学、算法与数据结构、计算机组成、数字电路、模拟电路、多媒体技术……
  • CS专业课程:编译原理、操作系统、数据库系统、网络系统、人工智能、计算机视觉、并行计算、软件项目管理、信息安全……
  • EE专业课程:半导体物理、电磁场、数字信号处理、集成电路设计、生物信息学、通信技术、控制系统、光电子学、无线互联网……

就业分析

  • EE:就业状态不错,而且就业门槛比较高,本科毕业生较少从事对口工作(也就是一般要读到研究生),可以去华为、小米(谁说华为只做手机?去查查华为是靠什么发家的)以及其他各大电器制造商。EE人才比较紧缺,就业竞争相对于CS不是那么激烈。毕竟EE这一块,自学太难了(单片机之类的不能代表整个EE),而且需要很好的数理基础。
  • CS:就业和工资也不错,可以去各大软件公司或者互联网企业。门槛相对低一些,即使一些没有科班学习CS的人也能够自学与研究以达到这些企业的需求从而可以入职,这就造成了CS的就业竞争比较激烈。

EE专业学生转CS的趋势的确存在。至于为什么有这个趋势有空开贴另外写文(其实上面两点也可以看出一些理由了)。现在看起来无论EE还是CS的毕业生,最后毕业大多都成了码农(特指软件工程)[来源请求]。

如果成为了一个码农(美其名曰软件工程师),即使最后就职中能直接用到大学里学的知识本身很有限,不过在大学里面培养的信息技术基本知识和素养、严谨的求学态度、自我学习的方法却是可以受益终生。

建议

现在国家依然需要很多电子技术的人才,尤其是微电子与集成芯片领域。虽然华为华为海思和小米松果已经可以商用但是还不如高通联发科,而桌面处理器更是离大批量民用还有更大的距离(龙芯目前有很多争议)。如果同学认定了走这个路,那么就要提升数理思维,学好课内内容,然后读研去专研一个更小更深的领域。选择自己从事的工作不仅需要考虑自己的小确幸,也要考虑国家发展的历史进程。

学习EE和CS并不矛盾,因为电子信息内的各个领域都是相辅相成的。但因为时间和精力的限制导致我们只能钻研其中的个别领域。如果有志于研究EE,那么读研是是标配。无论是国内考研还是出国,EE方向竞争都不如CS激烈,所以考上排名更好的学校会相对容易一些。很多国外院校都有CE(Computer Engineering,计算机工程)专业,主要研究EE和CS交叉的部分。如果成为一个资深的电子工程师,那么收入绝不会比同级别的软件工程师低,毕竟物以稀为贵。

如果决定退坑EE转向CS的怀抱,那也是自己的选择,但需要额外学习的东西更少不了(参见上面课程设置)。(虽然我认为成为一般的软件工程师并不能称为“研究CS”)。如果要成为一个优秀的软件工程师,就算仅靠CS专业在课内学习的知识是远远不够的。所以同学也要提升算法能力和编程能力,可以从下面几个方面入手;

  1. 学好数学和英语
  2. 了解计算机科学的基础知识
  3. 培养自我学习与信息检索能力
  4. 累积项目经验

平庸的码农很多,但真正的人才永远是稀缺的;任何行业的顶尖人才,都可以大放光彩。