Lewati ke konten utama
K1

K1 · Struktur Data dan Algoritma

Cara berpikir yang tidak lekang: menyusun data dengan tepat, merancang langkah yang benar dan efisien, lalu membuktikannya.

Mulai Modul 01

Daftar modul

  1. 01Algoritma, kebenaran, dan cara mengukur9 latihan
  2. 02Notasi asimtotik9 latihan
  3. 03Rekursi dan induksi9 latihan
  4. 04Array dinamis dan list berantai8 latihan
  5. 05Stack, queue, dan deque10 latihan
  6. 06Tabel hash8 latihan
  7. 07Pengurutan dasar dan pembuktiannya9 latihan
  8. 08Pengurutan efisien9 latihan
  9. 09Pencarian biner dan dua penunjuk9 latihan
  10. 10Pohon dan pohon pencarian biner9 latihan
  11. 11Heap dan antrean prioritas9 latihan
  12. 12Graf 1: menjelajah10 latihan
  13. 13Graf 2: jalur terpendek dan pohon rentang8 latihan
  14. 14Pemrograman dinamis9 latihan
  15. 15Rakus dan backtracking9 latihan
  16. 16Proyek akhir dan wawancara8 latihan

Ada contoh atau latihan bertanda “Kerjakan di laptop”? Paket dan data K1 untuk menjalankannya di komputermu ada di panduan menjalankan kode di komputermu.

Tentang course ini

Cara berpikir yang tidak lekang: menyusun data dengan tepat, merancang langkah yang benar dan efisien, lalu membuktikannya.

Course inti ilmu komputer Coding Studio untuk semua jalur: Data Scientist, Data Engineer, ML Engineer, AI Engineer, dan Agentic Engineer. Latihan di dalamnya dijalankan dan diperiksa otomatis langsung di peramban.


Kenapa course ini ada

Alat modern (pustaka, basis data, agen AI) sudah menyediakan struktur data dan algoritma siap pakai. Justru karena itu, orang yang tidak memahaminya tidak bisa menilai apakah kode (buatan sendiri atau buatan AI) benar, cepat, dan aman:

  • kode yang lulus tes kecil tetapi berhenti merespons pada data 100.000 baris (kuadratik tanpa sadar);
  • in pada list di dalam perulangan, padahal set/dict tersedia;
  • rekursi tanpa batas, pengurutan yang tidak stabil, pencarian biner yang meleset satu;
  • algoritma rakus yang terlihat masuk akal tetapi salah untuk kasus tertentu.

Inilah inti cara klasik di course ini: mengimplementasikan sendiri, menganalisis di kertas, membuktikan kebenaran. Cara modern di course ini: memakai pustaka standar Python yang setara (dict, heapq, bisect, collections, functools.cache) setelah memahami isinya, dan memakai AI untuk menjelaskan, membuat kasus uji, dan meninjau, bukan untuk menulis jawaban latihan.

Untuk siapa

  • Lulusan F1 Python (wajib; terutama Modul 06–08 dan 12). F1 sudah mengenalkan rekursi (Modul 06) dan intuisi kompleksitas (Modul 07); K1 membahasnya tuntas. F2 SQL dan F5 Rilis dianjurkan sebelum atau bersamaan.
  • Calon peserta C1, C2, C9, C3, C4, C10, dan C5: topik K1 dipakai di sana (lihat "Hubungan dengan course lain").
  • Persiapan wawancara kerja software engineer dan data/ML engineer.
  • Pelajar yang menyiapkan OSN Informatika (dasar, bukan pengganti latihan kompetitif).

Matematika: cukup aljabar SMA. Bukti dengan induksi dan istilah graf diajarkan dari nol di modul yang memakainya.

Lab

Seluruhnya di peramban (Python/Pyodide), diperiksa otomatis. Klaim kinerja dibuktikan dengan menghitung langkah (jumlah perbandingan, akses, atau panggilan) yang deterministik, bukan dengan mengukur waktu; pengukuran waktu hanya sebagai contoh python statis dengan catatan bahwa angkanya berbeda di setiap komputer.

Waktu: ±4 jam per modul, total ±65 jam. Setiap modul dibuka dengan kotak Intinya. Bagian berjudul "Di balik layar (opsional)" boleh dilewati: latihan dan kuis tidak mengujinya.

