作为计算机科学专业的学生,我自然也想过同样的问题。毕竟要了解每个分支的精髓需要踏踏实实地学过才有说的底气……显然我只能大概总结一下有什么方向,每个方向都研究什么。就跟数学可以分成纯数学和应用数学一样,而纯数学分成代数、几何、分析学三个方向…显示全部
作为计算机科学专业的学生,我自然也想过同样的问题。毕竟要了解每个分支的精髓需要踏踏实实地学过才有说的底气……显然我只能大概总结一下有什么方向,每个方向都研究什么。
就跟数学可以分成纯数学和应用数学一样,而纯数学分成代数、几何、分析学三个方向一样……我们学校特别愉快地把计算机科学分成Theory, Systems, and Applications这三个宽泛的领域(学生们需要每个都选几门来满足Breadth的要求)。但是可以顾名思义第一个最偏向数学,第二个最偏向于计算机工程和电子工程,最后一个就是五花八门的实用内容。
(我对中文术语知之甚少,中英夹杂请对付着看吧……)
LZ提到的几个领域都是下分在这三大块之下的,甚至是这三大块细分领域的细分领域。
Theory那里细分大概只有Theoretical computer science这一项,主要研究内容都是需要很多数学的算法啦算法复杂度啦计算几何学啦编程语言啦(这个需要逻辑学基础)……还有密码学啦(其实这课在我们学校就是数学系下的QAQ)LZ好像对这类没兴趣我就先不多说
Systems这一类多多少少都和硬件有点关系……所谓研究设计开发计算机系统……比如编译器、计算机网络、操作系统、数据库、分布式系统、网络安全什么的(这一类我除了数据库外学的真的都不好……我也先不多说了T~T)
LZ提到的东西绝大部分都在Applications下面的Artificial intelligence和Graphics and vision这两个方向中
Artificial intelligence是一个几十年前就有的方向啦……Machine learning, natural language processing, and computer vision都属于AI的范畴。
Machine learning 用简单粗暴地方式来概括的话,就是让计算机不止依靠程序猿告诉它的代码活着,还可以从数据中学习变得更好~~这个需要很好的统计学基础……大概涉及的topics请看这个:
CS 229: Machine Learning (Course schedule)
Natural language processing这个就是让计算机理解并使用人类的语言,比如翻译……好像统计学基础还是很重要……语言学常识也很有必要……大概涉及什么呢?请看这个:
CS 224N / Ling 284 Syllabus
Computer vision这个就是让计算机学会看东西啦……而且也属于Graphics and vision这个分支。还是让斯坦福来躺一下枪:Stanford University CS 231A: Introduction to Computer Vision
这里列出的三个都是入门级的课程……
Artificial intelligence下还有入门级的课程就是AI自己了=.=除了上面提到的东西,AI还有Searching, planning, reasoning相关的内容。AI还可以和Systems结合……就出现了Robotics!
既然提到了Graphics and vision……这个领域除了CV外,就是怎么把图像和视频弄得以假乱真,也就是Digital Image Processing啦Computer Graphics啦,Computer Animation啦……很厉害的一点是会遇到拿过奥斯卡奖的教授呢……与此相关的领域还有Human-Computer Interaction(也和AI方面有关),比如Google glass用到的augmented reality就属于这个范畴。
LZ提到的Data Science是一个新出现的分支……其实是混杂了Machine learning和information systems(database)的统计学变种……由于方向太新,(目前不属于CS),好像没有一个明确的定义……但怎么看都是用到编程的统计学……
其他Applications的方向还有Computational Science/Scientific computing, Software systems/software engineering, bioinformatics这些常见的以及Game development这种罕见分支……
在此,推荐一本书计算机科学概论 (第10版) (豆瓣)
每章都介绍了一个领域……相对来说,还是蛮全的……英文最新版是第12版,更新了一些新出现的内容什么的……