これは、アルゴリズムとデータ構造を学習する必要があるかどうかを尋ねた前回の質問の続きです。はい、そうです。
今、私は、実験によって、または実際に、またはどんな課題においても、それを学ぶ機会を得られない環境で働いています。適切な本、適切な問題、アルゴリズムやデータ構造を学習するために6か月、1、2年に渡る適切なリソースなど、適切なアプローチとは何ですか?また、問題をデータ構造とアルゴリズムに関連付けることができるように私の心を形成します。
これは、アルゴリズムとデータ構造を学習する必要があるかどうかを尋ねた前回の質問の続きです。はい、そうです。
今、私は、実験によって、または実際に、またはどんな課題においても、それを学ぶ機会を得られない環境で働いています。適切な本、適切な問題、アルゴリズムやデータ構造を学習するために6か月、1、2年に渡る適切なリソースなど、適切なアプローチとは何ですか?また、問題をデータ構造とアルゴリズムに関連付けることができるように私の心を形成します。
回答:
読む。
いいえ、本当に読んでください。
アルゴリズムと設計に関するすべてを読んでください。そこには驚異的な本があります。Sedgewickアルゴリズムの本は優れています。Skienaのアルゴリズム設計マニュアルも同様に優れています。一緒にこれらの本は、私が行くすべての仕事のすべての本棚で、神話のマン月とともに私に従います。
その後尋ねます。
尊敬する人と話してください。どのような決定点があり、なぜ決定したのかを尋ねます。良いものは、「Xを選んだのは、これらの点でA、Bよりも優れているからです。Cを使用することもできましたが、このためより良い選択だと感じました」と言うことができます。
次に、します。
ものを構築します。決して使用しないものを作成します。必要のないものを作成します。数独パズルを解くプログラムを書いてください。もう一度やり直してください。そしてまた。5つのまったく異なる方法でビルドします。数独パズルを生成するプログラムを構築し、ソルバーにフィードします。最速のソルバーを見つけます。その後...
理由を明らかにする。
「何」はほとんど重要ではありません。つまり、手元のプロジェクトを完成させることが重要ですが、最後に「なぜ」を知らずに「何」を知っているなら、そもそもそれをやったことはないでしょう。履歴書に箇条書きを付けました。クッキーを手に入れてお祝いしましょう。「なぜ」は「何」よりもはるかに重要です。
そして記録のために、数独は例でした。Kongregateの膨大な数のロジックパズルを使って、この演習を自由に過ごし、多くのことを学んでいました。
http://www.amazon.com/Bundle-Algorithms-Parts-1-5-Fundamentals/dp/020172684X/ http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1848000693/ http://www.amazon.com/Mythical-Man-Month-Software-Engineering-Anniversary/dp/0201835959/
私は12歳のときに、グループで魔法のレッスンを受けました。魔術師の名前はジョー・キャロタでした。彼は一度トリックをして、「どうやってそれをやったの?」彼はその日、それ以来私にくっついている何かを言った。
ジョーの応答、「マイケル、あなたが本当にそのトリックがどのように行われるかを知りたいなら、あなたはそれを自分でどうするかを考えなければなりません。」
もちろん、それは私が聞きたかったことではありませんが、問題解決に集中できました。これは私の視点からの問題解決でした。問題を解決するための私の最初の試みが17の手順を踏んで本当に不格好だった場合、良いニュースは問題を解決したことでした。
次に、開発したソリューションを見て、そのソリューションを改善する方法を探して、最終結果を合理化する方法を学びます。私のコンピュータープログラミングライフの後半で、このプロセスが「段階的改良」と呼ばれることがわかりました。今日、彼らはそれをリファクタリングと呼んでいると思います。
うまくいきましたが、今でも機能します。
ここで、次のリンクは、私がこれまで従ったMITによる最も成功したDSおよびAlgorithmsクラスの1つにリダイレクトします。
http://academicearth.org/courses/introduction-to-algorithms
このビデオシリーズをお楽しみください。がんばろう !!!
オンラインコースを受講できるか、個人指導を受けられるかを確認してください。それに失敗すると、これはクイックGoogle検索で表示されます。 私はこの春にクラスを受講しました(最初はEEからソフトウェアに移行しました)。ポインターをよく理解していれば、それほど難しいことではありませんでした。
データ構造とアルゴリズムの学部レベルのコースに登録してみてください。他の人と一緒にこれらの概念を学ぶことは常に良いことです。
たとえば、オンラインのsphereで古典的な問題の解決に取り組み始めてください。このサイトは派手ではないかもしれませんが、これらは今日使用されている重要なデータ構造とアルゴリズムの多くを必要とする古典的なプログラミングの問題です。
ソリューションは、C / C ++からJavaScript、Lisp、Smalltalk、アセンブラーなど、さまざまなプログラミング言語で送信できます。そのため、あなたが快適に感じるプログラミング言語であれば、問題の解決に完全に集中できます。
次のようなものをいつでも試すことができます:http : //codekata.pragprog.com/
私は読書とは対照的に、それを考えることによって常により良く学びました。ただし、回答を探すには、ドキュメント/資料を用意する必要があります。