2013-02-14 304 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. 名單繼續:)