2013-02-14 314 views
48

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

回答

71

很好很重要的问题!对每一位计算机科学家来说,对数学的理解是必不可少的,数学要求也开始变得更加多样化。

  • Discrete Math是计算机科学中最重要,最基本的类,基于这个原因,它是在CS部门,而不是数学部门通常提供。这门课将巩固你的算法介绍课程,并教你如何数学证明事物,并给你分析数据结构和算法的基础知识。
  • Calculus虽然没有直接用于入门级计算机科学课程,但通常是您的大学提供的一系列课程来提高您的数学技能。当你开始进入诸如数值编程和机器学习之类的东西时,它将证明非常有用。这也是先进的概率/统计课程的要求。
  • Probability通常在离散数学课上有所涉及,但您可能想要在连续概率分布和statistical inference上课,可能在数学和统计学系。这将使您更好地理解如何进行数值计算和模拟,并且对于计算机科学最重要的应用之一machine learning来说是基本必要的。
  • Linear Algebra是一类主要用于机器学习和(高级)算法类的类,但它在计算机视觉,计算机图形学,机器学习和其他量子学科中的重要性至关重要。

也就是说,如果机器学习类的介绍可用,他们可能会覆盖足够的线性代数和其他基本概率类可以得到的东西。然而,对于计算机科学的研究生学习,对上述数学领域的所有领域的了解是非常重要的。

除了本科数学课程之外,更高水平的数学课程对于计算机科学的某些理论领域(例如算法博弈论,与经济学相交),特别是超越机器学习从业者到开发新算法是有用的。这些课程包括:

  • Real analysis,包括measure theory在那里你会发现,如果你长期研究概率和微积分不够,他们再次收敛。分析通常是了解何时开始使用涉及数字的算法的一个有用的事情。

  • Optimization,包括linear optimization,convex optimization,gradient descent等等。在许多情况下,“学习”机器学习模型基本上归结为优化目标函数,而此函数的属性(例如凸函数是否为凸)对优化的容易程度有很大影响。

  • Numerical methods:有些人不认为这是一个数学课本身,但在翻译的算法和理论应用到浮点运算的完美表现,也有需要解决许多实际问题。例如,log-sum-exp trick

  • 对于那些在“数据科学”及相关领域,高级统计尤其是causal inference非常重要。有很多事情要知道,主要是因为访问大量的数据试图为外行人提供this problem

+0

我应该参加这些课程才能列出它们吗? – LoLzMan 2013-02-14 06:44:53

+0

在典型的四年制大学里,你将从第一年的微积分课程开始,然后在你满足CS课程的一些基本要求时立即采取离散数学。然后,如果您进入计算机科学的更多量化分区,则可以采用更高级的概率/统计课程和线性代数。 – 2013-02-14 07:39:29

+0

在我的单元中,你从第一学期的线性代数,离散数学和微积分开始。 @AndrewMao我会对你问题的最后部分感兴趣。 – phant0m 2013-02-14 11:29:26

8
+2

这与99%的编程没有任何关系。如果数学如此重要,数学课在哪里? – 2016-01-15 02:10:05

+2

我一直在使用:组合,离散数学,概率,数学逻辑和线性代数直接编程,它们都与算法有关系。 – dud3 2017-01-08 14:51:39

+1

我认为计算机科学和编程经常是等同的,但它们是不同的学科。人们可以学习如何在没有CS学位的情况下进行编程,实际上只有基础数学,因为大多数复杂的概念常常被封装在编程语言或库中。然而,这些概念的基础源于CS,并且需要一些体面的数学知识来理解,特别是在算法设计/优化方面。 – verboze 2017-04-12 22:50:53

6

既然你指定 “计算机科学家”,我们将采取硬路线:

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