Mengapa pergi ke ilmu komputer teoritis / penelitian?


36

Saat ini saya mulai di universitas [ilmu komputer] dan di sana kami memiliki banyak peluang untuk memulai dengan meneliti. Sebelum menemukan situs web ini, saya tidak punya niat untuk pergi dengan cara ini [Saya ingin bekerja dengan AI, mungkin game dev.], Tetapi sekarang saya dapat [atau saya perlu] untuk membuat pilihan.

Bisakah Anda meyakinkan saya untuk bergabung di "dunia" ini? "Segmen" apa yang bisa saya ikuti? Adakah sesuatu tentang topik apa yang digunakan oleh ilmuwan atau peneliti komputer?


18
Kami merasa terhormat bahwa situs tersebut telah menginspirasi Anda untuk berpikir tentang teori! Dan Anda telah datang ke tempat yang tepat, jika Anda ingin tahu apa yang bekerja pada ilmuwan komputer teoretis ... teruslah membaca dan Anda akan mengetahuinya!
Ryan Williams

6
Ini haruslah wiki komunitas.
Dave Clarke

Baru saja bergabung hari ini dan memiliki pertanyaan yang sama ... Saya melakukan teknik saya di bidang teknik Elektronik tetapi ketika di perguruan tinggi mulai merasakan kecenderungan terhadap CS ... Tidak pernah memiliki pengantar formal untuk Teori, tetapi sekarang saya senang saya menemukan situs ini ... Dan @ Júlio Souza terima kasih telah mengajukan pertanyaan ini. Saya akan memonitor ini mulai hari ini :)
Alan Turing

@supercooldave mengubahnya menjadi komunitas wiki.
JulioC

Epilog: JulioC menjadi pengembang perangkat lunak.
domotorp

Jawaban:


32

Saya dapat mengaitkan alasan saya sebagai sarjana yang mendaftar ke program pascasarjana TCS Musim Dingin yang akan datang ini (begitu sedikit waktu tersisa!).

  • Ada keindahannya. Ini bukan sesuatu yang bisa saya jelaskan (dan telah menyaksikan matematikawan lain gagal menjelaskan). Itu seperti "kuning." Jika Anda belum melihatnya, saya tidak yakin saya bisa berkomunikasi dengan Anda apa itu. Tetapi karena Anda sudah tertarik pada teori, saya kira mungkin Anda mengalaminya.
  • Ada universalitas. Universalitas di luar Tesis Gereja-Turing . TCS pada intinya menyelidiki fenomena tingkat tinggi dan rendah dalam informasi - itu adalah "fisika" informasi. Dan karena informasi secara kualitatif bersifat atom , teori informasi memang memiliki hal untuk dikatakan tentang fisika (profesor QM saya secara khusus mengatakan kepada saya bahwa ia menyukai teori informasi). Semua ini dikatakan, itu di suatu tempat antara Matematika Murni dan Teknik. Ini memiliki kemampuan dan fleksibilitas untuk berkontribusi secara langsung pada keduanya, dan untuk berkontribusi secara langsung oleh keduanya. Tetap saja, ia berjuang di perbatasannya sendiri.
  • Ada ruang lingkupnya. Ini diisyaratkan pada peluru sebelumnya. Informatika menemukan jalan ke banyak aplikasi yang berbeda - hal semua orang dari DHD untuk startups tertarik Anda tidak akan menemukan diri Anda. Sebagai kelaparan untuk pendanaan seperti Matematika Murni. (Anda akan selalu menemukan diri Anda kelaparan untuk pendanaan.)
  • Itu tantangannya. Lihatlah daftar masalah terbuka dalam Ilmu Komputer Teoretis (dan kejarlah pemahaman mereka sampai akhir penyelidikan). Mereka sangat sulit - di sini adalah beberapa alasan mengapa . Kami benar-benar tidak mengerti TCS - sebagian besar bukti kami bermuara pada pemasangan bukti. Masih banyak pekerjaan yang harus dilakukan!

19

