タグ付けされた質問 「computer-science」

コンピュータサイエンスまたはコンピューティングサイエンス(略してCSまたはCompSci)は、計算とそのアプリケーションへの科学的アプローチです。

11
単に言語の詳細を学ぶのではなく、実際にプログラミングの方法を学んでいることを確認するにはどうすればよいですか?[閉まっている]
本物のプログラマは1週間以内にどんな言語でも簡単に学べるとよく耳にします。言語は物事を成し遂げるための単なるツールである、と私は言います。プログラミングは、習得して習得しなければならない究極のスキルです。 単に言語の詳細を学ぶのではなく、実際にプログラミングの方法を学んでいることを確認するにはどうすればよいですか?また、1つだけではなくすべての言語に適用できるプログラミングスキルをどのように開発できますか?

30
ポインターの良い説明は何ですか?[閉まっている]
あなた自身の研究で(あなた自身で、またはクラスで)、最終的に、本当にポインターを理解した「あはは」の瞬間がありましたか?特に効果的と思われる初心者プログラマ向けの説明はありますか? たとえば、初心者がCで最初にポインターに出会ったとき、コンパイルされるまで&sと*sを追加するだけです(私自身もそうでした)。おそらく、あなたやあなたの学生のためにポインタを「クリック」させたのは、写真、または非常にやる気のある例でした。それは何でしたか、それがうまくいかない前に何を試しましたか?トピックの前提条件(構造体、配列など)はありましたか? つまり、&sおよびの意味を理解するために必要なのは*、自信を持ってそれらを使用できる場合ですか?構文と用語やユースケースを学ぶだけでは十分ではなく、ある時点でアイデアを内部化する必要があります。 更新:私はこれまでのところ答えが本当に好きです。どうぞ来てください。ここには多くの素晴らしい視点がありますが、概念を内面化した後、私たち自身にとって多くは良い説明/スローガンだと思います。私はそれがあなたに夜明けになったときの詳細なコンテキストと状況を探しています。 例えば: Cでは、ポインターを構文的に少ししか理解していませんでした。2人の友人がポインターを別の友人に説明しているのを聞きstructました。最初の友人は、それをどのように参照および変更する必要があるかについて話しましたが、それは私にぶつかった他の友人からの短いコメントでした:「より効率的です」。16バイトではなく4バイトを渡すことが、私が必要とする最後の概念的なシフトでした。

29
コンピューターサイエンスの学位がプロのプログラマーにとって重要なのはなぜですか?[閉まっている]
私はコンピューターサイエンスの学位を取得しています。ドアを開けて仕事を得るのに最適です。C#.NETプログラミング(この分野で最も人気のあるプラットフォームと言語であり、世界全体で最も人気のあるOSを引き継ぐ米国全体ではないにしても、私が仕事をしている分野)の専門分野で私を助ける限り、ほとんど役に立ちません。なぜあなたはそれがあなたのプロとしてのキャリアのプログラマーとして役立つと思いますか(一部のインタビュアーを感動させるためにプリムアルゴリズムへの噴出以外)。 今日の世界適応において、開発者は、素早い頭脳、強力なコミュニケーション、オブジェクト指向、および基本的な設計スキルにより、顧客が受け入れるソフトウェアを作成できます。これらのスキルは、csプログラムでのみ使用されます。私の考えでは、Wroxによる500ページのC#本を読むと、4年間のcomp sci math blasterコースよりもはるかに使いやすいスキルセットが得られます。多くは同意しません。それでは、なぜコンピューターサイエンスの学位が重要なのでしょうか?

4
コンピュータサイエンスを完全に自習するにはどうすればよいですか。[閉まっている]
完全に独学のプログラマーであるため、典型的なCS卒業生に教えられたコンピューターサイエンスコースを自己学習することで自分自身を改善できるといいのですが。 インターネットでさまざまなリソースを見つけるのは簡単です。もちろん、MITのオープンコースウェアがあり、スタンフォード大学や他の大学のCourseraコースもあります。インターネットにはさまざまなオープンリソースが散在しており、繰り返し推奨される優れた書籍もいくつかあります。 私は多くのことを学んでいますが、私の研究は非常に断片化されており、それは本当に私を悩ませています。私は大好きですどこかで、私が従うべき道と私が自分自身に制限するべきスタックを見つけることができたので、私が研究したコンピューターサイエンスの本質的な部分を確信でき、それから私が持っていないものに体系的にアプローチします。 ウィキペディアの問題は、何が必要かを教えてくれないが、完全なリファレンスであることを主張していることです。 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

