Apa yang melibatkan penelitian dalam ilmu komputer teoretis?

11

Saya mencoba memahami apa yang terlibat dalam penelitian ilmu komputer teoretis. Apa yang dilakukan ilmuwan komputer teoretis?

Saya tahu waktu yang signifikan dihabiskan untuk mengajar, mengawasi mahasiswa pascasarjana, melamar pendanaan, dan tugas departemen. Mengesampingkan mereka bagaimana Anda menghabiskan waktu penelitian Anda? Apa kegiatan utama yang biasanya Anda lakukan? Saya kira Anda membaca makalah, berpikir, mengadakan pertemuan, dan menulis dokumen. Apakah ada yang lain?

mahasiswa sarjana cs
sumber
4
"Bagaimana kamu menghabiskan waktu penelitianmu?" ... menghadapi masalah yang mungkin tidak akan pernah bisa saya selesaikan :-) :-)
Marzio De Biasi
7
Itu seperti menggambarkan lukisan sebagai "campuran cat, pemasangan kanvas, lukisan, dan membersihkan instrumen Anda". Dengan kata lain, ini menggambarkan seperti apa penampilan seseorang yang menonton, tetapi tidak ada hubungannya dengan bidang apa itu :)
Suresh Venkat
1
Kegiatan lain: olahraga, hiking, kegiatan budaya, dan umumnya memiliki kehidupan. Melakukan hal-hal lain membantu pemikiran Anda (dan kesehatan Anda).
babou
7
Saya pikir pertanyaannya bukan tentang filosofi penelitian TCS atau apa yang membuat Anda seorang peneliti yang lebih baik, tetapi benar-benar pada jenis kegiatan konkret yang dilakukan peneliti TCS selama jam kerja. Selain apa yang sudah muncul dalam pertanyaan, saya akan menambahkan persiapan pembicaraan, memberikan ceramah, menghadiri konferensi, mengoreksi makalah mereka sendiri, meninjau makalah orang lain.
Daniel Marx
2
Terima kasih. Saya punya ide tentang jenis pertanyaan penelitian yang Anda pelajari. Saya ingin tahu lebih banyak tentang kegiatan sehari-hari Anda. Meneliti dalam rekayasa perangkat lunak melibatkan pengembangan program komputer, menjalankan eksperimen, mengumpulkan dan menganalisis data, ... Saya ingin tahu apa yang terlibat dalam riset dalam teori. Seperti apa hari kerja Anda yang khas?
mahasiswa sarjana cs

Jawaban:

12

Mengenai topik

Ada berbagai jenis masalah yang dapat dianggap sebagai ilmu komputer teoretis . Kata yang penting di sini adalah " teoretis " (karena kita semua memiliki beberapa gagasan tentang apa yang berhubungan dengan ilmu komputer). Memahami kata teoretis tidak begitu jelas. Untuk waktu yang lama saya menganggapnya berarti matematika, sebagai lawan misalnya untuk "peretasan". Saya belajar lebih baik dari orang-orang di bidang linguistik: teoretisbagi mereka jelas tidak berarti matematika, tetapi didasarkan pada teori yang mungkin agak informal (meskipun mungkin juga matematika), dan merupakan badan pengetahuan dan konsep yang terorganisir yang menyusun pemahaman tentang fenomena yang dapat diamati dan mudah-mudahan memungkinkan penggunaan deduktif dan prediktif. dari pengetahuan yang diperoleh. Ini juga mengurangi jumlah untuk belajar dan mengajar dengan mengurangi jumlah konsep primitif dari mana sisanya dapat disimpulkan.

Teoretis dapat dilawan dengan praktis , yaitu bagaimana pengetahuan ini digunakan untuk benar-benar menjalankan mesin komputasi, membangun sistem, dll. Saya juga dapat menentang penerapan yang merupakan penggunaan pengetahuan ini untuk mengatasi masalah di bidang ilmu pengetahuan dan manusia lainnya. kegiatan.