Bila waktumu terbatas (misalnya kamu menuju jalur Data Scientist), yang paling sering dipakai di course berikutnya adalah kompleksitas (Modul 01–03), tabel hash (06), pengurutan (07–08), pencarian biner (09), heap dan top-k (11), graf dan urutan topologis (12), dan pemrograman dinamis (14). Kerjakan semua modul secara berurutan karena proyeknya bersambung, tetapi bagian pohon seimbang (Modul 10), Prim (Modul 13), dan P vs NP (Modul 15) boleh kamu pelajari lebih ringan.

Belajar bersama AI

Setiap modul punya bagian 5 dengan pola yang sama: satu contoh pertanyaan, cara memeriksa jawaban AI, satu contoh jawaban AI yang terdengar benar tetapi salah, lalu Tugas tanpa AI, Tugas dengan AI, dan Bandingkan. Pertanyaan yang baik untuk topik algoritma umumnya berbentuk:

  • "Ini fungsi buatanku [tempel]. Tuliskan invarian perulangannya dan periksa tiga bagiannya satu per satu. Jangan ubah kodenya."
  • "Beri aku lima masukan yang paling mungkin membuat fungsi ini salah, beserta jawaban yang benar."
  • "Berapa perbandingan yang dilakukan fungsi ini untuk n elemen di kasus terbaik dan terburuk? Tunjukkan cara menghitungnya."

Jawaban AI selalu diperiksa dengan cara klasik: tes, pembanding brute force pada instans kecil, dan menghitung langkah. Jangan menerima label kompleksitas tanpa hitungan.

Silabus (16 modul)

#ModulKlasikModernProyek Kurir Makmur
01Algoritma, kebenaran, dan cara mengukurMasalah vs algoritma, spesifikasi, invarian perulangan, menghitung langkahMembandingkan solusi AI dengan menghitung langkahMemuat peta, menghitung jarak rute
02Notasi asimtotikBig-O, Θ, Ω; kasus terbaik/terburuk/rata-rata; membaca kompleksitas kode; ruangKompleksitas operasi bawaan PythonMengukur langkah fungsi rute
03Rekursi dan induksiKasus dasar, pohon rekursi, induksi untuk membuktikan, rekurensi dan intuisi teorema master, batas rekursifunctools.cache sesudah memo ditulis sendiriMenjelajah jalan secara rekursif
04Array dinamis dan list berantaiArray, pertumbuhan berganda dan analisis amortisasi, list berantai tunggal/gandaCara kerja list PythonRiwayat pengantaran berantai
05Stack, queue, dan dequeImplementasi dengan array dan list berantai, aplikasi (kurung seimbang, undo, antrean)collections.dequeAntrean pesanan dan undo
06Tabel hashFungsi hash, tabrakan (chaining, open addressing), faktor muat, pertumbuhan, serangan hash floodingCara kerja dict/setIndeks pesanan per id
07Pengurutan dasar dan pembuktiannyaSelection, insertion, bubble; invarian; stabilitas; batas bawah intuitifsorted dan key=Mengurutkan pesanan menurut batas waktu
08Pengurutan efisienMerge sort, quicksort (partisi, pivot, kasus terburuk), batas bawah Ω(n log n) pengurutan perbandingan, counting/radix sortTimsort di PythonMerge sort stabil untuk pesanan
09Pencarian biner dan dua penunjukVarian batas bawah/atas, invarian, galat satu-lebih; dua penunjuk, jendela geserbisectMencari slot waktu antar
10Pohon dan pohon pencarian binerTraversal, BST (cari, sisip, hapus), keseimbangan (gagasan AVL/merah-hitam), hubungan dengan B-tree F2Kapan memakai struktur terurutIndeks pesanan terurut dan kueri rentang
11Heap dan antrean prioritasHeap biner (naik/turun), heapify linear, heapsort, top-kheapqAntrean pesanan menurut tenggat
12Graf 1: menjelajahRepresentasi (list/matriks ketetanggaan), BFS, DFS, komponen, urutan topologis, deteksi siklusgraphlib.TopologicalSorterTitik terjangkau, rute dengan jumlah jalan paling sedikit
13Graf 2: jalur terpendek dan pohon rentangDijkstra (dan kenapa gagal pada bobot negatif), Bellman-Ford, union-find, Kruskal, Prim—Rute terpendek; jaringan jalan minimum
14Pemrograman dinamisMemo vs tabel, submasalah, knapsack 0/1, kembalian koin, jarak edit, LISAI untuk mencari rekurensi, dibuktikan dengan tesMemuat motor; koreksi salah ketik nama produk
15Rakus dan backtrackingPemilihan aktivitas (dengan bukti tukar), kapan rakus gagal, backtracking dan pemangkasan, intuisi P vs NPKapan memakai heuristik dan pemecah siap pakaiJadwal antar maksimal; rute terbaik untuk sedikit tujuan
16Proyek akhir dan wawancaraMenyatukan, menganalisis keseluruhan, menulis penjelasan kompleksitasEtika AI saat wawancara; lab opsional Tayang ringanRencana antar satu hari

