Saatnya mempelajari stuktur data dan algoritma dengan serius!
Tidak ada kata terlambat dalam menuntut ilmu.
Memiliki dasar yang kuat dalam pengetahuan dan teknik algoritmik adalah salah satu karakteristik yang memisahkan programmer yang benar-benar terampil dari para pemula.
Memang betul dengan teknologi komputasi modern di jaman now ini, kamu dapat menyelesaikan beberapa tugas tanpa mengetahui banyak tentang algoritma.
Tetapi dengan latar belakang yang baik dalam algoritma, kamu akan dapat melakukan banyak hal, dan lebih banyak lagi.
Ada banyak sekali buku tentang struktur data dan algoritma, bagaimana cara kamu memilih buku yang cocok untuk kamu belajar? karena setiap buku memiliki tujuan, kriteria dan persyaratannya masing-masing. Nah! supaya kamu gak salah pilih buku untuk belajar dan supaya belajarnya menjadi lebih mudah. Simak ulasan singkat berikut ini.
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein – Introduction to Algorithms, The MIT Press; 3rd edition (July 31, 2009).
Prasyarat untuk membaca buku ini:
- Kamu harus memiliki pengalaman pemrograman. Khususnya, kamu harus memahami prosedur rekursif dan struktur data sederhana seperti array dan linked lists.
- Kamu harus memiliki kemampuan untuk melakukan atau mempelajari sesuatu dengan baik dan mudah dalam hal mathematical proofs, dan khususnya proofs by mathematical induction.
- Beberapa bagian dari buku ini mengandalkan pengetahuan tentang kalkulus dasar. Di luar itu, bagian I dan VIII buku ini mengajarkan kamu semua teknik matematika yang kamu butuhkan yang digunakan dalam setiap bab pada buku tersebut.
MIT Open Course ware / kursus pendamping:
- Prasyarat: Pemahaman yang kuat tentang pemrograman dan latar belakang yang kuat dalam matematika diskrit, termasuk probabilitas, merupakan prasyarat yang diperlukan untuk kursus ini
- Homepage: https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-introduction-to-algorithms-sma-5503-fall-2005/index.htm
- Video lectures: https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-introduction-to-algorithms-sma-5503-fall-2005/video-lectures/
Halaman resmi buku:
Rangkuman:
- Setiap bab dibuku ini bersifat self-contained artinya kamu bisa melompat dari satu bab ke bab lain tanpa perlu membaca setiap bab secara berurutan. Kamu bisa fokus di topik yang menurut kamu penting
- Banyak bab dari buku ini menyentuh unsur-unsur matematika diskrit dan kalkulus
- Buku ini sudah ditulis dan dikembangkan selama lebih dari 20 tahun, dari edisi pertama sampai edisi terakhir
- Bacalah bagian preface agar kamu tau lebih banyak tentang bagaimana cara membaca dan menggunakan buku tersebut
Kesimpulan:
- Jika kamu sama sekali buta dengan matematika dasar atau aljabar, maka buku ini tidak cocok untuk kamu, sebaiknya kamu coba pelajari pre-algebra dan algebra
- Jika kamu punya sedikit pengetahuan matematika dasar atau aljabar, kamu bisa memulai membaca buku ini, ketika ada simbol matematika yang kamu lupa, coba baca bab tujuh
- Untuk topik-topik yang menggunakan kalkulus, matematika diskrit atau teori probabilitas kamu bisa lewatkan dulu atau kamu bisa sekalian belajar juga, takes your time
- Belajar Algoritma itu relatif lama, tidak bisa buru-buru, it can take years. Jadi bersabarlah dalam proses belajarnya, temukan kesenangan didalamnya
Robert Sedgewick, Kevin Wayne – Algorithms, Addison-Wesley Professional; 4th edition (April 3, 2011).
Prasyarat untuk membaca buku ini:
- Basic programming skill
- Familiar dengan sistem komputer
- Sedikit persiapan khusus dalam matematika diperlukan untuk sebagian besar buku, tentunya kalau kamu sudah paham matematika pasti akan lebih membantu dalam memahami analisis algoritma pada buku ini
- Basic Algebra
Rangkuman:
- Buku ini dirancang secara praktis yaitu menyediakan kode yang siap dieksekusi daripada pseudo-code. Ditulis menggunakan kode Java
- Gaya pemograman yang digunakan sudah modern, object-oriented. Algoritma dan struktur data sudah ter-enkapsulasi
- Banyak contoh aplikasi dunia nyata mulai dari fisika sampai biologi, juga data kompresi dan pencarian
- Performa dari algoritma digambarkan menggunakan model matematika
- Buku ini membahas tipe data abstrak, algoritma pengurutan, algoritma pencarian, pemrosesan graph, dan pemrosesan string
- Buku ini sudah ditulis dan dikembangkan selama hampir 40 tahun dari edisi pertama sampai dengan yang terakhir
- Bacalah bagian preface agar kamu tau lebih banyak tentang bagaimana cara membaca dan menggunakan buku tersebut
Halaman resmi buku:
Kesimpulan:
- Buku textbook ini cocok untuk mahasiswa/i sebagai referensi belajar struktur data dan algoritma selama 1 semester atau 6 bulan. Dan juga cocok untuk umum atau professional
- Untuk kamu yang belum pernah ngoding di Java, di Bab 1 kamu akan dikenalkan dengan basic programming model menggunakan Java, yang menurut saya mudah diikuti. Bahkan sampai membahas implementasi yang penting dari Unit Testing
Steven S S. Skiena – The Algorithm Design Manual 2nd, Springer; 2nd ed. 2008 edition (November 5, 2010).
Prasyarat membaca buku ini:
- Basic programming skill
- Familiar dengan sistem komputer
- Memahami struktur data dasar
- Basic Algebra
Rangkuman:
- Buku ini dimaksudkan sebagai manual tentang desain algoritma, menyediakan akses ke teknologi algoritma kombinatorial untuk siswa dan profesional komputer
- Buku ini terbagi menjadi dua yaitu teknik dan resources. Dimana terdapat kumpulan algoritma yang dapat dimanfaatkan dengan pendekatan problem-solution
- Buku ini meng-encourage agar menggunakan algoritma yang sudah ada dibanding membuat ulang
- Oleh karena itu kamu akan melihat 75 masalah algoritma yang dipecahkan menggunakan solusi algoritma yang sudah ada dengan berbagai referensi
- Buku ini menekankan desain daripada analisis
- Buku ini sudah ditulis dan dikembangkan selama lebih dari 10 tahun dari edisi pertama sampai dengan yang terakhir
- Bacalah bagian preface agar kamu tau lebih banyak tentang bagaimana cara membaca dan menggunakan buku tersebut
Halaman resmi:
- https://www3.cs.stonybrook.edu/~skiena/
- https://www3.cs.stonybrook.edu/~skiena/algorist/book/
- Vide lectures, https://www3.cs.stonybrook.edu/~algorith/video-lectures/
- http://www.algorist.com/
- Sample source code, http://algorist.com/algorist.html
Kesimpulan:
- Kamu akan langsung dihajar habis oleh kata-kata pembukanya, jika kamu sebelumnya tidak serius dengan algoritma atau bahkan mengganggap algoritma gak penting
- Seharusnya setelah mempelajari buku ini kamu udah bukan programmer kaleng-kaleng lagi. Yes! i’m serious!
- Buku ini membahas bahwa dalam mendesain suatu algoritma tidak terlepas dari kreatifitas
- Kunci dari mendesain algoritma adalah dengan bertanya kepada diri sendiri, What if we do this? What if we do that? Why can’t we do it this way?
- Buku ini menurut saya keren banget, dihalaman 357-360 ada panduan berupa daftar pertanyaan yang dapat kita gunakan untuk mendesain algoritma yang efektif dan efisien berdasarkan kondisi dan situasi tertentu (kontekstual)
- Problem-solving is not a science, but part art and part skill
George T. Heineman – Algorithms in a Nutshell: A Practical Guide, O’Reilly Media; 2 edition (March 22, 2016).
Prasyarat membaca buku ini:
- Kamu sudah tahu cara memprogram menggunakan satu atau lebih bahasa pemrograman
- Kamu tahu tentang struktur data sains komputer yang penting, seperti array, daftar terkait, tumpukan, antrian, tabel hash, pohon biner, dan undirected graph dan directed graph.
- Sedikit pengetahuan matematika
- Basic Algebra
Rangkuman:
- Buku ini menggunakan pendekatan praktikal, menggunakan real code, bukan hanya pseudocode untuk menggambarkan algoritma
- Kamu akan mempelajari beberapa struktur data canggih dan cara-cara baru untuk menerapkan struktur data standar untuk meningkatkan efisiensi algoritma
- Mendukung analisis matematika secara empiris
- Contoh kode bisa di download di https://github.com/heineman/algorithms-nutshell-2ed
- Menggunakan beberapa bahasa pemograman untuk implementasi algoritma, seperti C, C++, Java, dan Python
- Bacalah bagian preface agar kamu tau lebih banyak tentang bagaimana cara membaca dan menggunakan buku tersebut
Kesimpulan:
- Buku ini cocok untuk praktisi, programmer, yang ingin mempelajari algoritma sekaligus praktik menggunakan berbagai macam bahasa pemograman
- Untuk programmer pemula bisa jadi ini tidak cocok, karena kamu harus memiliki pengalaman pemograman terlebih dahulu agar bisa mengikuti contoh-contoh yang ada didalam buku ini
- Buku ini disertai dengan kode benchmarking untuk mendapatkan performa yang akurat
Jon Kleinberg, Éva Tardos – Algorithm Design 1st Edition, Pearson; 1 edition (March 26, 2005).
Prasyarat membaca buku ini:
- Basic programming skill
- Familiar dengan sistem komputer
- Memahami struktur data seperti tree, graphs, arrays, queues, dan stacks
- Matematika dasar, logika matematika, induksi matematika
Rangkuman:
- Buku ini berisi kumpulan permasalahan dari berbagai computer science termasuk dari sisi aplikasi dan jaringan seperti caching, switching, interdomain routing pada internet) juga kecerdasan buatan, data mining dan bidang terkait lainnya
- NP-completeness memainkan peranan besar dalam buku ini
- Terdapat 200 contoh permasalahan dalam buku ini
- Buku ini dibuat untuk mahasiswa/i yang sedang menempuh studi S1 computer science
- Buku ini dapat digunakan untuk mendukung belajar mandiri oleh mahasiswa pascasarjana, peneliti, atau profesional komputer yang ingin memahami bagaimana mereka dapat menggunakan teknik desain algoritma tertentu dalam konteks pekerjaan mereka sendiri
- Bacalah bagian preface agar kamu tau lebih banyak tentang bagaimana cara membaca dan menggunakan buku tersebut
Kesimpulan:
- Jika kamu tidak sedang studi computer science atau tidak memiliki background computer science sebaiknya jangan mulai dari buku ini, dijamin pusing 🙂
- Di banding buku-buku lainnya yang dibahas di artikel ini, menurut saya buku ini it’s a different beast
- Buat kamu yang tertarik dengan topik computational complexity theory NP-Complete dan PSPACE mungkin buku ini perlu kamu baca
Anany Levitin – Introduction to the Design and Analysis of Algorithms, Pearson; 3 edition (October 9, 2011).
Prasyarat membaca buku ini:
- Basic programming
- Pengetahuan tentang matematika diskrit atau aljabar
- Fundamental struktur data
- Mengetahui dasar sistem komputer
Rangkuman:
- Buku ini menggunakan taxonomy atau pengklasifikasian algoritma yang berbeda dengan buku lainnya
- Disebut dalam buku ini bahwa taxonomy yang baru ini lebih komprehensif dibanding dengan algoritma tradisional
- Taxonomy meliputi beberapa strategi seperti brute-force, decrease-and-conquer, divide-and-conquer, space and time trade-offs dan iterative improvement yang merupakan paradigma desain yang penting
- Bacalah bagian preface agar kamu tau lebih banyak tentang bagaimana cara membaca dan menggunakan buku tersebut
Kesimpulan:
- Buku ini keren, penulisnya benar-benar yakin tentang pengklasifikasian algoritmanya yang lebih baik daripada sebelumnya sehingga orang yang mempelajarinya bisa mendapatkan pengetahuan tentang pola-pola desain dengan lebih baik
- Kamu bisa mendapatkan perspektif yang baru dengan membaca dan memahami buku ini
- Dengan skill basic programming seharusnya kamu bisa mencoba berbagai macam algoritma dibuku ini yang ditulis menggunakan pseudo-code
- Seperti buku-buku lainnya, buku ini disertai dengan ratusan latihan soal
- Sayangnya official website yang berisi lecture dari penulis sudah tidak bisa diakses
Alfred V. Aho, Jeffrey D. Ullman, John E. Hopcroft – Data Structures and Algorithms 1st Edition, Pearson; 1st edition (January 11, 1983).
Prasyarat membaca buku ini:
- Minimal tau basic programming menggunakan Pascal
- Minimal tau matematika dasar atau aljabar
Rangkuman:
- Buku ini buku lawas. Bahkan saya belum lahir disaat buku ini sudah beredar dimana-mana 🙂
- Pecinta Pascal pasti suka buku ini, karena setiap contoh algoritmanya menggunakan kode Pascal
- Basis dari buku ini ada di Bab 1 s/d. Bab 6
- Buku ini banyak menggunakan Abstract Data Type (ADT) sehingga mudah untuk diimplementasikan di bahasa pemograman sejenis yang lainnya
- Penulis buku ini menganggap penting bahwa algoritma harus bisa dieksekusi agar bisa melihat algoritma secara menyeluruh maka dari itu Pascal digunakan
- Pada Bab 7 dan selanjutnya buku ini akan banyak membahas tentang isu-isu di algoritma daripada struktur data
- Buku ini juga membahas algoritma untuk optimasi external storage dan memory management
- Buku ini juga disertai dengan ratusan latihan soal
- Bacalah bagian preface agar kamu tau lebih banyak tentang bagaimana cara membaca dan menggunakan buku tersebut
Kesimpulan:
- Ketika kamu membaca buku ini, dan membaca buku keluaran terbaru, fondasinya akan terlihat mirip, artinya dari hampir satu abad lalu fundamentalnya masih sama. Hanya saja problemnya yang berkembang seiring jaman
- Sempat sedih ketika baca buku ini, jadi ingat masa lalu, seharusnya waktu masih kuliah saya bisa jauh lebih baik lagi. Lebih serius lagi belajarnya. Karena memang pengetahuan fundamental ini tidak termakan jaman!
- Meskipun buku ini ditulis pada tahun 1983 tapi masih sangat layak untuk dibaca 🙂
Jay Wengrow – A Common-Sense Guide to Data Structures and Algorithms: Level Up Your Core Programming Skills, Pragmatic Bookshelf; 1 edition (August 3, 2017).
Prasyarat membaca buku ini:
- Mengetahui basic programming
- Kamu adalah programmer yang belajar otodidak yang tidak pernah mempelajari computer science secara formal
- Atau kamu adalah programmer yang pernah kuliah IT tetapi lupa segalanya! dan ingin memanfaatkan kekuatan struktur data dan algoritma untuk menulis lebih terukur dan kode yang elegan.
- Mengetahui Ruby, Python dan JavaScript akan sangat membantu dalam memahami implementasi algoritma
Rangkuman:
- Buku ini mengajarkan bahwa segalanya tentang struktur data dan algoritma bermuara pada akal sehat (common sense)
- Dalam buku ini, tidak menggunakan matematika apa pun selain penambahan, pengurangan, perkalian, pembagian, dan eksponen.
- Dalam buku ini setiap konsep dibahas menggunakan bahasa inggris yang plain dan menggunakan dosis gambar yang banyak untuk membuatnya semuanya menyenangkan untuk dipahami
- Beberapa algoritma ditulis menggunakan berbagai macam bahasa pemograman seperti Ruby, Python, dan JavaScript
- Kamu harus membaca buku ini secara berurutan setiap bab-nya
- Bacalah bagian preface agar kamu tau lebih banyak tentang bagaimana cara membaca dan menggunakan buku tersebut
Halaman resmi:
Kesimpulan:
- Dari awal buku ini berpesan bahwa menguasai (mastering) struktur data dan algoritma memungkinkan kamu untuk menulis kode yang lebih efisien yang berjalan lebih cepat
- Buku ini sangat cocok bagi kamu yang agak phobia dengan matematika 🙂 karena penulisnya lebih banyak menggunakan plain english alias bahasa manusia daripada bahasa matematika untuk menjelaskan algoritma
- Ini bukan buku textbook, jadi mungkin buku ini lebih pragmatis ketimbang buku akademik
- Dibulan Juni 2020, akan rilis buku edisi keduanya, menurut saya bukunya layak untuk dimiliki
Aditya Bhargava – Grokking Algorithms: An illustrated guide for programmers and other curious people 1st Edition, Manning Publications; 1st edition (May 2016).
Prasyarat membaca buku ini:
- Basic coding
- Basic Algebra
- Ada baiknya mengetahui bahasa pemograman Python 2.7
Rangkuman:
- Buku ini sangat praktikal
- Semua contoh menggunakan kode Python 2.7
- Contoh kode dapat di download disini https://github.com/egonschiele/grokking_algorithms
- Buku ini tidak membahas semua jenis algoritma, melainkan yang paling essential. Tapi dibuku ini juga akan diberikan informasi mengenai algoritma lainnya sebagai referensi untuk belajar lebih lanjut
- Buku ini seperti buku cerita, hampir disetiap halaman ada ilustrasinya yang menarik dan memicu imajinasi layaknya sedang membacakan buku cerita untuk anak-anak
- Pembahasan Big-O-Notation dibuat sederhana diawalnya kemudian diperdalam pada setiap babnya
Halaman resmi buku:
Kesimpulan:
- Buku ini memiliki ilustrasi yang bagus, sehingga terkesan tidak menyeramkan seperti buku yang lain 🙂 jadi menyenangkan untuk dibaca
- Buku ini mudah diikuti, beberapa penjelasan yang terkesan berulang memiliki tujuan agar pemahaman dapat tercapai dengan baik
- Konsep inti diperkuat dengan latihan dan berbagai penjelasan sehingga kamu dapat memeriksa asumsi dan memastikan kamu bisa mengikuti uraian dalam buku ini
- Bagi yang mau mulai belajar algoritma buku ini sangat cocok sekali!
Sampailah kita di penghujung artikel 🙂
Semoga setelah membaca banyak kesimpulan diatas, teman-teman tergerak untuk menjadi lebih baik lagi dalam hal pemograman dan pengembangan perangkat lunak 🙂
Berikut ini adalah strategi yang akan saya jalankan untuk mastering fundamental algorithm dan siapa tau kamu sependapat.
- Pastikan ketika membaca buku, cari informasi tentang kesalahan penulisan atau cetak didalam bukunya. Biasanya disebut errata contohnya http://adit.io/errata.html. Setiap buku seharusnya memiliki media untuk memberikan informasi koreksi isi dari bukunya. Dengan begitu kamu bisa menghindari kesalahan pemahaman dari isi bukunya. Atau jika kamu menggunakan e-reader kamu bisa melakukan annotate di setiap konten untuk koreksinya
- Pilih satu buku, fokus ke satu buku dulu sampai selesai, sebisa mungkin sampai paham dan bisa diaplikasikan dalam keseharian
- Belajarnya tidak perlu terburu-buru, nikmati saja proses belajarnya, seraplah sebaik mungkin setiap materi yang dipelajari
- Mulai dari buku Grokking Algorithms hanya 258 halaman saja
- Tidak ada salahnya belajar matematika dari dasar lagi agar lebih mudah menyerap materi di buku algoritma selanjutnya. Ambil beberapa kelas berikut dan selesaikan secara berurutan dan nilainya harus 100% semua:
- Lalu baca buku Jay Wengrow – A Common-Sense Guide to Data Structures and Algorithms atau George T. Heineman – Algorithms in a Nutshell: A Practical Guide, O’Reilly Media; 2 edition
- Latihan lebih banyak algoritma disini https://www.hackerrank.com/domains/algorithms
- Ajarkan isi buku yang kamu sudah pahami dengan gaya bahasa kamu sendiri, buat artikel atau video dan berbagilah ilmu di komunitas dan teman-teman kamu
- Jika kamu ingin masuk ke dalam bidang Data Science, Machine Learning atau Natural Language Processing, kamu bisa melanjutkan pelajaran matematika agar bisa memahami desain algoritma dengan maksimal dengan mempelajari Precalculus
- Kemudian baca buku Steven S S. Skiena – The Algorithm Design Manual, selanjutnya baca buku lainnya terserah kamu 🙂
“While we teach, we learn.”
Seneca
“No one learns as much about a subject as one who is forced to teach it.”
Peter Drucker
Saya sangat yakin, setelah melalui langkah-langkah tersebut, kita akan menjadi ahli.
Semoga informasi ini bermanfaat 🙂
Silahkan sebarkan, siapa tau teman-teman kamu ada yang membutuhkan.
Cover image source: Patrick Tomasso on Unsplash