Tapi saya ragu ada batas yang jelas.

Ini mengatakan, ilmu komputer teoretis mencakup beragam domain, dan saya akan mencoba memberikan beberapa, sementara saya yakin saya melupakan yang lain, dan juga bahwa orang lain mungkin tidak setuju dengan organisasi ini.

  • satu domain adalah kemampuan komputasi , yang mempelajari apa yang dapat dihitung, dan bagaimana dalam pengertian yang agak abstrak: sebagian besar yang dijelaskan dalam jawaban Suresh Venkat.

  • yang lain adalah algoritmik , yang menemukan cara yang efektif untuk menghitung jawaban untuk masalah tertentu, dengan kendala spesifik. Komputasi adalah konteks teoretis untuk algoritme.

  • semantik (karena ingin nama yang lebih baik), menganalisis organisasi konseptual masalah komputasi, dan algoritma, ke dalam konsep tingkat yang lebih tinggi, sehingga membuat faktor teknik yang telah terbukti bermanfaat dan sering digunakan kembali, seperti konsep subprogram, data- struktur, modul, menyembunyikan informasi. Ini termasuk pengembangan alat matematika yang memformalkan secara memadai konsep-konsep ini untuk memungkinkan penalaran tingkat tinggi (Scott semantik misalnya). Ini juga menyentuh pada cara ini diekspresikan, sehingga pada pemisahan dan hubungan antara sintaksis dan semantik. Konsep bahasa pemrograman adalah bagian dari itu (meskipun desain bahasa mungkin merupakan aplikasi praktis dari pengetahuan itu). Ini juga dapat mencakup hubungan antara teori bukti dan teori perhitungan, dan peran modern dari sistem tipe.

  • topik lain, yang bisa berkembang lebih dari yang sejauh ini, adalah hubungan antara komputasi dan fisika fundamental. Sebagai contoh. apakah ada hubungan antara batas-batas perhitungan dan sifat-sifat dunia fisik, seperti kepadatan informasi fisik atau hukum termodinamika. Komputasi kuantum dapat meningkatkan sedikit kecakapan komputasi kita; Bisakah kita berharap lebih? Beberapa mungkin membantah bahwa ini masih TCS, meskipun ada studi TCS tentang hiperkomputasi .

Mengenai kegiatan spesifik

Saya melewatkan kegiatan yang jelas diperlukan oleh kehidupan akademik. atau kehidupan ilmiah dalam industri: mengajar, menerbitkan, mengkaji makalah, menulis permohonan hibah, mengambil tanggung jawab akademik, mengelola orang, menasihati siswa atau pembuat kebijakan. Tetapi meskipun begitu, tidak ada jawaban sederhana untuk pertanyaan Anda. Di sini saya hanya membuat sketsa beberapa aspek yang muncul di benak saya, tetapi saya yakin masih banyak yang bisa dikatakan. Dan saya tidak yakin saya menjawab Anda. Beberapa ilmuwan terbaik telah menulis buku tentang karya mereka, dan itu mungkin memberi Anda petunjuk tentang kegiatan ilmiah.

Meneliti dalam teori dapat melibatkan berbagai hal, tergantung pada keterampilan dan minat Anda yang sangat bervariasi dari ilmuwan ke ilmuwan. Agak sulit untuk membicarakannya, karena setiap orang lebih memandang aktivitas dan minatnya sendiri daripada orang lain. Kebanyakan penelitian membutuhkan pengetahuan yang luas, karena hasil yang menarik dan benar-benar orisinal sering kali berasal dari menempatkan sesuatu dalam hubungan, atau mentransfer teknik dari satu (sub) bidang ke bidang lain, atau mendapatkan pandangan teknis yang berbeda dari masalah yang sama. Jadi belajar sebanyak mungkin secara luas dan mendalam adalah penting. Ingatlah bahwa walaupun Anda memiliki waktu dan kemampuan untuk itu sebagai siswa, atau sebagai staf pengajar / ilmuwan junior, keduanya akan berkurang kemudian, karena tanggung jawab dan kehidupan secara umum. Mengajarkan apa yang tidak Anda spesialisasi mungkin merupakan cara untuk terus belajar.

Jenis pekerjaan yang dilakukan orang bisa sangat bervariasi, karena orang untungnya sangat berbeda, dengan beragam minat dan kemampuan teknis, sehingga saling melengkapi. Beberapa orang adalah pemecah masalah. Mereka melihat pertanyaan teoretis atau praktis yang diajukan oleh orang lain, atau sendiri, dan mencoba menyelesaikannya, atau mendekati solusi yang lengkap atau sebagian. Orang lain akan lebih baik dalam menyusun pengetahuan yang ada, dan menempatkan hal dalam hubungan, dan kemudian menemukan pertanyaan baru untuk diajukan. Keduanya penting.

Menemukan bukti yang lebih sederhana dari hasil teknis, atau presentasi teori yang lebih sederhana, atau menggabungkan konsep adalah penting. Ini menggeneralisasi hasil, mengurangi jumlah hal untuk dipelajari, menekankan ide-ide penting dan mungkin membawa pemahaman baru. Karena waktu belajar kita terbatas, kemajuan hanya mungkin terjadi ketika kita memadatkan pengetahuan.

Contoh sederhana adalah studi tentang keluarga abstrak dari bahasa formal. Ketika teori bahasa pertama kali dikembangkan, properti penutupan di bawah berbagai operasi terbukti berulang-ulang untuk setiap keluarga bahasa (reguler, bebas konteks, RE, ...), dengan teknik ad hoc tergantung pada keluarga. Kemudian terjadi bahwa properti penutupan ini memiliki hubungan intrinsik secara independen dari keluarga yang bersangkutan, dan mereka dipelajari demikian. Hari ini, kita hanya perlu memeriksa beberapa properti penutupan sederhana untuk keluarga tertentu, dan kita mendapatkan "gratis" satu set seluruh properti lainnya.

Poin penting lainnya adalah bahwa tidak ada perbedaan yang jelas antara karya teoretis, praktis, atau eksperimental. Teori yang baik dapat mengarah pada implementasi sistem yang dapat memekanisasi penyelesaian masalah. Dan akan dibutuhkan ahli teori yang baik untuk mengimplementasikan sistem seperti itu, dengan campuran kerja teoretis dan praktis, termasuk implementasi sistem, atau desain bahasa. Banyak contoh muncul di pikiran, seperti sistem bukti dan / atau program sintesis, bahasa khusus untuk sistem paralel sinkron, bahasa algoritmik terbatas tempat kompleksitas komputasi dapat diturunkan secara sistematis. Tidak hanya penting untuk dapat menghasilkan sistem praktis seperti itu, yang membuat hasil teoretis lebih banyak tersedia dan dapat digunakan, tetapi sering kali sangat penting bagi ahli teori untuk menggunakan secara mahir sistem ini, jika hanya untuk membongkar bagian-bagian yang sekarang kurang kreatif dalam bukunya. bekerja, atau berkontribusi pada pengembangan dan perluasan sistem ini.

Aspek lain adalah untuk dapat membandingkan pendekatan teoritis dengan eksperimen praktis. Di sini, masalahnya adalah membandingkan teknik yang berbeda untuk mencapai tujuan yang sama. Membandingkan implementasi sering tidak berarti karena efisiensinya sering bergantung pada bahasa pemrograman, atau keterampilan pemrograman implementor. Tetapi jika mereka dapat diekspresikan semua dalam kerangka teori umum, maka kadang-kadang mungkin untuk membandingkan mereka secara eksperimental dalam kerangka itu. Di sini, teori dan praktik saling mendukung, seperti yang sering mereka lakukan dalam sains. Analisis teoritis murni tidak selalu mudah dicapai. Selanjutnya, analisis eksperimental, ketika dilakukan dengan baik, dapat menunjukkan perilaku yang tidak terduga yang dapat memotivasi analisis teoritis yang lebih baik.

