计算机科学方向的教学内容比较偏向理论,其培养目的,是教会学生基于数学和哲学,利用计算机作为工具,对一些问题进行建模求解。所以这也要求学生具备扎实的线性代数、离散数学、形式逻辑、统计学等扎实的数学基础。这些问题有可能是生活中可以见到的应用型问题,比如研究如何准确地使用计算机演算法对人脸进行识别,或使用计算机演算法与人类棋手对弈,对这类问题的研究称为应用型基础研究;被研究的问题也有可能是纯理论问题,比如研究基如何通过蒙特卡洛方法对深度学习网路进行剪枝优化等等,这类研究的方向比较抽象,通常被称为理论型基础研究。我们一般认为,理论型研究是应用型研究的基础和工具。
计算机工程通常是计算机系本科生和部分硕士研究生的培养方向学习范畴。而部分硕士研究生(尤其是M.Phil)和绝大多数博士研究生(Ph.D)都在从事计算机科学方面的研究。
通常在硕士阶段,学生开始接触到比较实际的计算机科学专业方向,这通常取决于导师自己的方向。但由于硕士培养周期较短,对专业方向的涉及也常常比较浅显,硕士毕业生通常的状态是「具备比较扎实的计算机工程基础,已经开始接触计算机科学问题。
到了博士阶段,学生的主要任务就是挑选一个计算机科学的细分方向进行深入研究,直至斩获该细分方向的突破性进展才能够毕业。计算机科学的研究方向互相交叉,很难给出一个科学的分类图谱,我们这里列出一些常见的研究方向及组合: