- Mata kuliah CS251 dari CMU membahas studi yang ketat tentang komputasi, elemen mendasar bagi alam semesta, masyarakat, teknologi baru, dan pikiran kita dalam memahaminya.
- Penting untuk memiliki bahasa dan alat yang tepat guna mempelajari komputasi.
- Mata kuliah ini mengeksplorasi hasil-hasil dan pertanyaan-pertanyaan sentral tentang hakikat komputasi.
Formalisasi Komputasi
Modul 1: Pengantar
- Tujuan utamanya adalah memberikan penjelasan tingkat tinggi tentang apa itu ilmu komputer teoretis dan menyiapkan konteks yang tepat untuk hal-hal yang akan dibahas selanjutnya.
- Dimulai dengan cara merepresentasikan data secara formal dan mendefinisikan konsep masalah komputasi secara formal.
Modul 2: Otomata Hingga
- Tujuannya adalah memperkenalkan deterministic finite automata (DFA), model komputasi yang sederhana dan terbatas.
- DFA menarik dengan sendirinya dan memiliki aplikasi yang berguna, tetapi juga digunakan sebagai langkah pertama untuk mendefinisikan konsep algoritma secara formal.
Modul 3: Formalisasi Komputasi
- Tujuan utamanya adalah memperkenalkan definisi mesin Turing, model matematis standar untuk semua jenis perangkat komputasi.
- Studi yang ketat tentang mesin Turing memberikan wawasan bukan hanya tentang apa yang dapat dilakukan laptop, tetapi juga tentang apa yang dapat dan tidak dapat dilakukan alam semesta secara komputasional.
Modul 4: Batas-Batas Komputasi
- Membuktikan bahwa sebagian besar masalah tidak dapat diputuskan, dan menyajikan contoh-contoh konkret dari masalah yang tidak dapat diputuskan.
- Menggunakan dua teknik kunci: diagonalisasi dan reduksi.
Modul 5: Batas-Batas Penalaran Manusia
- Diperlukan upaya untuk memformalkan penalaran matematis secara matematis, dan ini mencakup formalisasi "algoritma" atau "komputasi".
- Menjawab secara efektif pertanyaan-pertanyaan penting tentang fondasi matematika dengan menggunakan bahasa ilmu komputer teoretis.
Kompleksitas Komputasi
Modul 6: Kompleksitas Waktu
- Banyak masalah sebenarnya dapat diputuskan, tetapi jika algoritma yang paling efisien pun memerlukan sangat banyak langkah komputasi, maka secara praktis masalah tersebut tidak dapat diputuskan.
- Mempelajari kompleksitas komputasi terhadap berbagai sumber daya, termasuk kompleksitas waktu, tetapi berfokus pada kompleksitas waktu.
Modul 7: Teori Graf
- Graf memainkan peran yang sangat mendasar dalam mengabstraksikan masalah komputasi yang muncul dalam ilmu komputer.
- Dengan memanfaatkan literatur yang luas tentang teori graf, kita dapat lebih memahami kompleksitas komputasi dari masalah-masalah graf.
Modul 8: P versus NP
- Memperkenalkan kelas kompleksitas NP dan membahas masalah P versus NP, masalah terbuka paling penting dalam ilmu komputer.
- Jika banyak bahasa yang alami dan telah dipelajari dengan baik yang termasuk dalam NP dapat diputuskan dalam waktu polinomial, maka aplikasi yang luar biasa akan dimungkinkan.
Modul 9: Algoritma Acak
- Keacakan adalah konsep dan alat yang esensial untuk memodelkan serta menganalisis alam.
- Algoritma acak adalah algoritma yang dapat mengakses sumber keacakan seperti generator bilangan acak, dan dapat membuat kesalahan dengan probabilitas kesalahan yang sangat kecil.
Modul 10: Kriptografi
- Bidang kriptografi mulai berkembang pesat berkat revolusi ilmu komputer.
- Studi kompleksitas komputasi sepenuhnya merevolusi kriptografi.
Sorotan Ilmu Komputer Teoretis
Modul 11: Topik Tambahan
- Menyajikan sorotan terpilih dari ilmu komputer teoretis.
Opini GN⁺
- Mata kuliah ini memberikan pemahaman mendalam tentang aspek teoretis ilmu komputer dan memberi mahasiswa kesempatan untuk mengeksplorasi hakikat komputasi serta mempelajari topik-topik penting seperti teori kompleksitas dan kriptografi.
- Secara khusus, diskusi tentang masalah terbuka seperti P versus NP memberi mahasiswa wawasan tentang penelitian yang berlangsung di garis depan ilmu komputer.
- Mata kuliah ini memainkan peran penting dalam membangun fondasi ilmu komputer dan memberikan pengetahuan esensial untuk menjadi software engineer dengan latar belakang teoretis yang kuat.
- Modul kriptografi menekankan pentingnya keamanan data dan privasi di masyarakat modern, serta meletakkan dasar untuk menjadi ahli di bidang ini.
- Mata kuliah ini sangat berharga karena membantu mahasiswa yang ingin membangun karier di bidang ilmu komputer agar memiliki landasan teoretis dan keterampilan pemecahan masalah yang esensial.
2 komentar
Ah.. jadi ingat masa-masa kuliah dulu ketika saya sampai dibuat pusing setengah mati..
Mungkin sekarang pun saya masih belum paham, tapi tetap harus coba menyimaknya dengan serius.
Opini Hacker News
Kelas ini memperkenalkan berbagai konsep dan terutama berfokus pada peningkatan kemampuan pemecahan masalah.
Ilmu komputer teoretis bisa menyenangkan, tetapi kadang juga sangat menjengkelkan.
Saya melihat sebuah postingan Reddit yang menanyakan cara menyelesaikan suatu masalah ilmu komputer teoretis, dan ternyata itu adalah upaya untuk menyontek tugas COMS 331 (Theory of Computing) di Iowa State University.
Jika ingin mempelajari ide-ide ini langsung lewat pemrograman, saya merekomendasikan buku Tom Stuart, "Understanding Computation From Simple Machines to Impossible Programs".
Versi kelas yang lebih lengkap bisa ditonton di playlist YouTube.
Ada versi lain dari kelas ini yang mencakup "metode probabilistik", dan saya tidak bisa membayangkan pembuktian tentang hambatan pada ruang solusi topologis tanpa cara berpikir pembuktian ontologis modern (bukan konstruktif).
Jika Anda tertarik pada topik ini, Anda bisa melihat situs web Boaz Barak dan buku ajarnya yang tersedia dalam bentuk PDF.
Dua ide terpenting dalam ilmu komputer teoretis:
Akan seperti apa versi kelas ini di bidang lain?
Saya ingat kelas tentang kompleksitas waktu saat kuliah. Profesor secara acak menunjuk mahasiswa dan menanyakan kompleksitas waktu dari algoritma yang rumit, lalu jika jawabannya salah, ia menunjuk mahasiswa lain.
Bagaimana kita bisa memahami komputasi sebagai sifat fundamental alam semesta? Bagaimana tumbuhan dan hewan melakukan komputasi?