注意,本篇文章超级干货,作为一名资深报考从业者,将会回答你对计算机专业的全部疑问。学科体系、工作细分、职场未来,我将会用最通俗易懂的方法帮你快速建立计算机学科和产业的全局图,一览众山小,如果没时间看,记得先收藏。
一直有粉丝想让我讲讲计算机专业,毕竟众所周知,计算机金融一直处于学科鄙视链的顶端。清华去年搞了一个计算机金融双学位,被大家称为人上人上人上人。其实我觉得大可不必,这种觉得自己是计算机科班出身就高人一头的想法其实挺可笑的,一方面所谓科班核心的课程也没几门儿,没差多少,另一方面,计算机最终只是一个工具,还是要和其他学科合作解决现实问题的,所以也不要太自我感动,正好趁着高考没出分,大家还在选专业,本文我就来给你讲讲计算机专业。本文我将会通过讲解一条主线来集中回答大家的提问,尤其是如果你正在学或者想转到计算机专业,但毫无头绪,那一定要看。
文章分成两块儿,第一块儿叫做学科体系,具体解答的问题就类似于计算机门槛高吗?我是适合吗?怎么学好计算机专业课程?甲乙丙丁哪个更重要?什么研究方向更好?计算积分太高,有别的类似的专业推荐吗?这里,我将会给你展示一张计算机的知识体系地图,之后,这些问题你自己就有答案了,如果你是准大学生,你将会比同龄人更早开启游戏全地图。第二块叫做产业应用,具体回答的问题,类似于计算机的出路是什么?为什么计算机比较赚钱,具体可以做什么样的岗位?难道要一辈子当工程师吗?厉害的人有什么不同?我将会按照计算机的应用方向,再结合当前科技发展的时代大背景,给你讲清楚毕业出路,咱们赶紧开始。
因为计算机专业的火爆,很多大学都开设了这个专业,根据教育部最新的第四轮计算机科学与技术专业排名,全国一共有所大学统计在内,当然,各个学校的教学计划是各有不同的,而且计算机专业要学的课程真的非常的多,一眼看上去根本抓不到重点。在研究了中美各高校之后,抛出一堆水课,比如思修、体育、博雅通识之类的,总结出了计算机学科体系的内外两大圈层,可以说这是至今世界范围内公认采纳的教学体系了。
这里教大家一个小技巧,别管你的专业名字是啥,你就去看他专业的培养方案,如果和我下面说的内容大体是相同的,那你就是计算机专业本专,如果重合了一部分,那你就是计算机相关专业。这种情况找工作的时候理论上都是OK的,就是累点。如果考研的时候实在想换计算机,那也不是非常的难,但是如果你的专业设置大部分都不符合,尤其是数学课都没进门儿,但是你又非常想学计算机,那你赶紧看别的专业吧。
我总结出来的体系,一共,分为两层,内层是计算机基础课,也是普遍各个大学的必修课,这是支持外层的核心知识,外层是计算机应用,也就是基于这些核心课可以解决哪些实际问题,其实大学本科阶段主要目的就是给你把核心基础课在前三年里,也就是你心还在学校的时候,彻底教明白,这样你就有足够的基础往后面学具体的外层用了。这个在后半部分来讲。
先说核心基础课,无论你是哪所大学,中国还是国外都逃不开,那都学些啥?这里我总结了三大模块,数理基础、计算机基础,软件和算法。现在说说计算机系统核心课,想要知道这些课程组织的背后逻辑,我得给你讲清楚一条明确的计算机发展到今天的主线,这里就会引出计算机本科的四大金刚课程。我们都知道计算机本质上就是摆弄0和1的游戏,而这一切都起源于现代计算机的祖师爷图灵,最高计算机奖项就以他命名,不过话说他也确实是喜欢玩0和1游戏。
现代计算机的理论模型,就是图灵提出的图灵机模型,在年,24岁的图灵提出了它,由此改变了世界,图灵机就是一个抽象的计算机模型,核心是一个可以读写的机械头head,它的内部存储的各种指令,并维护自己的状态,他操作的是一个无限长的纸带tape,里面,有一个个格子放0和1,然后head可以操作这个tape,读取当前的值,在做了一堆内部运算之后,移动head,把结果写到下一位置上。到今天这个ehad就是CPU了,而这个可以存储计算状态的tape就是内存。但是这只是计算机的理论模型,人类dei能在现实世界里把它给做出来啊。
后来冯诺依曼继续完善,提出了冯诺依曼的结构,这就更能指导现实了。可以说如今各种计算机,包括你的电脑,手机等等都是这个结构,其中细节的内容就组成了计算机四大金刚课的第一门儿,计算机组成原理,具体的名字各家可能不同,有的叫计算机组织,有的叫什么计算机体系原理之类的,反正都是它,我们简称为计组。
有了计算机组成之后,你得有一个系统能统领全局吧,比如控制硬件,像是内存,还有控制外围这些设备,比如键盘,显示器啥的,更重要的是,随着计算机同时处理的任务越来越多,你就得有机制来决定先算啥,后算啥,怎么切换,这也就是所谓的进程管理了。于是这就引出了四大金刚课的第二门,操作系统,这门课开始,就要做超大型的课程设计了,难度瞬间上升,于是这一门课被称为很多人大学噩梦开始的地方。
再后来,我们来看操作指令,刚说了计算机只能听懂0和1,所以一开始的时候,程序员输入计算机的格式就是一堆的0和1,这被称为机器语言,但是这实在是太难读懂啦,也很难发现错误,比如有一位实际是0,但是谎称自己是1,这其实就很难发现,于是就推出了相对能看懂一点的语言,用字母符号表示,这就叫做汇编语言,可是他跟硬件绑定的太牢固了,换个硬件可能就不好使了,后来才慢慢开发出了今天的各种高级语言,在各种硬件上都能跑,但是背后是有一套机制,把这些人能看懂的高级语言一步步的翻译回0和1的机器语言的,这就是编译器的作用了,而这也就引出了四大金刚的第三门编译原理,简称编译。
这门课,如果你很菜,那你不抱大腿是不可能通过的,甚至水平一般的人,遇到bug调试也能调死,所以被称为相亲课,因为看了大佬帮自己调通了程序,直男都直呼想嫁。
其实在几年之前,学完以上三门金刚课也就完事儿了,可是后来随着互联网的普及,让计算机和上网强烈地绑定了,于是计算机怎么上网,怎么和别的计算机沟通就成为了必备的知识,于是就有了第四大金刚,计算机网络。
以上就是计算机系统核心课的内容,下面再来说说另外一个领域,那就是软件和算法。一开始的时候,程序员写程序就是随便写的,但是后来随着问题规模越来越大,就对程序的性能提出了要求,于是各种算法应运而生,而为了实现这些算法,就需要有合理的合适的数据结构来支持他,而当需要解决的问题规模越来越大,就需要研究怎么开发和维护大型的软件系统,这些都会在两大相关课程当中提到,第一个叫做数据结构和算法或者名字不叫这个,比如叫算法设计,但核心都是一样的,配套的你肯定要先选一门计算机语言,就比如C语言。第二个,叫做软件工程或者软件开发概论之类的名字,但是核心就是教你如何对现实世界建模,也就是面向对象的技术,以及教你如何完成一个大型软件工程。
不过,这类课程你不出去实习,没见过真的业内的东西的复杂程度,上再多课都是水课,所以这里,强烈建议想在计算机领域从业的人,都出去实习,要知道加拿大的WATERLOO大学,强制学生每年出去实习,而且都是16周那种,已经是业内知名了。所以如果你还在选校,强烈建议你选北京、杭州这种本地就有超多岗位的城市,方便你去实习,你甚至在学期中间不用放假都能去,这样你也不会错过重要的考试。这里就是第二模块了,软件和算法。
以上两个模块的基础就是数理基础课,高等数学,线性代数,概率统计,这几乎是所有理工科都要的了,尤其是你想从事人工智能的话,这些是一定要会的,此外计算机还要学一门离散数学,各种程序分析和经典应用都离不开它,比如密码学。而物理基础的话,根据学校风格和专业偏中的不同,要求的课时也是不一样的。如果是传统工科名校,比如清华,还有北航,那是要学很多物理和电路课程的,这本质上是让你能知道计算机的0和1是怎么产生的,也就是知道芯片的底层逻辑。尤其是,最近人工智能的兴起,对算力要求极度提高,很多优化都是要通过专用芯片实现的。
以上就是计算机专业最最核心的课程了,如果去掉工科通用的数学,核心的也就那么几门儿,对于学生来说绝对已经非常够用了。首先,无论你是考研还是找工作,笔试面试,核心考的就是这些,而且如果你本科不是计算机,然后硕士转到计算机专业,很多学校是要求你把这些课程给补全的,不然你后续很难毕业,对于上面。一门核心课,如果本科阶段没上过,那硕士阶段也要跟本科一起上课,把基础补牢,不然不能毕业。另外,有人说工作之后这些知识根本用不到,但是,在职业的初期,或者是绝大部分应用型的公司是肯定不需要的。可是,随着你要处理的问题规模越来越大,越来越复杂,能不能善于利用这些知识解决问题就很重要了。这里,篇幅有限,就不展开了。
以上就是计算机专业的内层,下面咱们来看看外层应用。计算机本身就是一个工具,而能用工具解决什么问题才是区分人才的关键,或者说每一个计算机专业的人最终都要找到一个领域深耕下去,去解决最实际前沿的问题。同时这也肯定不会是单一学科的问题了,很多是跨学科优化的问题,而如果还要商用,那还有商业和产品问题需要去解决,所以其实很多专业广泛来讲,都和计算机的某一个部分有关联,这个一会儿就会到。
本科阶段,在学完基础课之后,高年级的时候,学校会要求学生选一个自己感兴趣的应用领域,或者自己选专业选修课,入门的几个应用领域,这样大学基本就上完了。而国外的大学,英国、美国都有,可以四年给本硕学位,其实就是在高年级的时候多学一些硕士的应用类型的课程就好了。而如果是两年以上的研究型硕士,直到博士,中外都是一样的,要求你选择一个具体的领域研究下去,而如果工作,那就要去解决某一个具体应用的商业化问题了。这里,为了给你最经典的概念,帮助你掌控全局,我把计算机如今最火热的应用领域分为三个大类,交互大类、AI大类和云技术大类。
先说交互大类,这是研究用户和任何计算机比如手机如何打交道的领域,目的是让计算机更容易让用户使用,这也是所有产品功能的最终呈现方式。可以说纵观历史,计算机从实验室走进每个人的手里,一直伴随着交互技术的进步。这个大类,有这么几个大方向,首先是前端类型的开发,比如网页开发,移动端开发,其实很容易上手,但是你不要觉得水,随着用户规模的上升,保证超大型APP有高可靠性,不闪退,还能快速加载内容,不卡顿,又能支持超大团队同时开发迭代上线,背后需要很多的优化,本科核心课的知识都会涉及到。然后是计算机图形学,最常见的应用就是游戏,还有动画以及CAD这样的机械建筑的工业应用,为了保证渲染的真实性,背后是一套的基于物理的动画仿真,如今利用AI也是一大研究热点,这个方向需要和物理系、机械系的同学一起探究真实世界。
另外就是人机交互,尤其是当今随着5G和VR的兴起,人类正在探索在鼠标、多点触控之后的下一代交互方式,尤其是基于虚拟现实的全新交互方法,比如智能眼镜,这背后需要和工业设计系、电子系、机械系的同学一起研发出全新的玩法。
第二个大类,也是如今最最火热的AI,他解决的核心问题有,如何让计算机看见、听见以及会说话,这背后对应的就是计算机的识别、图像处理、自然语言处理、语音识别等等课程,这些都需要你有非常牢固的数学基础。而计算机会了这些基础能力之后,就有各种产品应用了,比如手机的人脸识别解锁,家里的智能音箱,还有最前沿的无人驾驶和智慧城市。这就是和整个工科系跨学科的合作了,包括电子、车辆、机械、土木建筑和城市规划等等。这些AI能力的实现背后都是基于数学的,本质上和优化问题又非常的相关,而优化问题自古以来就是计算机要帮人类解决的问题了,比如运筹学的优化、计算金融等等。所以你还有机会和管理系、金融系的同学一起工作,解决和钱相关的问题。
当然,如今AI和科学计算被应用在更多的基础学科领域,你还很有机会和物理系的同学一起工作,模拟宇宙爆炸,探寻量子奥秘,还能和生物、医疗、化学、药学的同学一起探索蛋白质结构,研发新药,造福人类。
最后一个方向,就是云技术大类了。云技术就是互联网的基础,目的是解决超大规模的数据存储和计算问题。你想全中国10亿手机用户用