私は何年もプログラミングをしてきましたが、卒業証書で自分をより雇用しやすくしたいと考えていました。私はすでに大学を1度通っていたので、5年間のコンピュータサイエンス専攻を完全に選択することはしませんでしたが、より短く、より実用的なソフトウェアエンジニアリングプログラムを選択しました。
理論よりも具体的なスキルに重点が置かれるのではないかと期待していましたが、大学や教授は物事が正しく、形式的で、学術的であることが好きだという考えはまだありました。それはまだ科学ですよね?誤り-多くのITコースがずさんであることに驚きました。
C++の入門コースでは、1〜2個のプログラムを作成した後、「なぜグローバルが悪いのか」や「定数はなぜ良いのか」などの決まり文句についてテストしました。適切なコンテキストのないランダムな逸話。配布資料には、system(pause/cls)
、getch
、およびconio.h
やiodos.h
などのヘッダーが含まれていました。タスクの1つは、32から255までの「ASCII文字」を印刷することでした。スクリーンショットは、Windows-1252コードページを使用して印刷されたものですが、エンコーディングについてはまったく触れられていません。
質問:大学/教授が劣っているまたは古いツールや方法を使用しているようで、教えられているコンテンツがボーダーラインが正しくない場合、建設的で敬意を持って対処するにはどうすればよいですか?
データ構造やアルゴリズムなどのトピックについて学習するためのツールにすぎないため、プログラミングを超えて検討する必要があるとの回答もあります。私はこの考えに同意しますが、この場合、貧弱なスタイルの背後にそのような計画は実際にはありませんでした。ほとんどのコースは、背景理論や「全体像」をほとんど持たない別の「ツール」を教えるだけです。そのようなコースを提供するためだけに、彼らはすぐにまとめられたように感じることがよくありました。
私はそれにこだわり、ついに卒業しました。品質は全体的にかなり低いままで(いくつかの大きな例外はあります)、他の何人かの学生がそれについて不満を言っています。予想通り、私は学校からよりも個人的なプロジェクトやアルバイトから多くを学びました、しかし学校を終えるプロセスとレーベル「ソフトウェア学生」それ自体が不思議なほど便利に見えます!
数学とプログラミングはまったく別物です。数学は科学であり、プログラミングは技術です。アカデミックな世界では、プログラミングはあなたが本当のこと、実際に興味深く重要なもの、つまりアルゴリズムに対処するために知っておくべきことです。
コンパイラが古く、system
呼び出しを使用するかどうかは誰が気にしますか? Linuxを使用していてWindowsを使用していない場合、誰が気にかけますか?まあ、教授はそうではありません、それは確かです。そして、彼らは本当に、すべきではありません。学術機関のコースからプロのプログラマになることを期待しないでください。それはあなたがそこに行くものではありません。
彼があなたに使うことを期待しているコンパイラは古く、OSに関する仮定は時代遅れであり、その問題があることは事実です。あなたはそれを上げることができ、多分それは扱われるでしょう。しかし、コースが業界と互換性がないためではなく、むしろ学生に差し迫った困難を引き起こすからです。今、古いコンパイラを見つけて、MacBookで実行してください...
一般に、学術研究はC++とAndroidの学習に無駄に費やされるべきではなく、実際のコンピュータサイエンスのことをそこで学習する必要があります。そのための別のチャンスはありません。アンドロイド? ADTを使用してEclipseをダウンロードし、私と同じように自宅で作業を開始します。そのための学校は必要ありません。
大学に技術開発を期待してもいいのではないかと思います。特に研究大学ではありません。学士のみを提供する場所は、より業界をターゲットにすべきであると言えますが、研究大学は研究者を求めています。教授たちは、優秀なプログラマーではなく、大学院生や博士課程の候補者を探しています。それに応じて期待のレベルを設定する必要があると思います。
コンピュータサイエンスは、大工の物理学をプログラミングすることです。
大工になりたいのなら、物理学を勉強してもそれは起こりません。それはあなたがあなたの仕事に適用することができるかもしれないという多くの興味深いことを教えてくれますが、それはあなたが良い大工になる方法を教えません。そのためには、大工の工芸を学ぶ必要があります。
同様に、優れたプログラマーになりたい場合は、 プログラミングの技 を学ぶ必要があります。残念ながら、いかなる種類の認証も発行する機関はありません。だから、基本的に、これはあなたが見つけることができるかもしれない人々を助けることで、あなたが自分でしなければならないことです。あなたにとってこれは繰り返しと反射を意味します。たくさんのコードを書いて、戻ってそれを見てください。また、他の人のコードを読むのにも時間がかかります。オープンソースプロジェクトへの参加を検討してください。
大学はプログラミングをあまり気にせず、今後数年以内に変更される詳細を気にしません。あなたが学校で目にしているのは、彼らがプログラミング環境(悪い環境ですが、それほど重要ではない)を選び、それをあなたに見せて、彼らがあなたにさまざまなプログラミング技術を教えることができる参照フレームを持たせることです。参照フレームが貧弱であり、言語でさえ奇妙な選択であると主張することができます。彼らの観点からは、かなり恣意的に選ばれているので、おそらくそれは問題ではありません。
「DOSスタイル」の学習には何の問題もありません。ここにいる昔ながらの人の多くは、DOSから、または以前のオペレーティングシステムで、ラインベースのプログラムを作成して、きちんと調整してきました。コンピューティングの世界は非常に急速に変化するので、どのライブラリが何のために使用されたかなどの詳細に悩まされることはありません。
実際、プログラマーでいっぱいの世界に依存性注入を教えられる理由があると思いますが、FizzBuzzに答えるのに苦労しているのは、多くのプログラマーが費やしていないためですその非常に基本的なレベルで多くの時間。
これはプログラミング入門のようですので、本質的には心配する必要はありません。基本を学びなさい、そうすれば大丈夫です。他のプラットフォームに興味がある場合は、自分で探索してください。それがプログラミングの素晴らしいところです。
どのように対処できますか? プログラミングの電子書籍またはストリーミングビデオをダウンロードし、自分で例を試してください。教授に依存しないでください。プログラミングは自分で高度に学習します。
多くの大学には、くだらないプログラミングの教授がいます。私は私の国でトップの大学院の1つに行き、プログラミングでかなりスクワットを学びました。私が思うに、ほとんどのunisは、本当に優れたプログラマーがより良い給与の仕事(教育ではない)を選択する原因になると思います。小さなプロジェクトを取り上げて、自分でコーディングしてみてください。このような多くのフォーラムからヒントを得ることができます。それは長期的に学ぶためのより良い方法かもしれません。
大学はプログラミング言語、アルゴリズムなどの抽象的な概念を教えるべきであり、プログラミングを学ぶ場所ではないはずだと思います。プログラミングは非常に実践的な活動であり、それを行うことによってのみ学ぶことができます。
勉強中、Pascalでプログラミングの基本を学び、次にCで1つのプロジェクトを作り(自分で言語を学ばなければなりませんでした)、プログラミング言語の概念(手続き型、オブジェクト指向、関数型、ロジック)のコースを行いました。 MSDOSにはconio.hまたはfarポインタがあり、UNIXシステムにはないことは、民間伝承でした。これは、私たちの学生がビールについて話し合うことでしたが、それほど重要ではなかったので、授業中に話し合うものではありませんでした。大学の教育は、抽象的な一般的な知識に焦点を当てており、詳細に入るのを避けています。例と詳細は、一般的なものを説明するためだけに提示されています。
ASCIIとUnicodeおよびMSDOS conio.hライブラリの比較の例では、すべてのプログラミング環境が特定の方法でデータを整理する方法を持っています。VisualStudioのC++でプログラムすると、他のライブラリを使用する必要がありますが、その一部はLinuxなどにありません。したがって、コースがWindows 7/Visual Studioにある場合、一部の人々はLinux/GCCで実行する方がよいと不満を言うかもしれません。しかし、IMO、これは重要ではありません。
だから、あなたは細部に気を取られず、コースでカバーされている一般的な概念に集中するように努めるべきだと思います。たとえば、ほとんどのプログラミング言語では、コンソールI/Oを実装するためにいくつかのライブラリが必要であり、プログラミング環境が与えられている場合、手元にあるツールで問題を解決する必要があります。多分これはあなたにはかなり明白に聞こえるかもしれません、そしてあなたはすでにいくつかの以前の知識を持っているのであなたは本当に何かを学んでいないという印象を持っています(これは起こり得る)が、私はあなたが悪いコースに参加しているという印象を受けませんでした。
system("");
でいっぱいのプリントアウトは、実際にはかなり良いものです!人々が最近これらの機能について何も知らないことに驚いています。
system("pause")
、そしてgetX関数のすべての落とし穴を取り除きます。 system("cls")
、そして1ページのコードを保存しました。 system("mkdir foo")
そして、2ページのバッファー割り当て、パス分割、_makepath_ss、256パス制限、大量のエラー出口などを保存しました。
さらに、コードはとてもシンプルなので、サルはそれを理解します。
if(!system("mkdir foo"))
//booo and exit`
多態性倒錯の学校は、法律で禁止されるべきものです。
PS:さらに、すべての敬意をもって、私は人々が例外を備えてC++を教えられ、事実上すべてを良いものとして受け入れていることを受け入れるのに苦労しています。非常に簡単で安全なものですが、実際には核の地雷です。
Misra-C++およびJSF-C++に関する分析を参照してください。そして http://blogs.msdn.com/b/oldnewthing/archive/2005/01/14/352949.aspx です。今日は残りの記事をすべて見つけるのが面倒です。
そうは言っても、私はc ++開発者であり、多くの機能と言語全体を楽しんでいます。
大学は基盤を提供しています。強力になれば、その上に超高層ビルを構築できます。私は大学時代にBASIC、C、C++を学びました。後でVisual C++でプロジェクトを作成したとき、まったく別の世界だと思いました。後で、フレームワークと言語の違いに気付きました。
目的のコンピューティング分野の開発に重点を置いている適切な大学を選択してください。それはあなたのキャリアの後半であなたを助けることができます。
コンピュータサイエンスのコースでは、プログラミングを教えません。これは、私が自分のCSコースで行ったプログラミングの一部と比較した公園の散歩です。
これの根本的な問題は、私の経験では、willが同等のレベルでプログラミングを教える場所がほとんどないため、選択の余地がないということです。
私の提案はそこに聞こえるかもしれませんが、聞こえます...専攻を切り替えてください。
私の学界での経験では、コンピュータサイエンス専攻は、コンピュータをティックにするものを非常に低レベルで見ていました。 C++の基本的な入門書から始めて、プログラムが何であるか、プログラムの背後にあるメモリと計算の基本を確実に理解してから、アセンブリ、OSの概念、電気工学、デジタル設計などを学びました。この程度で、NVidia、AMD、またはロッキードとの連携を探します。新しいハードウェアを作成しているどこかで、ドライバーを記述してソフトウェアを制御するには、十分に低いレベルでそのハードウェアを理解できる人が必要です。
私の大学では「情報システムの管理」と呼ばれていた学習コースが必要なようです。それが私がたどったコースです。 Java、VB.NET、C#、およびいくつかのPHPおよびその他のWebスクリプティング)でプログラミングを教えました。また、計算(CSと同じ程度ではありません)、会計、ファイナンスも必要でした、統計、ビジネスコミュニケーション、オブジェクト指向のA&D、データベース設計、およびシステム分析BSではなくBBAを取得し、WindowsまたはWebソフトウェア開発者として仕事を始めるための基本的なツールを手に入れました。
「コンピュータサイエンス」専攻があなたに何を準備するかは、どの大学がそれを提供しているかに大きく依存します。非常に時代遅れで、低レベルのコンピュータを見て、教育を終えた後のようには聞こえないような、早い段階にいるようです。大学の周りを見回して、放課後にやりたいコンピュータの仕事のタイプに焦点を当てた学習コースを見つけることをお勧めします。
とにかく、あなたの学習コースは非常に基本的な「コンソールレベル」のプログラムの作成から始まります。言語は関係ありません。彼らがあなたに教えているのは、基本的な手続き型プログラミングです。コンピュータがステップごとにあなたを追跡できるように、十分に小さなステップで考える方法(コンピュータは当然のことではなく、人間のロジックの飛躍のほとんどを追跡できないため)。そこから、オブジェクト指向プログラミングに進みます(すべてを実行する1つの長い関数を使用する代わりに、実際のオブジェクトの状態とロジックを表すいくつかの小さなコード「オブジェクト」を保持する方がはるかに保守しやすくなります)。イベント駆動型プログラミング(「私たちに電話しないでください、私たちはあなたに電話します」;プログラムは基本的に起動し、OSに初期グラフィックUIを設定するように指示し、座ってOSがユーザー入力を渡すのを待つメッセージループなど).
彼らは学生に食料調達しなければならない。ほとんどの学生はプログラムできません。だから彼らはそこで技術的になるように強いられない。
彼らは独自の研究分野も持っていますが、それを教えていません。とにかく、多くの研究者はとにかく優れた教師ではないので、彼らがあなたがすでに知っていることを教えているなら、あなたは幸運であると考えることができます!
とにかく、コンピューターサイエンスとは何かを知らないようです。業界にとって何が実用的かということではありません。
何を勉強しているのか、なぜ勉強しているのか、混乱しているかもしれません。
コンピュータサイエンスの入門プログラムを勉強しているようです。これは、コンピュータが低レベルでどのように機能するかについての基本を学んでいる、最小限の経験を持つ人々を対象としています。
また、あなたは半真面目またはプロのプログラマーであるようです。あなたは10年のプログラミング経験があり、3つの言語に慣れています。少なくともチームの一員として働くのに十分なことをしているように思えます。このコースで場違いだと思いませんか?他の学生もあなたと同じレベルの経験やスキルを持っていますか?
このコースを終了する予定はありますか?
その「紙切れ」の直後ですか?これが当てはまる場合は、勉強しながら就職しようとするのを止めないでください。仕事に応募し、あなたが有能なプログラマーであり、仕事を得るために紙が必要なので勉強していることを伝えます。彼らがあなたを雇うなら、あなたは中退を検討します-あなたがプロの仕事を持っているなら、あなたは本当にその一枚の紙をもう必要としません。学校で学ぶために支払うよりも学ぶために支払うの方が良いので、通常よりも低い賃金を受け入れます。 。 1〜2年後は、ほとんどがスピードアップし、それからきちんとした昇給を求めるか、経験があるので自分で別の仕事を見つけることができます。
または何かを学ぼうとしていますか?次に、教授の判断をやめます。 「座って、黙って」と言っていた思い出に残る高校の教師のように。教授があなたよりも計り知れないほど多くの経験と知識を持っていることはほぼ保証されており、あなたは彼から恐ろしい多くを学ぶことができました。彼があなたにとって遅すぎる場合は、以前の学習と経験に基づいて、これらの入門コースの単位を取得してください。
しかし、あなたは正しいコースにいますか?文学の教授や歴史の教授からも多くのことを学ぶことができます...特に関係はありません。おそらく、「コンピュータサイエンス」ではなく、より実践的で「現実世界」のスキルが必要です。 「ソフトウェアエンジニアリング」をお試しください。より焦点を絞ったコースについては、他の教育機関をご覧ください。
新しい仕事を始めるときと同じように、クラスや学習コースを外部から確認するのは非常に難しい場合があります。あなたはあなたが期待するものを与えていないコースにいるようです。オプションを再検討してください。
この質問に対する答えの多くはがっかりさせるものだと思いました。彼らはCS vsプログラミングなどについての疲れた古い議論に戻った。それはそうかもしれないが、OPが進んでいるコースも教えていないように思える。
大学でパートタイムでCSを学ぶ前は、すでにプログラマーとして仕事をしていて、かなり独学で勉強していました。私は注意深く買い物をしましたが、一般的にカリキュラムは時間の浪費であることがわかりました。また、すでにその分野での経験があるにもかかわらず、コースをスキップすることはできません。
私の経験では、かなりの割合の教授がかなり怠惰で時代遅れのカリキュラムを使用しています。正直なところ、あなたはあなたの時間を無駄にしているように聞こえます。卒業証書を修了することが就職に役立つかどうかさえ疑問です。
コースの変更に多くのことができるとは思えません。自分で勉強して補うこともできます。または、すべてを忘れて、CSを個別に勉強し、いくつかの業界認定も行います。
加えて、私はあなたの国の就職市場における卒業証書の価値について何も知りません。内容にかかわらず卒業証書自体が価値がある場合は、多少欠けているカリキュラムに我慢する必要があるかもしれません。