数学计算机科学

LoL*_*Man 65 math computer-science

我已经阅读了关于这个主题的几个答案,但我仍然有疑问......有很多数学课程,我不知道哪一个先学习.每个计算机科学家应该选择哪些数学课?什么课应该是第一个,为什么?

And*_*Mao 88

非常好而重要的问题!对数学的充分理解对每个计算机科学家都至关重要,数学要求开始变得更加多样化.

  • 离散数学是计算机科学中最重要和最基础的类,因此它通常在CS部门而不是数学部门提供.本课程将为您的课程算法简介提供支持,并教您如何以数学方式证明事物,并为您提供分析数据结构和算法的基础知识.
  • 微积分虽然不直接用于介绍级计算机科学课程,但通常是由您的大学提供的一系列课程,以提高您的数学技能.然而,当你开始涉及数值编程和机器学习这样的事情时,它将证明是非常有用的.这也是高级概率/统计课程的要求.
  • 在您的离散数学课程中,概率通常会在某种程度上得到涵盖,但您可能希望在数学和统计学系的课程中进行连续概率分布和统计推断.这将使您更好地理解如何进行数值计算和模拟,并且对于机器学习而言是必不可少的,机器学习是计算机科学最重要的应用之一.
  • 线性代数是一个类,你会发现它主要用于机器学习和(高级)算法类,但它在计算机视觉,计算机图形学,机器学习和其他定量子学科中的重要性是至关重要的.

也就是说,如果机器学习类的介绍可用,它们可能会涵盖足够的线性代数和其他可以通过基本概率类获得的东西.然而,对于计算机科学的研究生学习,对上述所有数学领域的理解是必不可少的.

除了本科数学之外,高级数学课程对计算机科学的某些理论领域(例如与经济学相交的算法博弈论)尤其是超越机器学习从业者以及开发新算法非常有用.这些课程包括:

  • 真正的分析,包括测量理论,你会发现,如果你研究概率和微积分的时间足够长,它们会再次收敛.当您开始使用涉及数字的算法时,分析通常是有用的.

  • 优化,包括线性优化,凸优化,梯度下降等.在许多情况下,"学习"机器学习模型基本上归结为优化目标函数,并且该函数的属性(例如它是否凸起)对优化的容易程度有很大影响.

  • 数值方法:有些人不会认为这是一个数学类本身,但在将算法和理论转化为浮点数学的不完美表示时,有许多实际问题需要解决.例如,log-sum-exp技巧.

  • 对于那些将处于"数据科学"和相关领域的人来说,先进的统计数据尤其是因果推断非常重要.有很多事情需要了解,主要是因为访问大量数据会导致这些问题无法解决.

  • @patcapozzi你是绝对正确的.编程几乎与数学无关.但重点是,编程不是计算机科学.计算机科学是关于建模,系统设计和架构,开发算法,解决问题等.事实上,编程只是实施的一部分,这是最后阶段. (3认同)
  • @patcapozzi编程只是计算机科学的一小部分:) (2认同)

Mik*_*rov 9

组合学,数值分析,离散数学,数理统计,概率论,信息论,线性代数,lambda演算,数学逻辑,范畴论,过程演算等.

  • 我一直在应用:组合,离散数学,概率,数学逻辑和线性代数直接编程,所有这些都与算法有关系. (3认同)
  • 这些都与99%的编程没有任何关系.如果数学如此重要,那么数学课程在哪里? (2认同)

Thr*_*986 6

既然你指定了"计算机科学家",我们将采取艰难的路线:

  1. 算法分析依赖于微积分,微分方程和离散数学.(许多人认为算法分析是计算机科学与软件工程程序之间的主要区别).
  2. 计算机图形学/科学可视化需要工程分析的背景:数值方法,线性代数等.
  3. 计算几何
  4. 函数逼近
  5. 集理论,逻辑/一阶微积分
  6. 概率/统计
  7. 列表继续:)