Saya seorang insinyur perangkat lunak yang cukup mahir, tetapi saya tidak tahu banyak teori. Saya ingin belajar lebih banyak teori. Topik khusus yang saya minati adalah: kompleksitas komputasi, bahasa formal, dan teori jenis. Tetapi saya bingung bagaimana cara mulai belajar tentang bidang-bidang ini.
Sumber daya apa yang akan Anda rekomendasikan kepada seseorang yang ingin belajar lebih banyak teori melalui belajar mandiri? Apakah ada panduan belajar-sendiri ilmu komputer teoretis untuk insinyur perangkat lunak?
soft-question
teaching
books
Henry H.
sumber
sumber
Jawaban:
Ini adalah bidang yang luas dengan beberapa area yang sangat berbeda.
Saya akan mulai dengan beberapa ide paling mendasar tentang apa itu komputer: Hopcroft dan Ullman, "Pengantar Teori Automata, Bahasa dan Komputasi."
Alasan saya merekomendasikan hal itu khususnya, adalah penekanan mereka pada bukti. Mereka membimbing Anda melalui cara berpikir yang keras. Itulah perbedaan antara program penulisan dan menjadi ilmiah.
sumber
Ada beberapa cara untuk belajar tentang teori tipe. Untuk seorang programmer yang bekerja, Jenis dan Bahasa Pemrograman oleh B. Pierce adalah awal yang baik. Yayasan Praktis untuk Bahasa Pemrograman oleh R. Harper mungkin juga baik. Jika Anda ingin sedikit latar belakang yang mudah dibaca tentang semantik operasional, saya sarankan G. Winskel, The Semantik Resmi Bahasa Pemrograman: Sebuah Pendahuluan . Dengan T. Nipkow, G. Klein, Semantik Beton, varian buku Winskel telah diformalkan untuk asisten bukti interaktif Isabelle / HOL. Saya curiga sangat sulit untuk memahami sebuah prover hanya dari buku ini (atau apa saja), Anda ingin seorang ahli terdekat untuk mengajukan pertanyaan. Jika Anda menginginkan pendekatan yang lebih matematis pada teori tipe, Anda dapat melihat JR Hindley, JP Seldin, Lambda-Calculus dan Combinators: An Introduction , atau H. Barendregt's, Lambda Calculi with Types . Meskipun saya tidak akan merekomendasikan mulai dari Barendregt.
Jika Anda menginginkan satu rekomendasi, saya akan mengatakan baca semua Pierce kecuali Bagian VI (Sistem Orde Tinggi), dan terapkan bahasa mainan yang dibahas buku ini. Anda akan berakhir dengan landasan kuat dalam teori tipe, dan mungkin programmer yang lebih baik juga.
sumber
Saya merekomendasikan Computability, Complexity, dan Languages oleh Martin Davis, Ron Sigal dan Elaine Weyuker.
sumber
Saya penggemar berat Teori dan Algoritma. Saya pernah memiliki kesempatan untuk mengunjungi Ilmu Komputer Teoritis di Institut Teknologi India, Madras (IIT-M), India. Saya telah mengetahui banyak ahli teori di IIT-M. Ketika saya pergi ke sana, saya tidak tahu apa itu Teori, tetapi hari ini saya benar-benar menyukainya.
Terima kasih kepada @Kate F untuk penunjuknya, ya Hopcroft dan Ullman adalah tempat yang bagus untuk memulai.
Namun di sini adalah bagaimana saya memulai,
Baca Pengantar Algoritma oleh Cormen. <\ Br> Ini adalah tempat yang bagus untuk memulai. Ketika Anda belajar, cobalah untuk memahami setiap bukti sejauh mungkin. Jika Anda memahami buktinya dengan baik, coba kode logika yang sama dalam bahasa apa pun yang Anda pilih. (Dibutuhkan sedikit lebih lama tetapi patut dicoba)
Ikuti konferensi teratas dalam Teori seperti
FOCS
SODA
STOC
EC (Perdagangan Elektronik) - Teori Permainan Algoritma
COLT (Konferensi tentang Teori Belajar) - Teori Belajar
CRYPTO - Kriptografi
SOCG (Simposium tentang Geometri Komputasi) - Geometri Komputasi
CCC (Konferensi mengenai Computational Complexity) - Teori Kompleksitas
Bahkan jika Anda tidak mengerti banyak cobalah untuk membaca dan BERPIKIR sebanyak mungkin. Anda harus melakukan bukti sebanyak mungkin ..
sumber