私はCSコースにいます。どのプログラミングのテーマに焦点を当てるべきですか? [閉まっている]
-
22-07-2019 - |
質問
現時点で最も重要なことは何ですか?後でプログラミングの経験を積むことができることを知っています。卒業後、優れたプログラマーまたはアナリストになるには、次のうちどれを勉強すればよいですか?
- データ構造
- アルゴリズム
- ソフトウェアエンジニアリング
- 低レベルの側面
- デザインパターンとオブジェクト指向分析
[編集]
回答ありがとうございます。他の学生の参考になる他の重要なトピックを含めたいと思います:
- 同時プログラミング
- オペレーティングシステム
[/編集]
注:リストの最初の項目は英語を学ぶ
だと思います解決
すべて。リスト内のすべてが重要です。
他のヒント
私は個人的に次のことを勉強します:
- 1つのCライク言語(C / C / C ++ / C#/ Java)
- 1つのスクリプト言語
- 1つの関数型プログラミング言語
- 特にマルチコアの世界に移行しているため、他の言語が現在できることを超えた並列化が可能になるため、これは便利です。たとえば、テレコムインフラストラクチャ全体がErlangで実行されています。
- データ構造
- これらはどこでも使用します。プログラミング言語にとらわれないため、キャリアを通じて必要になります
- アルゴリズム
- これらはおそらく上記の項目に当てはまります。特定のデータ構造には、それらにアクセスするための特定のアルゴリズムがあります。
- デザインパターン
- はい、もちろんさまざまな設計パターンを学びますが、それらがすべてソフトウェア工学のすべてではないことを同時に知っています。
リストの他のすべても同様に非常に重要です。したがって、上記の項目をお勧めしますが、リストした他の項目よりも重要ではありません。これらは私が学校から抜け出したいと思っているアイテムであり、クラスとして提供されなかったが、他のすべてのコースワークと一緒に自分で学習しなければならなかったと言うのは悲しいです。
リストで特定の言語について言及していないことを考えると、あなたはすでに正しい軌道に乗っていると思います。言語やパラダイムに焦点を当てているのは、CS学生が犯した最大の間違いだと思います。
リスト全体が非常に重要です。追加する唯一のことは、マルチスレッドのかなり詳細な研究です。今後さらに重要になります:( Ars-Technicaの記事)
Joelをここに接続するのが適切なようです;-)
それらはすべて必須です!!
あなたは何を考えていますか?集中力(ゲームデザインとセキュリティ、暗号化など)を選択することを期待していました。
「アルゴリズム、OOP、データ構造、ソフトウェアエンジニアリングなど」から選択することはできません。これらは基本です!それらすべてを学ぶ必要があります。
データ構造とアルゴリズムから始めますが、そこではコンテストはありません。オブジェクト指向デザインは便利です。 低レベルの少し、はい。 S / Wエンジニアリングはスキップできます(一粒の塩でも構いません)。
さらに、ここにいくつかのアイデアがあります:
- リレーショナルDBの基本(「oracleの使用方法」だけでなく、実際のリレーショナル代数)
- オペレーティングシステム
- コンパイラ+インタプリタ
- IRの何か(/遺伝的アルゴリズム/ニューラルネット)
はい、「ハードコア」に偏っています。 CSスタッフ。忙しい仕事、非常に重いプロセス、その他のPMがらくたを業界ですぐに習得できます。教育リソースを無駄にする必要はありません。 :-)
見てみましょう。
重要な選択を行うには、複雑さとデータ構造およびアルゴリズムを理解する必要があります。残念ながら、これらのトピックを実際に理解し、複雑な頭の体操を解く必要があります。なぜなら、面接では、実際の仕事よりもはるかに大きな役割を果たすからです。したがって、これらは実用的な理由から最も重要なものです。
ソフトウェアエンジニアリング、設計パターン、および分析は非常に重要です(私は偏っていますが)。残念ながら、デザインパターンを除き、主要なプロジェクトで積極的に練習しないと、これらのトピックを実際に学ぶことはできません。オブジェクト指向プログラミングの概念と仮想関数/動的バインディングの概念の理解に焦点を当てます。これらは非常に重要であり、多くの人々がそれらを適切に理解していないためです。最善のインターンシップを取得してください。
リストしたものはすべて、まともなコンピューターサイエンス教育の基本的なコンポーネントですが、実際に以下を追加する必要があります。
- オペレーティングシステム
- ネットワーキング
- 数学(離散、微積分、代数、証明、統計の入門コース)
- データベース
- 基礎(有限オートマトン、正規表現、チューリングマシンなど)
これらの2つのリストを一緒に使用すると、コンピューターサイエンスについて十分に理解できます。その後、さらに専門的なトピック(最も関心のあるトピック)を選択する必要があります。
- 人工知能
- 暗号/セキュリティ
- 画像/信号処理/認識
- コンパイラ
- グラフィック
- ゲームデザイン
- など
トピックに深く入り始めると、数学を含むすべてのコアコースがすべて機能し始めることがわかります。たとえば、私は現在、画像認識を研究しており、統計、AI、計算、証明、代数、アルゴリズム、データ構造、OOPなどからのものを使用して理解する必要がありました。
リストのすべてが重要ですが、適切な態度も必要です。クラスの割り当てを行うだけでなく、勉強する各項目がどのように機能するのか、なぜこのように行われたのかについて十分な詳細を掘り下げる必要があります。これは本当に将来のスペシャリストとしてあなたに優位性を与えるものです。
- マルチスレッドおよび分散システム。
- GUIを使用してユーザーフレンドリーなアプリケーションを構築する方法。
これらはすべて非常に優れていますが、アルゴリズムは開始するのに適した場所です。おそらく、理論のために最初に個別の数学コースを調べる必要さえあります。