私は独学のプログラマーです。私は正直、数学が苦手です。私の仲間のプログラマーの周りでそれほど不安にならないように、数学のスキルを向上させるためにどんなアドバイスをすることができますか?数学のスキルを向上させるために推奨できる手順またはガイドラインは何ですか?
ベストプラクティス、設計方法論、およびプログラマ向けの数学に関するその他の有用な情報を説明するための事実上の標準である本はありますか?その本は特別なものですか?
私は独学のプログラマーです。私は正直、数学が苦手です。私の仲間のプログラマーの周りでそれほど不安にならないように、数学のスキルを向上させるためにどんなアドバイスをすることができますか?数学のスキルを向上させるために推奨できる手順またはガイドラインは何ですか?
ベストプラクティス、設計方法論、およびプログラマ向けの数学に関するその他の有用な情報を説明するための事実上の標準である本はありますか?その本は特別なものですか?
回答:
うーん、あなたが言うことから、あなたは非常に基本的なことを始めたいと思うようです。それについて何も悪いことはありません、私は同じことをしました。私の数学はほとんどが高校レベルであり、その多くは忘れられていました。
Khan Academyから始めて、練習セクションに進み、どこまで到達できるかを確認します。これにより、何ができるか、どこで学習を始めるかがわかります。
ビデオを見て気にしないでください。少なくとも私にとって、ビデオは習得するのに時間がかかるだけで、カーンは退屈です。基本的な数学を学ぶためのリソースは他にもたくさんあります。WikiBooksまたはck-12の一部と同様
質問はMath.StackExchangeで十分に頻繁に説明されており、「無料のリソース」または「無料の書籍」を検索すると、多くの情報と資料が得られます。「開始」や「初心者」などの検索語についても同様です。または、そこで自分の質問をしてください。これは、redditの/ r / mathサブセクションでも機能します。そこには、数学を学ぶためなど、より多くのsubredditsがあります。
たくさん練習してください。概念を理解してから次へ進むだけでは十分ではありません。あなたはそれを適用することを快適に感じなければなりません。(例として)除算と乗算に慣れていない場合、パーセンテージを理解できません。それはより高い概念にも当てはまります。だからこそ、カーンの練習セクションはビデオよりもはるかに価値があります。
プログラミングと同様に、コミュニティと連絡を取り続けることで、やる気を維持できます。たまにいくつかのフォーラムにログインして、人々の話を読んでください。
具体的な数学:コンピュータサイエンスの基礎(第2版)は、数学のさまざまな分野をカバーする優れた数学の本と、この本への有用なユーモアのある本の選択です。
ラマー大学のPaulのオンラインノートはPDF形式で提供されています。迅速な参照に非常に役立ち、すべてのページに例があります。トピックを更新したり、何かを把握したい場合は、このサイトに戻る傾向があります。
セットは次のとおりです。
代数(Math 1314): 完全なメモ
コンテンツのリスト
微積分I(数学2413):に分離
残りのトピックリストについては、サイトを確認できます。
これは本ではありませんが、数学についての考えを広げる良い方法かもしれません。 Project Eulerの問題を解決してみてください。
3または5の倍数である10未満のすべての自然数をリストすると、3、5、6、および9が得られます。これらの倍数の合計は23です。
1000未満の3または5の倍数すべての合計を求めます。
私はいつもケネス・ローゼンの離散数学とその応用をお勧めします。理論と応用のバランスがとれた多くの異なるトピックを扱っています(優れた離散数学の本と同様)。また、対象となる概念を生み出した数学者やコンピューター科学者に関する興味深いサイドバーも多数あります。
1000個の個別の数学の本を読むことは良い解決策ですが、時間が制約である場合は最適なパスではないかもしれません。どれだけの数学を深く掘り下げなければならないかを知りたい場合は、(cormen)Algorithm bookの紹介の付録Aをご覧ください:http : //www.acmsolver.org/books/ はじめに%20to%20Algorithms、%202nd%20Ed%20-%20Thomas%20H。%20Cormen.pdf
付録を読んで、どの数学のトピックをもっと見直すべきかをよりよく理解できました。何が期待できるかがわかったら、以下を見てください。
私の意見では、(特に帰納法によって)証明する方法を学ぶことは、分析アルゴリズムを理解するための礎石です。残念ながら、ほとんどのアルゴリズム、さらにはCS数学コースでも、証明にあまり焦点を当てていません。彼らはあなたがそれについて有能であるとすでに仮定しているので、彼らは数ページを超えない。数学への旅の本は非常に小さく、読みやすいです。CS問題とその数学的側面も使用します。学ぶべき他の良いトピックは、行列算術、確率、カウント、グラフ理論でもあります。
他の2つの人気のある教科書:Discrete MathとそのEPPからのアプリケーション(私のお気に入り)とRosenからのもう1つ。
「コンクリート数学」というタイトルの教科書を読む喜びはありませんが、それについてはいつも良いことを聞きました。
率直に言って、数学の基本的に非常に強力な知識がなくても、多くの分野で完全に適切なプログラマになることができます。ゲームエンジンやネットワークルーティングの最適化に関してはあまり能力がないかもしれませんが、実は多くのビジネスアプリケーションはかなり単純です。しかし、希望を生かし続け、まだ数学をあきらめないことをお勧めします。
あなたがより低いレベルでとる数学とより高いレベルでとる数学の間には世界の違いがあります。あなたがCalculusが苦手だと言うのは(私が最初にCalc Iに失敗したとき)、Graph Theoryが苦手だと言うのとはまったく異なります。数学を進める中で、率直に言ってかなり退屈で反復的な単純な問題解決ではなく、グラフ計算機で行うこともできます。代わりに、論理的思考スキルに焦点が当てられています。証明を構築することは、率直に言ってソフトウェアを書くことに非常に似ています。
これまでで最高の数学クラスは、最初の「本当の」数学クラスだと考えたものでした。基本的には、グラフ理論から数論までのさまざまな分野をカバーする証明クラスの紹介です。使用したテキストは素晴らしかったです(D'Angelo and Westの「数学的な思考:問題解決と証明」)。この本を読んで証拠を攻撃するためのアイデアを得るのに役立つかもしれません。
全体的に、私は大学で取った数学のいずれかが本当に必要でしたか?いいえ、おそらくそうではありません。しかし、ある程度の正式なバックグラウンドを持っていることで、批判的思考スキルが向上し、想像力が向上しました(通常、問題を解決する方法はたくさんありますが、時には良い、時には悪いこともありますが、独自のアイデアが役立ちます)。
ほら、私は数学が得意ですが、実際にはプログラミングにはまったく使用していませんし、プログラミングもかなりしています。私のアドバイスは、単に十分に知らないことに慣れて、誰かにあなたのために数学をしてもらうことです。
知っておくべきことがたくさんありますので、それらのすべてが得意であるとは期待できませんが、特に数学はあまり有用ではありません。
もちろん、あなたのプログラムは科学的なものであるため、それが必要かもしれません。
ESSLLIの「Logic&Computation」セクションの一部の(初心者)コースのコースノートを見ると(例として、2011年のプログラムや2010年のプログラム、さらに検索)、興味深いことがあります。プログラミングに関連する分野の現在の理論的発展についての印象を与えます。その後、それらのコースで触れられた特定のサブフィールドの基礎をより深く研究することを決定できます。
(そうでなければ、あなたの質問に答えるのは難しく、あなたが本当に必要としないか、興味がないかもしれない非常に異なる「数学」があります。研究のため、特定のパズルを解決することです。特定のパズルを解決しようとすることは、理論の本当の理解、その背後にある興味深いことを理解するプロセスの重要な要素です)
CS数学を適切に勉強しているのであれば、数学論理や集合論のようなものを見ていることになります。これらには、かなり複雑な数学がサポートされています。したがって、数学の基本的なレベルが少し難易度の高い場合は、CS関連の分野に進む前に、基礎から始めるのが最善です。
したがって、KA StroudのEngineering Mathematicsから始めることをお勧めします。よく書かれており、簡単に理解でき、基本事項と高度な内容をカバーしています。