理論的なコンピューターサイエンス/研究に進む理由


36

現在、私は大学[コンピューターサイエンス]に進学しており、そこで研究を始める機会がたくさんあります。このウェブサイトを見つける前に、私はこの方法で進むつもりはありませんでした[おそらくAIで働きたいと思っていました。おそらくゲーム開発者です。]

この「世界」に参加するよう説得してもらえますか?フォローできる「セグメント」は何ですか?コンピューター科学者や研究者が取り組んでいるトピックの種類について何かありますか?


18
このサイトがすでに理論について考えるきっかけになったことを光栄に思います!そして、理論的なコンピューター科学者が何に取り組んでいるか知りたいなら、あなたは正しい場所に来ました...ただ読み続ければ、あなたは見つけます!
ライアンウィリアムズ

6
これはコミュニティwikiである必要があります。
デイブクラーク

今日参加したばかりで、同じ質問がありました...私は電子工学でエンジニアリングをしましたが、大学でCSに傾倒し始めました... @JúlioSouzaこの質問をしてくれてありがとう。今日からこれを監視します:)
アランチューリング

@supercooldaveはコミュニティwikiに変更しました。
JulioC

エピローグ:JulioCはソフトウェア開発者になりました。
domotorp

回答:


32

来たる冬のTCS大学院プログラムに応募する学部生としての私の理由を伝えることができます(少し時間があります!)。

  • 美しさがあります。これは私が説明できるものではありません(そして他の数学者が説明し損ねているのを目撃しました)。「黄色」のようなものです。あなたがそれを見なかったら、私はそれが何であるかをあなたに伝えることができるかどうか確信がありません。しかし、あなたは理論に興味を持つようになったので、おそらくあなたはそれを経験するでしょう。
  • 普遍性があります。教会チューリングのテーゼを超えた普遍。TCSはその中核であり、情報の高レベルおよび低レベルの現象を調査します。これは、情報の「物理」です。また、情報は質的に原子的であるため、情報理論には物理学について語るべきことがあります(私のQM教授は、彼が情報理論を愛していると具体的に言っています)。このすべてが言われている、それは純粋な数学と工学の間のどこかにあります。両方に直接貢献する能力と柔軟性があり、両方に直接貢献することができます。それでも、それは独自のフロンティアで戦います。
  • スコープがあります。これは前の箇条書きで示唆されました。情報は、さまざまなアプリケーションにその方法を見つけた-へDHDからスタッフ全員スタートアップがに興味があるあなたは、自分自身を見つけることができません。として純粋数学のような資金調達のために飢えて。(あなたは、常に資金に飢えていることに常に気づくでしょう。)
  • 挑戦があります。Theoretical Computer Scienceの未解決の問題のリストを見てください(そして、調査の最後までそれらの理解を追求してください)。彼らは非常に困難です-ここにあるいくつか の理由が 理由。私たちはTCSを本当に理解していません-私たちの証明のほとんどは、証拠の増加に要約されています。やるべきことはまだたくさんあります!

19

実際、理論的なコンピューターサイエンスの研究に進むかどうかは選択の問題です。しかし、このサイトの質問を(おそらくあなたがしたように)熟読することで、あなたに幅の感覚を与え、分野の美しさの範囲を広げることを願っています。理論家が行う仕事の種類を評価するために読むことができるソースをどこから指し示すのか、私も知りませんが、このサイトには、あなたが興味を持ちそうな質問が1つあります。

質問は:

ポール・エルドスは、神がそれぞれの数学的定理の最もエレガントな証拠を保持している「本」について話しました。これは、本(現在は第4版になっていると思います)をインスパイアしました:本からの証拠。

もし神がアルゴリズムのための同様の本を持っていたなら、どのアルゴリズムが候補になると思いますか?

現在、この問題に対する64の回答があり、小さな問題、大きな問題、パズル、深層数学のアルゴリズムを網羅しています。このリストを読んで目を引くアルゴリズムについて詳しく読んでいただければ、理論上のコンピューター科学者が何をするのか、なぜそれを行うのかについて多くを学ぶことができると強く信じています。

がんばろう !


16