8
再帰アルゴリズムでスタックオーバーフローを回避するための方法は何ですか?
質問 再帰アルゴリズムによって引き起こされるスタックオーバーフローを解決する可能な方法は何ですか? 例 Project Eulerの問題14を解決しようとしていますが、再帰アルゴリズムを使用して試してみることにしました。ただし、プログラムはjava.lang.StackOverflowErrorで停止します。分かりました。非常に大きな数のCollat​​zシーケンスを生成しようとしたため、アルゴリズムは実際にスタックをオーバーフローさせました。 解決策 だから私は疑問に思っていました:あなたの再帰アルゴリズムが正しく書かれており、常にスタックをオーバーフローさせると仮定して、スタックオーバーフローを解決するための標準的な方法は何ですか?思いついた2つの概念は次のとおりです。 末尾再帰 繰り返し アイデア(1)と(2)は正しいですか?他のオプションはありますか? 編集 できればJava、C#、Groovy、またはScalaでコードを表示すると役立ちます。 おそらく上記のプロジェクトオイラーの問題を使用しないでください。そうすれば、他の人にとっては甘やかされることはありませんが、他のアルゴリズムを使用できます。階乗かもしれない、または似たようなもの。

8
「抽象化の層」と「間接化のレベル」の違いは何ですか?
両方の用語を同じ意味で使用できるかどうかはわかりません。たぶん、日々のプログラミングに関係のないコンピューターサイエンスの学問的な違いがありますか?または、間違っていなくても両方の用語を同じ意味で使用できますか?たぶん、両方の用語を使用するコンテキストに依存しますか? 編集:両方の用語が互換性があると思う理由は、抽象化レイヤーに関するWikipediaのエントリです。そこでは、David Wheelersが「コンピュータサイエンスのすべての問題は、別のレベルの間接参照によって解決できる」という引用を見つけることができます。

2
「作曲しない」の意味は何ですか?
多くのテキスト、特に関数型プログラミングテキストは、特定のCSの概念が「構成しない」と主張しています。例は次のとおりです。ロックは作成されません、モナドは作成されません。 私はこのフレーズの意味を正確に追跡するのに苦労してきました。構成について考えるとき、関数構成またはオブジェクト集約のいずれか(「継承よりも優先する構成」など)を考えますが、それはここで人々が使用している意味ではないようです。 上記の2つの例(つまり、ロックとモナド)のような式で使用される場合、誰かがこのフレーズの意味を説明できますか?

16
コンピューターサイエンスカレッジの学位は、雇用可能性を損なうことはありますか [閉まっている]
コンピューターサイエンス、インフォマティクスなど、大学の学位を取得していない多くの実行可能なプログラマーがいることがよくあります。 成績の悪い教育と大学の学位の重要性(特にプログラマー)についての記事をもっと読んでいるので、大学の学位は私の雇用可能性を損ないますか?(卒業したときから4年後の会計も) PS UCアーバインに行きます。学校自体は学位の重要性において重要ですか?

