web-dev-qa-db-ja.com

コンピュータサイエンスを完全に自習するにはどうすればよいですか?

完全に独学のプログラマーである私は、典型的なCSの卒業生に教えるコンピュータサイエンスコースを自己学習することで自分自身をよりよくできたらいいと思います。

インターネットでさまざまなリソースを見つけるのは簡単で、もちろんMITオープンコースウェアがあり、スタンフォード大学や他の大学のCourseraコースもあります。他にもインターネット上に数多くのオープンリソースが散在しており、繰り返し推奨される優れた書籍がいくつかあります。

私は多くのことを学びましたが、私の研究は非常に断片化されており、それは本当に私を悩ませます。私はどこかで、私がどこに行かなければならないパスと自分が制限すべきスタックを見つけることができれば、essential私が研究したコンピュータサイエンスの一部を、体系的に私が研究していないものにアプローチします。

ウィキペディアの問題は、何が不可欠であるかを教えてくれないが、完全なリファレンスであることを主張することです。

MITのコンピューターサイエンスおよび電気工学用オープンコースウェア。コースの膨大なリストもあり、どのコースが必須で、どのコースが人の興味/要件に応じてオプションであるかを教えていません。私は人が異なる主題を研究しなければならないという命令についての言及を見つけませんでした。

このダミーリストのように、私がフォローできるリストを作成したい

SUBJECTS                                                        DONE

Introduction to Computer Science                                  *
Introduction to Algorithms                                        *
Discrete Mathematics                   
Adv. Discrete Mathematics
Data structures                                                   *
Adv. Algorithms
...

あなたがはっきりと見ることができるように、私はコンピュータサイエンスが何の特定の主題で構成されているのかほとんどわかりません。

MITコースウェア(+必須科目がMIT OCW)に存在しない必須科目)から推奨コースを指摘されたとしても、それは非常に役立ちます。調査。

私がすでに通過した投稿をリストします(そして、私が探していたものを取得しませんでした)

https://softwareengineering.stackexchange.com/questions/49557/computer-science-curriculum-for-non-cs-major -トップ回答は、CSEを研究する価値がないと述べています

https://softwareengineering.stackexchange.com/questions/110345/how-can-a-self-taught-programmer-learn-more-about-computer-science -ポイントMIT OCW

https://softwareengineering.stackexchange.com/questions/49167/studying-computer-science-what-am-i-getting-myself-into

https://softwareengineering.stackexchange.com/questions/19912/overview-of-computer-science-programming

46
Optimus

私はMITからいくつかのコース資料を見てきましたが、それは衝撃的に悪かったです。彼らは、VC5、暗黙のグローバル変数の束、32ビットARGBの代わりに「青」として色を渡すことを必要とする教材を持っていました。カリキュラムやコードは、有名な大学から来たからといって信用しません。

私のCS学位(英国でCSのトップ10にある大学)の学位は次のとおりです。

1年目:

  1. OOP-スーパーベーシック
  2. コンピュータシステム-バイナリ整数表現など。
  3. 基本的なリレーショナルデータベース理論
  4. CS-単純な2Dおよび3Dジオメトリの数学。
  5. 少しのHTML/JS-完全な初心者のもの
  6. 同様に小さなPHPです。
  7. 少しの関数型プログラミング

二年目:

  1. ユーザーデータの保護を中心とした法律など、コンピューティングにおける法的問題
  2. プログラミング言語-Chomsky階層と字句解析がカバーされました
  3. オペレーティングシステム、ネットワーク、インターネット-主に仮想メモリやページング、IPスタックなど
  4. 2Dコンピュータグラフィックス-主に基礎となる数学の定理を証明するだけ
  5. AI-ニューラルネットワーク、ベイズ信念システムなどの基本的な説明.
  6. 要件分析-UML、機能的/非機能的要件の概要。
  7. チームプロジェクト