Memang apakah Anda memutuskan untuk melakukan penelitian dalam ilmu komputer teoritis adalah masalah pilihan. Tetapi bahkan meneliti pertanyaan-pertanyaan di situs ini (seperti yang mungkin telah Anda lakukan) mudah-mudahan memberi Anda rasa luasnya, ruang lingkup keindahan lapangan. Saya bahkan tidak tahu harus mulai dari mana dengan mengarahkan Anda ke sumber yang bisa Anda baca untuk menghargai jenis pekerjaan yang dilakukan para ahli teori, tetapi ada satu pertanyaan di situs ini yang menurut saya mungkin menarik bagi Anda.

Pertanyaannya adalah:

Paul Erdos berbicara tentang "Buku" di mana Tuhan menyimpan bukti paling elegan dari setiap teorema matematika. Ini bahkan mengilhami buku (yang saya percaya sekarang dalam edisi ke-4): Bukti dari Buku.

Jika Tuhan memiliki buku yang serupa untuk algoritma, menurut Anda algoritma apa yang akan dijadikan kandidat?

Saat ini ada 64 jawaban untuk pertanyaan ini, yang mencakup algoritma untuk masalah kecil, masalah besar, teka-teki, dan matematika yang mendalam. Saya sangat percaya bahwa jika semua yang Anda lakukan adalah membaca daftar ini dan membaca lebih lanjut tentang salah satu algoritma yang menarik perhatian Anda, Anda akan belajar banyak tentang apa yang dilakukan para ilmuwan komputer teoretis, dan mengapa kami melakukannya.

Semoga berhasil !


16

Alasan banyak dari kita pergi ke penelitian adalah karena kita menemukan mendorong batas-batas apa yang dikenal baik secara intelektual menyenangkan dan menyenangkan. Melakukan penelitian juga memberi kita kebebasan yang hampir tak tertandingi untuk mengerjakan masalah yang kita anggap bermakna dan menarik, dan itu membuat kita terus-menerus tertantang (yang kita nikmati).

TCS (berlawanan dengan bidang lain) adalah studi matematika ilmu komputer. Anda dapat bekerja pada aspek teori dari berbagai bidang mulai dari sistem terdistribusi hingga pembelajaran mesin. Pilihan di antara TCS dan bidang lainnya dalam ilmu komputer tergantung pada di mana selera dan kemampuan Anda berada. Jika minat dan kemampuan alami Anda lebih terletak pada pemrograman atau desain sistem daripada dalam analisis matematis, maka mungkin Anda tidak boleh masuk ke TCS. Di sisi lain, jika keterampilan dan minat Anda lebih terletak pada aspek matematika, maka Anda harus mempertimbangkan TCS.

Juga, Anda tidak selalu harus memilih satu area daripada yang lain. Banyak orang mengerjakan masalah baik dari sisi teoretis maupun praktis. Ini umum, misalnya, dalam pembelajaran mesin, di mana kami pertama kali merancang dan menganalisis algoritma (sering teori) dan kemudian mengujinya di dunia nyata (desain eksperimental, aplikasi, dll.).

Cara yang baik untuk mengetahui apa yang ingin Anda lakukan adalah mengambil kelas di berbagai bidang, dan mungkin mencoba industri dan penelitian di musim panas Anda. Pada akhir studi Anda, Anda mungkin akan memiliki ide bagus tentang apa yang ingin Anda lakukan.


Saya sangat suka matematika, tapi saya suka pemrograman. Mungkin saya bisa menemukan cara untuk bekerja dengan kedua "sisi" pada saat yang sama, seperti pembelajaran mesin [yang ada di area AI, kan?]. Pada tahun berikutnya, saya akan mendaftar ke beberapa kelas di universitas saya seperti AI dan Analisis Algoritma yang dapat membantu saya.
JulioC

Pembelajaran mesin (setidaknya dari sudut pandang saya) bukan merupakan sub-area AI, meskipun ada beberapa tumpang tindih. Secara kasar, AI berfokus pada pemecahan masalah yang biasanya dipecahkan manusia. Pembelajaran mesin berfokus pada pengembangan algoritma dan sistem yang mengubah perilaku saat mereka melihat data. Jadi jelas ada tumpang tindih antara kedua bidang, tetapi keduanya jauh dari sama. Pembelajaran mesin jelas memberi orang kesempatan untuk melakukan teori dan pemrograman, tetapi saya yakin ini bukan satu-satunya subbidang CS yang memang benar.
Lev Reyzin

