Kembali ke Kursus
AI028 S1

Analisis Struktur Data dan Algoritma Python (Edisi 2)

Buku ini adalah buku teks klasik yang menjelaskan struktur data dan algoritma menggunakan Python. Meliputi ulasan dasar Python, analisis algoritma (notasi O besar), struktur data dasar (tumpukan, antrian, daftar), rekursi, pencarian dan pengurutan, serta algoritma pohon dan graf. Dengan daftar kode praktis, membantu pembaca memahami bagaimana mengimplementasikan berbagai tipe data abstrak secara efisien menggunakan Python.

4.7
24.0h
1028 siswa
8 lessons
0 suka
Kecerdasan Buatan
Mulai Belajar

Gambaran Umum Kursus

📚 Ringkasan Konten

Buku ini merupakan buku teks klasik yang menjelaskan struktur data dan algoritma menggunakan Python. Meliputi ulangan dasar Python, analisis algoritma (notasi O besar), struktur data dasar (tumpukan, antrian, daftar), rekursi, pencarian dan pengurutan, algoritma pohon serta graf. Dengan daftar kode praktis, buku ini membantu pembaca memahami bagaimana mengimplementasikan berbagai tipe data abstrak secara efisien menggunakan Python.

Hanya dengan memahami struktur data dan algoritma secara mendalam, seseorang benar-benar dapat menguasai Python.

Penulis: Bradley Miller (Profesor Emeritus Ilmu Komputer di Luther College, Amerika Serikat), David Ranum (Insinyur Perangkat Lunak Kognitif IBM Watson)

Ucapan Terima Kasih: Terima kasih kepada rekan kerja Steve Hubbard atas umpan balik yang sangat banyak untuk edisi pertama serta bahan baru untuk edisi terbaru, serta kepada para kolega dari berbagai tempat yang telah mengirim email tentang kesalahan dan memberikan masukan. Terima kasih juga kepada Mary, Bob, dan staf lainnya di kafe Java John's di Decora, yang memperbolehkan kami menjadi "penulis tetap" saat liburan. Selain itu, terima kasih kepada seluruh staf Franklin, Beedle & Associates (terutama Jim Leisy dan Tom Sumner) atas kolaborasi yang menyenangkan. Terakhir, ucapan terima kasih khusus kepada istri kami, Jane Miller dan Brenda Ranum, yang cinta dan dukungan mereka membuat buku ini akhirnya menjadi kenyataan.

🎯 Tujuan Pembelajaran

  1. Memahami hubungan antara ilmu komputer, algoritma, dan pemrograman, serta menguasai konsep tipe data abstrak (ADT) dan penyembunyian informasi.
  2. Mahir menggunakan tipe data koleksi bawaan Python (daftar, tuple, himpunan, kamus) serta struktur kontrol (perulangan, percabangan, penanganan ekssepsi).
  3. Menguasai inti pemrograman berbasis objek Python: termasuk definisi kelas, metode konstruktor, overloading operator (seperti penjumlahan pecahan), aplikasi algoritma Euclidean, serta perbedaan antara kesamaan dalam dan luar.
  4. Perbandingan berbagai solusi algoritma: mampu menjelaskan empat pendekatan deteksi kata anagram (penghitungan, pengurutan, brute force, penghitungan frekuensi) beserta kompleksitas waktu masing-masing.
  5. Pengukuran performa container Python: menguasai efisiensi notasi O besar pada operasi utama Python list (List) dan dictionary (Dict), serta mampu membedakan perbedaan performa pop() dan pop(i).
  6. Kemampuan verifikasi performa: mampu menggunakan modul timeit untuk merancang eksperimen yang memverifikasi konsistensi antara kompleksitas teoritis dan waktu eksekusi aktual.
  7. Memahami dan mampu membedakan karakteristik logis struktur data linear (tumpukan, antrian, deque, daftar).
  8. Mampu menggunakan koleksi dasar Python (seperti daftar) untuk mengimplementasikan tumpukan, antrian, dan deque kustom.
  9. Memahami penerapan tumpukan dalam pemrosesan ekspresi (konversi infix ke postfix, evaluasi postfix) serta penerapan antrian dalam simulasi sistem (simulasi printer).
  10. Menguasai prinsip dasar rekursi: mampu mengidentifikasi dan menulis fungsi rekursif yang mencakup kondisi dasar, evolusi status, dan pemanggilan diri sendiri.

Pelajaran

Lesson

This lesson introduces the core principles of computer science, focusing on problem-solving through algorithms, procedural abstraction, and Python’s object-oriented nature. Students will learn to manage complexity by leveraging Python’s dynamic variable references, efficient built-in data structures, and robust error-handling techniques to build reliable, scalable software.

本课程深入探讨了算法分析的核心工具——大O记法,通过异序词检测案例展示了从暴力法到计数法的性能优化过程。学习重点在于理解不同操作(如列表索引与pop操作)的复杂度差异,并掌握如何通过空间换时间及选择合适的数据结构来提升程序效率。

This lesson introduces linear data structures and the concept of Abstract Data Types (ADTs), focusing on the stack as a fundamental LIFO (Last-In, First-Out) structure. Students will learn to implement stacks in Python and apply them to complex tasks, including converting infix expressions to postfix notation and evaluating those expressions efficiently.

本课程深入探讨了递归算法的核心原理,重点讲解了递归三原则(基准情况、状态改变、自我调用)以及递归与系统调用栈之间的内在联系。通过进制转换、汉诺塔及动态规划等案例,学生将学习如何将复杂问题拆解为自相似的子问题,并掌握从递归思维向高效动态规划算法的进阶转换。

This lesson explores fundamental search and retrieval algorithms, progressing from $O(n)$ sequential search to the $O(\log n)$ efficiency of binary search and the $O(1)$ potential of hash tables. Students learn to optimize data access through divide-and-conquer strategies, sophisticated hash function design, and collision-handling techniques to build efficient, dictionary-like data structures.

This lesson explores the hierarchical and recursive nature of tree data structures, covering fundamental terminology, implementation methods like nested lists and object-oriented references, and the construction of expression trees. It also introduces essential tree traversal algorithms—preorder, inorder, and postorder—and explains how these recursive patterns are applied to tasks like file system analysis and AVL tree balancing.

This lesson introduces graph theory as a powerful tool for modeling real-world problems by abstracting entities as vertices and relationships as edges. Students will learn to implement graphs using adjacency lists, compare storage efficiency, and master the Breadth-First Search (BFS) algorithm to solve pathfinding and state-space challenges.

This lesson explores the memory efficiency of Python's ArrayList, explaining how amortized analysis ensures $O(1)$ performance for append operations through strategic over-allocation. It also covers the mathematical foundations of RSA encryption, demonstrating how modular exponentiation and divide-and-conquer algorithms optimize complex calculations for secure data processing.