3年目:

  1. アルゴリズム分析-複雑性理論、主に
  2. プログラミング言語の実装-LL/LR構文解析手法、CFGなど。
  3. ソフトウェアプロジェクト管理-ウォーターフォール/アジャイルモデルの概要
  4. インターナショナルコンピューティング-Unicodeおよびその他のローカリゼーションの楽しみ
  5. 高度なAI-正直なところ、わかりません。すぐに試験を受けます
  6. 3Dコンピュータグラフィックス-ほとんどの場合、回転行列などの定理を証明します
  7. エージェントベースのシステム-主に非同期エージェントの通信、グループ決定への到達などに関するもの。
  8. マイクロプロセッサアプリケーション-デジタル信号処理
  9. ロボット工学-コンピュータビジョンやロボットの意思決定などを高レベルでカバー

お気づきのように、ほとんどすべてが何かの「基本」であり、有用な深さまでほとんどカバーされていません。

実際に実行する価値があったもの、必須:

  1. OOP-そしてさらにいくつか、そしてさらにいくつか
  2. 関数型プログラミング-さらにいくつか。両方のスタイルをカバーするために構文やツールなどを再学習する必要がないC++やC#などの言語を選択してください。
  3. カーネルモードとユーザーモードのように、OS部分の仮想メモリについて知っておくと便利です。セグメンテーションとIPスタックをスキップします。
  4. 要件分析-どのプロジェクトにも役立つはず
  5. アルゴリズム分析-アルゴリズムの複雑さ、その軽減方法、および一般的な操作の複雑さを理解することが重要です。
  6. ソフトウェアプロジェクト管理モデル-多くのショップがアジャイルを行っており、多くの古いショップがウォーターフォールスタイルモデルを行っています。
  7. 国際コンピューティング-Unicodeは不可欠です

やる価値のあるもの、オプションで:

  1. プログラミング言語-チョムスキー階層、字句解析と解析のツール。 LLパーサーまたはLRパーサーの背後にある理論をスキップします。LRパーサーは、事実上すべての明確なCFGを受け入れることができます。受け入れられない場合は、パーサージェネレーターのドキュメントにそれが示されます。
  2. 3Dグラフィック。 「これが回転行列の公式であることを証明する」という時間の無駄ではなく、実際の「これは頂点シェーダーです」、つまりGPGPUです。それは面白く、面白く、そして違う。
  3. AIの一部は、潜在的なフィールドやパスファインディングのように楽しいものです。

それは不可欠ですが、とにかくカバーしませんでした。

  1. 同時実行性-2012年の誰にとっても、少なくとも基本的なことは知っておく必要があります。

残りは完全に時間の無駄でした。残念ながら、これらの9つのポイントのほとんどは、私がすでに知っているか、他の場所で有用な部分を拾いました。 FizzBu​​zz問題 のようなものについて読むと、パックの上にあるためにそれほど多くを知る必要がないことがすぐに明らかになります-幸運なことに、私の学位や他の学位のためにオンラインで見た資料の多くは、実際にはあまり教えていません。

24
DeadMG

ここにリンクされているACM/IEEEの2001年のコンピュータサイエンスカリキュラムの推奨事項を試してください。 http://www.acm.org/education/curricula-recommendations

2008 CSアップデートと一緒に。

2001年のレポートの17ページには、すべての「コア」知識を強調し、選択科目をリストした便利なチャートがあります。

学部課程は、これらの推奨事項によってコアと見なされるコースをカバーする時間がないので、カテゴリのいくつかをまとめて、学生がそれらの中から選択できるようにします(たとえば、オペレーティングシステム、プログラミング言語、およびソフトウェアエンジニアリングは、ソフトウェア、学生はトラックを選択します)。

必要なコースワークは、ほとんどすべての学校のCS部門のWebサイトで見つけることができ、それらはこのバージョンのはずです。

5
Ruan Caiman

オープンコースウェアは、提供されているコースのリストにすぎません。学生が何をしたか知りたい場合は、MITの(OCW以外の)Webサイトにアクセスして、実際のプログラムを確認してください。彼らは何が必要で何が何のための前提条件と考えられるのかのリストを持っています。 ここにそのページがあります。

5
stonemetal