Dunia ini tidak sederhana atau jelas. Itu sebabnya bisa menyenangkan, dengan ruang untuk semua jenis keterampilan. Mempertanyakan pengetahuan Anda sendiri, dan menjawab pertanyaan orang lain, dengan cara apa pun.

Dua hal yang sering dilupakan: etika sains, dan menjelaskannya kepada orang-orang. Keduanya penting, dan sulit.

babou
sumber
seperti ref to theory vs experiment tetapi sebenarnya tampaknya ada pemisahan yang cukup ketat antara karya teoretis / eksperimental dalam TCS yang mendukung / menekankan yang pertama setidaknya di situs ini .... kerja empiris tidak besar dalam perbandingan & perlahan menjadi lebih diterima ....
vzn
8

Di satu sisi, menjelajahi situs ini akan memberi tahu Anda jenis pertanyaan yang dipikirkan ilmuwan komputer (pada tingkat rendah). Pada tingkat yang sangat tinggi, ilmuwan komputer teoritis mengajukan pertanyaan tentang dasar matematika perhitungan:

  • apa yang bisa kita hitung?
  • bagaimana kita bisa menghitungnya?
  • Seberapa cepat ?
  • apa yang terjadi ketika kita memiliki sumber daya yang terbatas untuk dihitung?
  • apa batasan pada apa yang bisa kita hitung?

Mulai dari pertanyaan-pertanyaan ini, sejumlah besar topik lain bermunculan, menyentuh bidang aplikasi, matematika, bagian lain dari ilmu komputer, dan sebagainya.

Suresh Venkat
sumber
Ini bagi saya pertanyaan kunci dalam "Teori A" (komputabilitas, kompleksitas, algoritma), bukan "Teori B" (logika, semantik, teori bahasa pemrograman). (Lihat cstheory.stackexchange.com/q/1521/989 tentang terminologi).
Blaisorblade
4

terpikir oleh saya bahwa akun tangan pertama mungkin membantu, tetapi yang tampaknya agak jarang di CS (sebagai lawan dari misalnya matematika, penulisan biografi / seperti memoar dll). berikut adalah dua referensi online yang menjawab pertanyaan & mungkin bermanfaat. mereka lebih ditujukan untuk kehidupan mahasiswa PhD & CS berorientasi tetapi kebanyakan akan melakukan penelitian tingkat profesor (selain mengajar, tetapi juga banyak Phds lakukan). [& dalam beberapa hal profesor dapat dilihat sebagai secara terus menerus / berulang kali menulis banyak tesis PhD "mini-" (makalah penelitian) atau dalam beberapa kasus tesis "super-" Phd (buku) di atas karier mereka.] ada juga beberapa buku yang layak tentang subjek, akan menambahkan beberapa jika Anda menunjukkan mereka akan menjadi jawaban yang dapat diterima untuk pertanyaan Anda.

  • Bagaimana melakukan Penelitian Di MIT AI Lab "oleh sejumlah besar mahasiswa pascasarjana MIT AI saat ini, mantan, dan terhormat" / David Chapman, Editor

    Dokumen ini lancang untuk menjelaskan bagaimana melakukan penelitian. Kami memberikan heuristik yang mungkin berguna dalam mengambil keterampilan khusus yang diperlukan untuk penelitian (membaca, menulis, pemrograman) dan untuk memahami dan menikmati proses itu sendiri (metodologi, pemilihan topik dan penasihat, dan faktor emosional).

  • Bagaimana Menjadi Mahasiswa PhD yang Sukses (dalam Ilmu Komputer) Mark Dredze (Universitas Johns Hopkins), Hanna M. Wallach (Universitas Massachusetts Amherst)

vzn
sumber
juga sedikit kehidupan sehari-hari peneliti dapat diperoleh dari beberapa blog ilmu komputer yang ditulis dengan "inside looks"
vzn