11
コーディングが退屈だと感じ始めたら、どうすればいいのでしょうか?[閉まっている]
私はCommodore 64で6歳のときにプログラミングを始めました。現在28歳です。コンピューターサイエンスの学士号から4つのコースを修了する必要があります。 私はこれらすべての年の後にコードを書くことに飽き始めています。理論的なコンピューター言語でコンピューターサイエンスのコースを受講し、ネットワークセキュリティの分野で10年間のCシステムコーディングを経験しましたが、コードを書いても刺激は得られません。 C、C ++、Python、またはあなたが望む言語でコードを書くことができますが、私がやっていることに興奮することはできません。私は挑戦を感じることができません。特定のアルゴリズムスキルを必要とせずに、マルチスレッドコード、HTTPS MITMプロキシ、およびWSGIアプリケーションを記述しました。 この新しいものはすべて同じで、より単純な(またはより多くの)抽象化または自動化が行われているように感じますが、すべて同じように聞こえます。何回も。計算可能な言語はすべてチューリング計算可能であるため、コーディングは、部分関数のこのサブセットの類似パターンの複製にすぎません。 私の日常の仕事では、バグを探したり、コードのベンチマークを行ったり、ライブラリX、Y、Zの問題を修正したりするのにも退屈だと感じています。 私はとても好奇心が強い人です。私はいつも何かに刺激されます。しかし、優れたコードを見たとしてもできません。私は物事がどのように機能するかについてより快適に感じています。 私のキャリアを前進させる時ですか?または、コンピューターサイエンスでもっとやりがいのあるものを手に入れたいですか?たぶん、CSの主要な学位を取得しますか? プロジェクト管理に関する最初の本「Peopleware」を読み始め、ソフトウェア開発のライフサイクルにより興味を持ち始めています。あなたは何をすることを提案しますか? おそらく、私の友人がやったように、Google、Microsoft、またはAppleに参入しようとしているのかもしれません。または、おそらくより経営的なキャリアパス。また、コミュニケーションのルールと「人格」についての良い本を見つけて、管理に入る可能性に備えようとしました。 助言がありますか? PS:私は多くの興味を持っている、私は落ち込んでいない :)私は山、トレッキング、写真撮影を愛し、私はスポーツクライマーであり、私は泳ぐことおよびスポーツ全般を愛し、時々私は実行します、実際に私はACから今日までの私の国(イタリア)の物語を読んで、旅行が大好きです(この夏、スペインの多くの場所を見て、そこに登るのに4000Kmを作りました。たった3週間で、休日ではなくマラソンです) 、24 kmのトレッキングでヘルニアがけがをした)、演劇と生活全般が大好きです。 すべてのおかげで、すべての答えを考えることで、自分の道をより明確にする機会が与えられます。 要約の目的で、最も投票された回答について一般化することができます。 まず第一に、人々は私たちの仕事をあなたの人生の支えにし、人生にとどまる唯一の理由(これは私の場合ではない)にする必要性に賛成票を投じます。本当に憂鬱な状況に。ピープルウェアが言うように、ウィーンはあなたを待っていません:) このリマインダーの後、人々は次のことを提案します。 技術的な複雑さを増す実際に取り組んでいるのは、チャレンジを増やし、それについて飽きないようにするためです。 専門分野をマネージャーになろうとする非技術分野に変更したり、仕事に関連する非技術分野で介護者を昇進させたりする。 別の種類の技術的課題の専門分野を変更します。あなたはシステムプログラマですか?便利なソフトウェアを使用して人々をより快適に見ることができるように、人間向けのアプリケーションの開発に飽きないようにしてください アカデミックパスでコンピューターサイエンスの学位をある程度向上させる 私の目的にとって、正しい答えはコンピューターサイエンスを進歩させることです。私の感覚では、プログラミングがコンピューターサイエンスを得る唯一の方法ではなく、ソフトウェアエンジニアリングの介護者とは異なるコンピューターサイエンスの他の道をより良く感じることができると思います。


4
今後のGoogleインタビュー、準備に関するアドバイスを募集中[終了]
さて、私はどこでも本を叩いています。ソフトウェアエンジニアのポジションについて、電話での最初のインタビューを予定しています。私はすべてのブログ記事を読み、インタビューのアカウント(かなり古い)をすべて読みました。Google自体も本の読書リストを提案しました。それでも、しばらく準備をした後、私はカバーするような大きな地面があるという気持ちを揺るがすことができず、私は深さで行くか幅広で行くかどうか決してわかりません。私は自分がcompsciの全領域を再学習しているのに気づきましたが、別の話に移る際に重要な詳細のほとんどを忘れてしまいました。 ですから、この質問に対する良い答えがあるかどうかはわかりませんが、インタビューの前の残りの数週間に取り組む方法についての実用的なアドバイスを探しています。私の脳の一部は詰め込みにうんざりしており、もちろん残りの部分は私の現在の職場でのいくつかの困難な問題に利用しなければなりません。

18
私が知っておくべきコンピューターサイエンス理論のビットは何ですか?[閉まっている]
コンピューターサイエンスの学位ではなく電子工学の学位を持っている人として、私をより良い現実世界のプログラマーにするために知っておくべきコンピューターサイエンスのビットは何ですか? (現実世界では、プログラマとして日々の仕事で使用し、恩恵を受けるものを意味します-たとえば、データベースの正規化を理解することは、多くの種類があるクイックソートを理解するよりも実用的であることをお勧めしますライブラリの)。