私たちの多くが研究に参加した理由は、知的なやりがいのある楽しいことの両方の知られていることの境界を押し広げることを見つけるからです。また、研究を行うことで、有意義で興味深いと感じる問題に取り組むための比類のない自由が得られ、常に挑戦し続けています(楽しんでいます)。

TCS(他の分野とは対照的に)は、コンピューターサイエンスの数学的研究です。分散システムから機械学習まで、さまざまな分野の理論的な側面に取り組むことができます。TCSやコンピューターサイエンスの他の分野からの選択は、あなたの好みや能力がどこにあるかによって異なります。あなたの自然な興味と能力が数学的分析よりもプログラミングやシステム設計にあるのであれば、おそらくTCSに行くべきではありません。一方、あなたのスキルと興味が数学的側面にある場合は、TCSを検討する必要があります。

また、他のすべてのエリアよりも常に1つのエリアを選択する必要はありません。多くの人々は、理論的側面と実践的側面の両方から問題に取り組んでいます。これは、たとえば機械学習では一般的であり、最初にアルゴリズム(多くの場合理論)を設計および分析してから、現実世界(実験設計、アプリケーションなど)でテストします。

あなたが何をしたいのかを理解する良い方法は、多くの異なる分野で授業を受け、おそらくあなたの夏に産業と研究の両方を試すことです。あなたの研究の終わりまでに、あなたはおそらくあなたがやりたいことの良いアイデアを持っているでしょう。


私は数学が大好きですが、プログラミングが大好きです。機械学習のように、両方の「サイド」を同時に操作する方法を見つけることができたかもしれません(AI領域にありますよね?)。翌年、AIやアルゴリズム分析など、私を助けることができる大学のいくつかのクラスに応募します。
JulioC

機械学習(少なくとも私の観点から)は、多少の重複はありますが、AIのサブエリアではありません。大まかに言えば、AIは人間が通常解決する問題の解決に焦点を合わせています。機械学習は、データを見たときに動作を変更するアルゴリズムとシステムの開発に焦点を当てています。したがって、2つのフィールドの間には明らかに重複がありますが、それらは同じではありません。機械学習は明らかに人々に理論とプログラミングの両方を行う機会を与えますが、それがCSの唯一のサブフィールドではないことは確かです。
レフReyzin

11

プログラミング言語の理論は、老いも若きも楽しいです。現実世界にロジックを適用しています。パレードに参加してください!!

もっと深刻なことに、私にとって、プログラミング言語の理論は次の理由で興味深いものです。

  • 現実世界への影響の認識:純粋に論理的なアイデア(System F)に由来するHaskellやその他の関数型言語での広範な型システムの動作は、Java(その恐ろしいジェネリック、クロージャ)やScala(現代の理論と出会う日遊び場)。

  • 美しさ:プログラミング言語の理論で使用されるツールの多くは、論理に基づいています。その多くは、プログラミング言語の論理的証明規則と型付け規則の間、および論理のカット除去とプログラミング言語の評価の間の密接な関係を示すカリー-ハワード通信に由来しています。プログラミング言語の研究におけるロジックのアプリケーションの最近の2つの美しい例は、検証における分離ロジックの広範な研究と、評価順序やパターンマッチングなどのプログラミング言語の概念の理解に焦点を当てた証明のアイデアのアプリケーションです。

  • 楽しい:特にCoqなどの証明アシスタントを使用して理論を定式化および検証する場合は、プログラミングと理論を同時に行うことができます。

  • などなど。


11

計算理論(理論計算機科学の「私の」分野)が魅力的で勉強する価値があると思う主な理由の1つは、次のようなものです。

計算理論の創始者の一人であるアラン・チューリングは、プロセスを数学的に説明することにより、紙を装備した人間の「関数の計算」の意味を突き止めようとしました。彼が非常に成功したと思うのは私だけではありません。チューリングマシンは、他の多くのコンピューティングプロセスの正確なモデルであることが証明されました。

計算を記述する数学的オブジェクトのクラスを所有しているので、実際にそれらについての定理を証明することができます。したがって、計算できるものとその計算方法を明らかにしようとします。すぐに判明したのは、完全に正当な関数の多くはまったく計算できず、計算不可能性の程度に応じて分類できることです(一部の関数は他の関数よりも「計算不可能」です)。