11

Memprogram teori bahasa itu menyenangkan bagi tua dan muda. Ini menerapkan logika ke dunia nyata. Bergabunglah dengan parade !!

Lebih serius, bagi saya, teori bahasa pemrograman menarik karena alasan berikut:

  • dampak yang dirasakan pada dunia nyata: sistem tipe yang luas bekerja di Haskell dan bahasa fungsional lainnya, yang berasal dari ide yang murni logis (Sistem F), secara signifikan memengaruhi perkembangan bahasa seperti Jawa (generiknya yang mengerikan, penutupnya) dan Scala (modern) hari di mana-teori-bertemu bermain praktek).

  • Keindahan: banyak alat yang digunakan dalam teori bahasa pemrograman didasarkan pada logika. Sebagian besar berasal dari korespondensi Curry-Howard, yang menunjukkan hubungan dekat antara aturan bukti logis dan aturan mengetik untuk bahasa pemrograman, dan antara cut-eliminasi dalam logika dan evaluasi dalam bahasa pemrograman. Dua contoh indah baru-baru ini dari aplikasi logika dalam penelitian bahasa pemrograman adalah pekerjaan yang luas pada logika pemisahan dalam verifikasi dan penerapan ide-ide bukti yang berfokus pada pemahaman konsep bahasa pemrograman seperti urutan evaluasi dan pencocokan pola .

  • kesenangan: Anda dapat melakukan pemrograman dan teori pada saat yang sama, terutama jika Anda memformalkan dan memverifikasi teori Anda menggunakan asisten bukti seperti Coq.

  • dan masih banyak lagi.


11

Salah satu alasan utama mengapa saya menemukan teori komputasi (cabang "saya" tentang ilmu komputer teoretis) yang menarik dan layak dipelajari adalah yang berikut: teori ini memberi kita cara untuk menyelidiki beberapa pertanyaan filosofis yang mendalam (dan kadang membingungkan).

Salah satu pendiri teori komputasi, Alan Turing, mencoba menjabarkan makna "menghitung fungsi" bagi manusia yang dilengkapi selembar kertas, dengan memberikan deskripsi matematis tentang proses tersebut. Saya bukan satu-satunya yang berpikir dia sangat sukses, dan mesin Turing terbukti menjadi model yang akurat dari banyak proses komputasi lainnya.

Sekarang setelah kita memiliki kelas objek matematika yang menggambarkan perhitungan, kita dapat benar-benar membuktikan teorema tentangnya, dengan demikian berusaha mengungkap apa yang dapat dihitung, dan bagaimana hal itu dapat dihitung; segera terbukti bahwa banyak fungsi yang benar-benar sah tidak dapat dihitung sama sekali, dan bahwa mereka dapat diklasifikasikan berdasarkan tingkat ketidakterkomputasi (beberapa fungsi hanya "lebih tidak dapat dihitung" daripada yang lain).

Beberapa orang lain, yang pertama biasanya diidentifikasi dengan Juris Hartmanis dan Richard E. Stearns, mencoba menggambarkan secara matematis apa artinya suatu fungsi (resp., Masalah) menjadi sulit atau mudah untuk dihitung (resp., Untuk dipecahkan). Ada beberapa langkah kompleksitas yang menurutnya kekerasan dapat digambarkan; yang paling umum adalah berapa banyak waktu yang kita butuhkan untuk menyelesaikannya. Alan Cobham dan Jack Edmonds cukup berhasil mengidentifikasi gagasan yang masuk akal tentang "komputasi efisien".

Dalam kerangka kompleksitas komputasi, kami sekarang dapat membuktikan beberapa hasil yang konsisten dengan gagasan intuitif kami tentang komputasi. Contoh favorit saya adalah teorema hierarki waktu: jika kita diberi lebih banyak waktu untuk menghitung, kita dapat memecahkan masalah yang lebih sulit.

Masalah utama yang terbuka dari teori kompleksitas, P vs NP , hanyalah formalisasi dari pertanyaan filosofis penting lainnya: apakah benar-benar lebih sulit untuk menyelesaikan masalah daripada memeriksa apakah solusi yang diduga memang benar? Saya percaya pertanyaan ini layak diajukan, dan dijawab, terlepas dari signifikansi praktisnya.