Proyek: Kurir Makmur

Warung Makmur (dari F2) mulai melayani antar. Peserta membangun pustaka kurir dari nol: struktur data dan algoritma ditulis sendiri, lalu dipakai untuk merencanakan antar di Kelurahan Makmur fiktif (data/peta.json, dibuat deterministik oleh data/buat_peta.py: 62 titik, 81 jalan termasuk satu arah, satu rumah terputus banjir, 30 pesanan). Kontrak nama fungsi, aturan pemecah seri, dan langkah per modul: Kontrak Proyek Kurir.

Lencana Tayang ringan (opsional, bukan syarat lulus; rinciannya di Modul 16, layar Tayang ringan di pendalaman): repo publik dengan README portofolio, GitHub Actions hijau, dan cara orang lain mencobanya.

Kerangka modul dan standar

Sama dengan F1 ("Kerangka setiap modul"): kotak ## Intinya, ≥ 8 latihan terperiksa (≥ 3 dasar, 3 menengah, 2 tantangan, label **Tingkat:**), ### 2.N Di balik layar (opsional): … dengan catatan "boleh dilewati", tiga subbagian klasik/modern di §5, kuis 8 soal yang tidak menguji bagian opsional, rujukan klasik. Penyesuaian K1:

  • 2. Konsep memuat analisis kompleksitas tertulis untuk setiap algoritma dan, bila relevan, sketsa bukti kebenaran (invarian atau induksi).
  • 3. Latihan: selain kebenaran, tes memeriksa efisiensi dengan menghitung langkah (misalnya objek pembanding yang mencatat jumlah perbandingan, atau list pembungkus yang mencatat jumlah akses), sehingga solusi kuadratik ditolak untuk latihan yang meminta O(n log n). Batas diberi kelonggaran (misalnya ≤ 2·n·log₂n + n) dan disebut di perintah.
  • Latihan "tulis sendiri" melarang memakai padanan pustaka (misalnya sorted di latihan merge sort); tes memeriksanya lewat KODE secara hemat dan disebut jelas di perintah.
  • 7. Di dunia kerja: wawancara kerja dan sistem nyata (indeks basis data, penjadwal, peta dan rute, mesin pencari) dalam skenario generik yang realistis, tanpa menunjuk berkas, jalur, keputusan, atau insiden dari repositori perusahaan mana pun.
  • Sumber klasik yang dipakai bergantian: Cormen dkk. Introduction to Algorithms (CLRS), Sedgewick & Wayne Algorithms, Skiena The Algorithm Design Manual, Knuth TAOCP, Kleinberg & Tardos Algorithm Design, dan makalah asli (misalnya Dijkstra 1959). Edisi dan nomor bab diverifikasi.

Hubungan dengan course lain

CourseHubungan
F1 PythonPrasyarat; rekursi dan kompleksitas dari Modul 06–07 dibahas tuntas
F2 SQLIndeks B-tree (F2 Modul 11) ↔ pohon (K1 Modul 10); hash join dan pengurutan di basis data ↔ Modul 06 dan 08
F5 RilisGit, GitHub Actions, dan tayang; dipakai di lab opsional Tayang ringan Modul 16
C1 Data ScienceKompleksitas operasi saat data membesar (Modul 01–03)
C2 Machine LearningPohon keputusan: rekursi, pengurutan, dan kompleksitas (Modul 03, 07–08, 10)
C9 Deep LearningGraf komputasi dan urutan topologis untuk autograd (Modul 12)
C3 AI EngineeringTop-k dengan heap di pencarian semantik (Modul 11), jarak edit (Modul 14)
C4 Data EngineeringHash join (Modul 06), DAG dan urutan topologis di orkestrasi (Modul 12)
C10 MLOps, C5 Agentic EngineeringMemeriksa kode, termasuk buatan agen AI, dengan tes, invarian, dan hitungan langkah