2013-02-14 15 views
48

私はこのトピックについていくつかの答えを読んだが、まだ質問があります.. 数学のコースがたくさんあり、最初にどちらを取るべきか分かりません。 すべてのコンピュータ科学者が受けるべき数学のクラスはどれですか?どのクラスが最初のクラスでなければならないのですか?コンピュータ科学のための数学

答えて

71

非常に良い重要な質問!数学の理解は、すべてのコンピュータ科学者にとって不可欠であり、数学の要件はより多様化し始めています。

  • Discrete Mathは、コンピュータサイエンスにとって最も重要で基本的なクラスであり、このため、通常、数学部門ではなくCS部門で提供されます。このクラスは、あなたのイントロをアルゴリズムの基礎とし、数学的に物事を証明する方法を教え、データ構造やアルゴリズムを分析するための基礎を教えます。
  • Calculusは、イントロレベルのコンピュータサイエンスの授業では直接使用されていませんが、一般的には、数学のスキルを高めるために大学が提供する一連のコースです。あなたが数値プログラミングや機械学習のようなものになっていくにつれて、それは非常に有用であることが証明されます。高度な確率/統計コースにも必要です。
  • Probabilityは通常、あなたの離散数学のクラスである程度カバーされていますが、数学と統計学科ではおそらく連続確率分布のクラスとstatistical inferenceが必要です。これにより、数値計算やシミュレーションの仕方をより深く理解することができ、基本的にはコンピュータサイエンスの最も重要なアプリケーションの1つであるmachine learningに必要です。
  • Linear Algebraは、機械学習や(高度な)アルゴリズムクラスでは主に役立つクラスですが、コンピュータビジョン、コンピュータグラフィックス、機械学習、その他の定量的なサブ分野での重要性が最も重要です。

言い換えれば、機械学習のイントロトート​​が利用可能な場合、おそらく基本的な確率クラスで得ることができる十分な線形代数などをカバーするでしょう。しかし、コンピュータサイエンスの大学院の勉強では、上記の数学のすべての分野をよく理解することが不可欠です。

上位レベルの数学コースは、コンピュータサイエンスの特定の理論的領域(例えば、経済学と交差するアルゴリズムゲーム理論)、特に機械学習の開業者を超えて新しいアルゴリズムを開発するのに役立ちます。これらのコースは、次のとおりです。あなたが十分な長さのための確率と微積分を勉強している場合、彼らは再び収束することがわかりますmeasure theory含む

  • Real analysis、。分析は、数字を含むアルゴリズムの作業をいつ開始するかを知るのに大変便利です。

  • Optimizationを含み、linear optimization,convex optimization,gradient descentなどを含む。多くの場合、機械学習モデルを「学習する」ことは、基本的には目的関数を最適化することであり、この関数が凸であるかどうかといったプロパティは、いかに簡単に最適化するかに大きな影響を与えます。

  • Numerical methods:いくつかは、この数学の授業自体を考慮していないだろうが、浮動小数点演算の不完全な表現にアルゴリズムと理論を翻訳するには、解決すべき多くの実用的な問題があります。たとえば、log-sum-exp trickです。

  • "データサイエンス"に関係する人物や関連分野では、高度な統計情報、特にcausal inferenceが非常に重要です。知っておくべきことがたくさんあります。多くの場合、多くのデータにアクセスすると、初心者のためにthis problemが誘惑されます。

+0

これらの授業は、リストに記載されている順序で受けなければなりませんか? – LoLzMan

+0

典型的な4年制大学では、初年度の計算クラスから始まり、CSカリキュラムの基本要件を満たすとすぐに離散数学を取ることになります。コンピュータサイエンスのより定量的なサブ領域に入ると、より高度な確率/統計コースと線形代数を取ることができます。 –

+0

私のユニに、最初の学期に線形代数、離散数学と微積分から始めます。 @ AndrewMao私はあなたの質問の最後の部分に興味があります。 – phant0m

8
+2

これは、プログラミングの99%とは関係ありません。数学がとても重要な場合、数学の授業はどこですか? –

+2

私は、組合せ演算子、離散数学、確率、数学論理、線形代数をプログラミングに直接適用しています。それらはすべてアルゴリズムとの関係を持っています。 – dud3

+1

私はコンピュータ科学とプログラミングはしばしば等しいと考えますが、それらは異なる学問です。ほとんどの複雑な概念はしばしばプログラミング言語やライブラリにカプセル化されているので、基本的な数学だけでCS指導なしでプログラムすることを学ぶことができます。しかし、これらの概念の基盤はCSに根ざしており、特にアルゴリズムの設計/最適化を理解するには数学の知識が必要です。 – verboze

6

あなたは、 "コンピュータ科学者" を指定しているので、我々はハードルート取るよ:

  1. アルゴリズムの解析は、微積分、微分方程式、離散数学に依存しています。 (コンピュータサイエンスとソフトウェアエンジニアリングプログラムの間の主要な差別化要因としてのアルゴリズムの多くのビュー分析)。数値計算法、線形代数など
  2. 計算幾何学
  3. 関数近似
  4. 集合論、ロジック/一次計算
  5. 確率:
  6. コンピュータグラフィックス/科学的可視化はエンジニアリング解析背景の並べ替えが必要です/統計
  7. リストは続く:
関連する問題