web-dev-qa-db-ja.com

コンピュータ科学者にとって離散数学はどのくらい重要ですか?

タイトルの通り、

コンピュータサイエンティストにとって離散数学はどのくらい重要ですか?背景:アルゴリズム、複雑性、計算可能性理論、プログラミング言語などの基礎に焦点を当てて修士号を取得し、並列コンピューティングの分野。

もう少し背景:私の大学は、修士号のコースの選択に多くの自由を与えています。正式には「ソフトウェアエンジニアリング」と呼ばれていますが、幅広い選択科目があるため、別の焦点が可能です。興味深いことに、選択科目はどれも数学の講義ではありません!学位として使えなくても、半学期を成功裏に修了する離散数学のコースを考えています。それで、この質問で私は努力が正当であるかどうかを調べようとしています。

8
mort

「アルゴリズム、複雑性、計算可能性理論とプログラミング言語」に焦点を当てて修士号を取得しようとしているコンピューター科学者として、離散数学は非常に重要だと思います。

離散数学は、プログラミング言語よりも焦点の「アルゴリズム、複雑さ、および計算可能性理論」の部分を支援します。集合論、確率、および組み合わせの理解により、アルゴリズムを分析できます。アルゴリズムのパラメーターと制限を正しく識別し、問題/ソリューションがいかに複雑かを理解することができます。

プログラミング言語に関する限り、離散数学は実際にプログラムする方法には触れません。むしろ、ソフトウェアシステム設計仕様に使用できます。大学では「ZED」を使い、集合論を使ったシステムの設計をしていました。最近では、ソフトウェアシステムの何パーセントが集合論で設計されているかわかりません。

離散数学を理解するための最後の重要な概念はブール代数です。これは論理的なソリューションを作成するだけでなく、プログラミングにも非常に役立ちます。ソフトウェアは、その中のブール論理で簡単に作成/破壊できます。

全体として、離散数学はほとんどの場合、数値クラスではありません。それはあなたが他のクラスがしない方法であなたの脳を使うようにします。これは論理的思考のクラスであり、証明/論理計算を行うのが簡単ではない場合は、忍耐力が必要です。コースを通過するのに十分に「抽象的に」考えることができなかったため、メジャーを変更する人を見てきました。

要するに、私は、離散数学がコンピュータサイエンティスト/ソフトウェアエンジニアにとって重要なクラスになるというスタンスをとります。

27
Kcvin

実際、離散数学はコンピュータサイエンスのバックボーンであり、私は理論的なコンピュータサイエンスと言っています。離散数学の研究なしでは、コンピュータサイエンス-ロジック開発の核心を逃します。それはあなたの解決策に合理的な明快さと問題を分析する正式な方法をもたらします。

コンピュータサイエンスのすべての分野は、データベース、ニューラルネットワーク、コンピュータ組織、コンパイラ、ネットワークプログラミングなど、個別のオブジェクトに関連しています。私はそれがコンピュータサイエンスの「親主題」であり、誰もがこの主題を研究する必要があると思います。

2