68

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

4

3 回答 3

93

非常好的和重要的问题!对数学的良好理解对于每个计算机科学家来说都是必不可少的,并且数学要求开始变得更加多样化。

  • 离散数学是计算机科学最重要和最基础的课程,因此它通常在 CS 系而不是数学系提供。本课程将巩固您对算法的介绍,并教您如何在数学上证明事物,并为您提供分析数据结构和算法的基础知识。
  • 微积分虽然不直接用于入门级计算机科学课程,但通常是您的大学提供的一系列课程,用于提高您的数学技能。但是,当您开始涉足数值编程和机器学习等领域时,它将证明非常有用。这也是高级概率/统计课程的要求。
  • 概率通常在您的离散数学课程中有所涉及,但您可能希望参加关于连续概率分布和统计推断的课程,可能在数学和统计系。这将使您更好地了解如何进行数值计算和模拟,并且对于机器学习(计算机科学最重要的应用之一)是必不可少的。
  • 线性代数是一门主要用于机器学习和(高级)算法类的课程,但它在计算机视觉、计算机图形学、机器学习和其他定量子学科中的重要性至关重要。

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

除了本科数学之外,高级数学课程对计算机科学的某些理论领域(例如算法博弈论,与经济学相交)也很有用,尤其是在超越机器学习实践者开发新算法方面。这些课程包括:

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

  • 优化,包括线性优化凸优化梯度下降等。在很多情况下,“学习”一个机器学习模型基本上归结为优化一个目标函数,而这个函数的属性,比如它是否是凸的,对优化的难易程度有很大的影响。

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

  • 对于那些将从事“数据科学”和相关领域的人来说,高级统计,尤其是因果推理非常重要。有很多事情要知道,主要是因为访问大量数据会为初学者带来这个问题

于 2013-02-14T06:02:51.983 回答
10

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

于 2013-02-14T05:52:21.113 回答
6

由于您指定了“计算机科学家”,我们将采取艰难的路线:

  1. 算法分析依赖于微积分、微分方程和离散数学。(许多人认为算法分析是计算机科学和软件工程程序之间的主要区别)。
  2. 计算机图形/科学可视化需要工程分析背景:数值方法、线性代数等。
  3. 计算几何
  4. 函数逼近
  5. 集合论、逻辑/一阶微积分
  6. 概率/统计
  7. 名单还在继续:)
于 2013-02-14T05:54:49.167 回答