いくつかの分野と、それらを学ぶ必要がある理由をリストアップしましょう。
代数/数論:そこには多くの有用な理論的アルゴリズムがあり、ある時点で既存のものを使用/変更する必要があるかもしれません。それらが機能する理由の背後にある理論を知ることで、それらを覚えるのが非常に簡単になります(そして、忘れた場合はそれらを再作成する;))。このようなアルゴリズムの古典は、2つの数の最大公約数を見つけるためのユークリッドアルゴリズムです。二次ふるい法などのより高度なアルゴリズムは、暗号化で多くの用途があります。
グラフ理論:これをあまり説明する必要がないことを願っています。グラフは、コンピュータサイエンスにおける非常に多くのさまざまな問題を解決するために使用されます。これらは、ネットワーク、オブジェクト間の関係、およびアドホックな用途の膨大なクラスを表すために使用されます。アルゴリズムには、最短経路、ネットワークフロー、カラーリングなどが含まれます。
線形代数:繰り返しますが、線形代数には多くの科学的用途があります。線形代数の主な用途は連立方程式を解くことであると私は安全に言うことができると思います。複雑な微分方程式は、線形代数を使用して解かれます。巨大な行列を乗算し、線形方程式の巨大なシステムを解く方法を知ることは、多くのコンピューターシミュレーションの中心です。日常のコンピューティングとより密接に関連しているコンピュータグラフィックス(特に3Dグラフィックス)は、すべて線形代数に基づいています。
微積分:これも自明のはずです。微積分を知らなければ、数学や科学に関連することをするのにそれほど遠くはありません。大学生の悩みの種ですが、それは本当に現代科学のいたるところにあります。
確率:汚い仕事をする確率に依存する確率的アルゴリズムがいくつかあります。また、シミュレーションでは、ランダム性と確率を使用して、良好な結果を得ることができます。あなたが本当に必要とするすべてである確率の基礎を学ぶことはそれほど難しいことではありません。
統計:統計を計算して統計テストを行うプログラムを作成している場合でも、自分で統計を使用している場合でも、情報を解読して解釈するのに非常に役立つツールです。数学者や科学者だけでなく、実際には誰でも、少なくとも統計の基本的なハンドルを持っている必要があります。
数値解析:これは一種のキャッチオールです。これが数学とコンピュータサイエンスを結びつけるものです。数学は紙の上ではうまく機能しますが、実数の離散化と境界設定を開始すると、問題が発生します。これが数値解析の目的です。これらの数学的アルゴリズムを実行する際に直面する可能性のあるさまざまな数値問題と、それらを回避/修正するために使用できる数学的/コンピューターサイエンスのトリックについて説明します。