ジュリス・ハートマニスとリチャード・E・スターンズに最初に特定された他の人たちは、関数(または問題)を計算するのが難しいまたは簡単である(または解決する)ことの意味を数学的に説明しようとしました。問題の難しさを説明できる複雑さの尺度がいくつかあります。最も一般的なのは、それらを解決するのにどれだけ時間が必要かということです。Alan CobhamとJack Edmondsは、「効率的な計算」の合理的な概念を特定することに非常に成功しました。

計算の複雑さのフレームワーク内で、直感的な計算の概念と一致する結果を証明できるようになりました。私のお気に入りの例は、時間階層定理です。計算する時間が長くなれば、より難しい問題を解決できます。

複雑性理論の中心的な未解決の問題であるPNPは、哲学的に重要な別の問題の形式化にすぎません。この質問は、その実際的な意義とは無関係に、尋ねたり答えたりする価値があると思います。


+1:気に入った:) ps:Scottのブログで誰かが同様の意見を述べました。
カベ

6

コンピュータサイエンスはAIや他の分野よりも数学的に優れていないため、「納得させる」ことはできません。したがって、私たちはその支配の証拠を実行することはできません!IMO、それは何よりも味の問題です。


1
私はあなたに同意しますが、おそらく彼は「あなた」(またはここの他の全員)がこの分野を選んだ理由を知りたがっています。
MS Dousti

@JúlioSouza:タイトルでは、「理論的」ではなく「理論的」である必要があります。
MS Dousti

それが良いかどうかは知りたくありませんが、Sadeqが言ったように、なぜこの分野を選んだのか知りたいです。
JulioC

6

その質問に確実に答えることは難しいですが、ここで心に留めておくべきことがいくつかあります。

コンピューター科学者としてのキャリアを積む場合、あなたの仕事は、データを有用かつ効率的に使用できるようにデータを処理および構造化するだけでなく、あなたがしていることをどのように、なぜ行うかを考えることも含むでしょうどの境界が動作するか(それを実装するのに十分に理解する以外の理由がない場合)。これは、特にAI / NLP / IRの場合です。アカデミアにいなくても、非常に研究集約的です。実際、AIを使用することで、「理論的な」問題に対処することがかなり保証されます。実際、そのような背景のない仕事を見つけるのは難しいかもしれません。だから、それはあなたがそれを考慮するだろう1つの説得力のある理由かもしれません。

それが、同時に維持しながら、おそらく、あなたがそのような繊細で気まぐれ(としないように困難な言及)プロセスと、このような密接な接触を維持しなければならない任意のCSフィールド、最もあなたの人生のを費やすことは非常に難しいだろうだけでなく、なし物事が機能する理由の基礎にさえ興味があります。言い換えれば、あなたはあなたの人生の残りの間、ライブラリを一緒に接着することができると思います、それがあなたのことのように聞こえないなら、あなたは少なくともあなたが扱う問題の基本に十分な知識を持っている必要があります。

TCS研究に積極的に参加することはおそらくあなただけが答えることができる質問ですが、良い出発点(IMO)は、あなたが見たい問題の観点から始めてそこから行くことです。また、あなたはその質問に答えるのに十分な情報さえ持っていないかもしれないので、進むためのより良い方法はあなたの興味があなたをどこに連れて行くかを見るだけかもしれません。


答えてくれてありがとう。私はあなたのPOVに完全に同意します。それがなぜ機能するのか、どのように機能するのか、そして私がそれを改善できるかどうかは私が望んでいるものではありません。AI(または「実用的な研究」のようなもの)で計画を維持しようとすることはできると思いますが、TCSに関する他のトピックについては引き続き学習していきます。
JulioC

6

私が最も興味を持っているのは、コンピューターサイエンスの理論を他の分野、特に生物学と細胞生物学に適用できることです。この概念の陰謀場合も、私はあなたが以下を見てみてお勧め:の重要性についてジャネット・ウィングによるエッセイ計算思考アルゴリズムレンズを他の科学分野に適用することに関するNSFレポート。

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