17
今日の学生にリーチするための入門コースの良い課題は何ですか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 6年前に閉鎖されました。 Javaを使用したプログラミングコースの紹介を定期的に教えています。生徒たちに興味を持たせたり、面白く見つけたりできる刺激的な課題を与えたいです。少なくとも、理にかなっていて、内部にまとまりのある割り当てが必要です(たとえば、一部の非常に悪いプログラミング演習は、最新のプログラミング構成を使用する必要があるために不自然に思えます)。 あなたのスコープのアイデアを与えるために、ここで覆われているものです。 割り当てはJavaで行う必要があり、外部ライブラリを使用して実行できますが、完全なフレームワークではなく、単純なAPIである必要があります 変数、プリミティブ、および文字列 コンソール入出力 if、for、while 算術演算子と論理演算子 線と形状の描画を備えたシンプルなグラフィック 静的メソッド 一次元配列 生徒は高度なトピックに進みません(たとえば、再帰なし、継承に重点を置きません)。したがって、私は複雑なプロジェクトを探しているわけではありません。「それらにCコンパイラを作成してもらいます。5歳のときにやったので、それが唯一の学習方法でした!」 スコープよりも高度なアイデアがある場合は、これではなく、以下にリンクされている「挑戦的な」質問に投稿してください。 代わりに、私が探しているのは、短いプログラムで達成できる興味深いアイデアです。例えば: 学生は「スターウォーズ名」ジェネレーターのコンソール版を書くことができます。これは文字列を効果的に読み取り、を使用substringしていますが、楽しいと思います。同様のバリエーションは、「Mad Libs」プログラムです。私はこれを5年前に使用しましたが、おそらくすでに「古い」ものです。 提供されたいくつかのトリガーを使用して、生徒は通常のポリゴンを描画し、興味深いスパイラル形状を作成できます。 また、ほとんどのコードが提供されている単純なアニメーションクラスを使用することも問題ではありません。また、単純なAPIでアクセスできるTwitterまたはFacebookサービスを知っているなら、知りたいと思います。 この質問は、「初心者向けの挑戦的なJavaの質問」の質問とは異なることに注意してください。私はそれ自体がやりがいのあるものを探しているのではなく、ただ面白いものです。学生が「なぜそれをプログラムしたいのか」と簡単に答えることができる何かに取り組むと思います。その後、彼らはより良く学びます。 1ガロンあたりのマイル数を計算するような単純な問題でも良い場合があります。ただし、関連性を高めるために更新する方法があれば、それでもなお良いでしょう。他の場所(本またはWebサイト)からのエクササイズがある場合は、ソースを引用してください。 今日の典型的な新入生について考えるのを助けるために、Beloit Mindsetリストをチェックしてください。

5
なぜ文字列がそんなに遅いのですか?
高校での最初のプログラミングクラス以来、文字列操作は神話上の「平均的な操作」よりも遅い、つまりコストが高いと聞いてきました。なぜそんなに遅くするのですか?(この質問は意図的に広く残されました。)

17
「コンピューターサイエンス!=ソフトウェアエンジニアリング」は、プログラミングを不十分に教える口実ですか?
ロックされています。この質問とその回答はロックされています。なぜなら、質問はトピックから外れていますが、歴史的に重要だからです。現在、新しい回答やインタラクションを受け入れていません。 みんな聞いたことがあります。最終的に誰かが言う開発スキルの低いCS卒業生についての議論があるときは、 コンピュータサイエンスはソフトウェアエンジニアリングではありません。 問題は、プログラミングとソフトウェア開発が CSコースで教えられていることです。彼らは一般的に不十分に教えられています。それが教えられているなら、なぜ最初に正しく教えてみませんか?* だから私は2つの質問に関する意見を見てみたい: CS!= SEの引数は、プログラミングスキルを適切に教えていないことの秘coまたは言い訳です。 質問1への回答に関係なく、あなたがそのような決定をする全能の立場にいた場合:CSコースでのプログラミングの適切な教育に力を入れますか? *。教育を通じて得た事例証拠に基づいて、この分野のほとんどの学者は維持するコードを書く必要がなく、コードを維持していないという疑いがあり、その結果、知識/スキルがありませんそれを効果的に教えるために。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.