+1: disukai :) ps: seseorang menyatakan pendapat yang serupa di blog Scott .
Kaveh

6

Kami tidak dapat "meyakinkan" Anda, karena ilmu komputer tidak secara matematis lebih baik daripada AI atau bidang lainnya. Jadi, kita tidak bisa melakukan bukti dominasinya! IMO, Ini lebih merupakan masalah selera daripada hal lainnya.


1
Saya setuju dengan Anda, tetapi mungkin dia ingin tahu mengapa "Anda" (atau semua orang di sini) memilih bidang ini.
MS Dousti

@ Júlio Souza: Dalam judulnya, judulnya harus "teoretis", bukan "teoretis".
MS Dousti

Saya tidak ingin tahu apakah itu lebih baik, tetapi saya ingin tahu mengapa Anda memilih bidang ini, seperti kata Sadeq.
JulioC

6

Sulit untuk menjawab pertanyaan itu dengan pasti, tetapi ada beberapa hal yang perlu diingat di sini.

Jika Anda berkarier sebagai ilmuwan komputer, pekerjaan Anda mungkin tidak hanya melibatkan pemrosesan dan penataan data dengan cara yang membuatnya berguna dan efisien untuk digunakan, tetapi juga memikirkan bagaimana dan mengapa apa yang Anda lakukan bekerja, juga di batas mana yang beroperasi (jika bukan karena alasan lain selain memahaminya cukup untuk mengimplementasikannya). Ini khususnya kasus untuk AI / NLP / IR, yang SANGAT intensif penelitian, bahkan jika Anda tidak di akademia. Bahkan, masuk ke AI cukup banyak jaminan bahwa Anda akan menangani banyak masalah "teoretis", dan pada kenyataannya mungkin sulit untuk menemukan pekerjaan tanpa latar belakang itu. Jadi itu mungkin salah satu alasan kuat Anda akan mempertimbangkannya.

Tidak hanya itu, tetapi mungkin akan sangat sulit untuk menghabiskan sebagian besar hidup Anda di bidang CS mana pun, di mana Anda harus mempertahankan kontak intim dengan proses yang begitu halus dan berubah-ubah (dan belum lagi sulit), sementara secara bersamaan tidak mempertahankan menarik apa pun di bahkan dasar-dasar mengapa semuanya bekerja. Dengan kata lain, saya kira Anda bisa merekatkan perpustakaan selama sisa hidup Anda, tetapi jika itu tidak terdengar seperti hal Anda, Anda harus memiliki setidaknya seorang kenalan yang lewat dengan dasar-dasar masalah yang Anda hadapi.

Sementara berpartisipasi aktif dalam penelitian TCS adalah pertanyaan yang mungkin hanya Anda yang bisa menjawab, titik awal yang baik (IMO) adalah memulai dengan pandangan tentang masalah yang Anda tertarik untuk melihat, dan pergi dari sana. Anda bahkan mungkin tidak memiliki informasi yang cukup untuk menjawab pertanyaan itu, jadi cara yang lebih baik untuk melanjutkan mungkin hanya dengan melihat ke mana minat Anda membawa Anda.


Terima kasih atas jawabannya. Saya sepenuhnya setuju dengan POV Anda, mengerjakan sesuatu hanya dengan melakukannya, tanpa mengetahui mengapa itu bekerja, bagaimana ia bekerja dan jika saya bisa membuatnya lebih baik bukanlah sesuatu yang saya inginkan. Saya pikir saya dapat mencoba untuk menjaga rencana saya dengan AI [atau sesuatu yang lain, yang lebih mirip "penelitian pratik"], tetapi saya akan terus berusaha untuk belajar tentang topik lain tentang TCS.
JulioC

6

Yang paling menggelitik saya adalah kemampuan untuk menerapkan teori ilmu komputer ke disiplin ilmu lain, terutama biologi dan biologi sel. Jika gagasan ini juga menggelitik Anda, saya sarankan Anda melihat yang berikut ini: esai oleh Jeannette Wing tentang pentingnya Berpikir Komputasi ; dan laporan NSF tentang penerapan Lensa Algoritma untuk disiplin ilmu lain.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.