K1 · Struktur Data dan Algoritma
Cara berpikir yang tidak lekang: menyusun data dengan tepat, merancang langkah yang benar dan efisien, lalu membuktikannya.
- 16 modul
- 142 latihan
- 90 istilah
Daftar modul
- 01Algoritma, kebenaran, dan cara mengukur9 latihan
- 02Notasi asimtotik9 latihan
- 03Rekursi dan induksi9 latihan
- 04Array dinamis dan list berantai8 latihan
- 05Stack, queue, dan deque10 latihan
- 06Tabel hash8 latihan
- 07Pengurutan dasar dan pembuktiannya9 latihan
- 08Pengurutan efisien9 latihan
- 09Pencarian biner dan dua penunjuk9 latihan
- 10Pohon dan pohon pencarian biner9 latihan
- 11Heap dan antrean prioritas9 latihan
- 12Graf 1: menjelajah10 latihan
- 13Graf 2: jalur terpendek dan pohon rentang8 latihan
- 14Pemrograman dinamis9 latihan
- 15Rakus dan backtracking9 latihan
- 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);
inpada 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)
| # | Modul | Klasik | Modern | Proyek Kurir Makmur |
|---|---|---|---|---|
| 01 | Algoritma, kebenaran, dan cara mengukur | Masalah vs algoritma, spesifikasi, invarian perulangan, menghitung langkah | Membandingkan solusi AI dengan menghitung langkah | Memuat peta, menghitung jarak rute |
| 02 | Notasi asimtotik | Big-O, Θ, Ω; kasus terbaik/terburuk/rata-rata; membaca kompleksitas kode; ruang | Kompleksitas operasi bawaan Python | Mengukur langkah fungsi rute |
| 03 | Rekursi dan induksi | Kasus dasar, pohon rekursi, induksi untuk membuktikan, rekurensi dan intuisi teorema master, batas rekursi | functools.cache sesudah memo ditulis sendiri | Menjelajah jalan secara rekursif |
| 04 | Array dinamis dan list berantai | Array, pertumbuhan berganda dan analisis amortisasi, list berantai tunggal/ganda | Cara kerja list Python | Riwayat pengantaran berantai |
| 05 | Stack, queue, dan deque | Implementasi dengan array dan list berantai, aplikasi (kurung seimbang, undo, antrean) | collections.deque | Antrean pesanan dan undo |
| 06 | Tabel hash | Fungsi hash, tabrakan (chaining, open addressing), faktor muat, pertumbuhan, serangan hash flooding | Cara kerja dict/set | Indeks pesanan per id |
| 07 | Pengurutan dasar dan pembuktiannya | Selection, insertion, bubble; invarian; stabilitas; batas bawah intuitif | sorted dan key= | Mengurutkan pesanan menurut batas waktu |
| 08 | Pengurutan efisien | Merge sort, quicksort (partisi, pivot, kasus terburuk), batas bawah Ω(n log n) pengurutan perbandingan, counting/radix sort | Timsort di Python | Merge sort stabil untuk pesanan |
| 09 | Pencarian biner dan dua penunjuk | Varian batas bawah/atas, invarian, galat satu-lebih; dua penunjuk, jendela geser | bisect | Mencari slot waktu antar |
| 10 | Pohon dan pohon pencarian biner | Traversal, BST (cari, sisip, hapus), keseimbangan (gagasan AVL/merah-hitam), hubungan dengan B-tree F2 | Kapan memakai struktur terurut | Indeks pesanan terurut dan kueri rentang |
| 11 | Heap dan antrean prioritas | Heap biner (naik/turun), heapify linear, heapsort, top-k | heapq | Antrean pesanan menurut tenggat |
| 12 | Graf 1: menjelajah | Representasi (list/matriks ketetanggaan), BFS, DFS, komponen, urutan topologis, deteksi siklus | graphlib.TopologicalSorter | Titik terjangkau, rute dengan jumlah jalan paling sedikit |
| 13 | Graf 2: jalur terpendek dan pohon rentang | Dijkstra (dan kenapa gagal pada bobot negatif), Bellman-Ford, union-find, Kruskal, Prim | — | Rute terpendek; jaringan jalan minimum |
| 14 | Pemrograman dinamis | Memo vs tabel, submasalah, knapsack 0/1, kembalian koin, jarak edit, LIS | AI untuk mencari rekurensi, dibuktikan dengan tes | Memuat motor; koreksi salah ketik nama produk |
| 15 | Rakus dan backtracking | Pemilihan aktivitas (dengan bukti tukar), kapan rakus gagal, backtracking dan pemangkasan, intuisi P vs NP | Kapan memakai heuristik dan pemecah siap pakai | Jadwal antar maksimal; rute terbaik untuk sedikit tujuan |
| 16 | Proyek akhir dan wawancara | Menyatukan, menganalisis keseluruhan, menulis penjelasan kompleksitas | Etika AI saat wawancara; lab opsional Tayang ringan | Rencana 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
sorteddi latihan merge sort); tes memeriksanya lewatKODEsecara 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
| Course | Hubungan |
|---|---|
| F1 Python | Prasyarat; rekursi dan kompleksitas dari Modul 06–07 dibahas tuntas |
| F2 SQL | Indeks B-tree (F2 Modul 11) ↔ pohon (K1 Modul 10); hash join dan pengurutan di basis data ↔ Modul 06 dan 08 |
| F5 Rilis | Git, GitHub Actions, dan tayang; dipakai di lab opsional Tayang ringan Modul 16 |
| C1 Data Science | Kompleksitas operasi saat data membesar (Modul 01–03) |
| C2 Machine Learning | Pohon keputusan: rekursi, pengurutan, dan kompleksitas (Modul 03, 07–08, 10) |
| C9 Deep Learning | Graf komputasi dan urutan topologis untuk autograd (Modul 12) |
| C3 AI Engineering | Top-k dengan heap di pencarian semantik (Modul 11), jarak edit (Modul 14) |
| C4 Data Engineering | Hash join (Modul 06), DAG dan urutan topologis di orkestrasi (Modul 12) |
| C10 MLOps, C5 Agentic Engineering | Memeriksa kode, termasuk buatan agen AI, dengan tes, invarian, dan hitungan langkah |