Belajar
Materi
Dilempar langsung ke soal tidak mengajarkan apa pun kepada yang belum pernah menulis kode. Materi di sini menjelaskan modelnya lebih dulu, dengan perumpamaan benda sehari hari dan jejak memori yang dapat dilangkahi satu satu, baru menautkan ke soalnya.
Pemula
25 pelajaran, 219 menitBelum pernah menulis kode sama sekali. Setiap konsep dijelaskan lewat perumpamaan benda sehari hari lebih dulu, baru notasinya.
- 1.17 menitMenukar isi dua wadahKenapa menukar dua nilai butuh wadah ketiga, dan apa yang hilang kalau wadah itu tidak ada.TracingData Structure
- 1.28 menitMengumpulkan nilai satu per satuSatu wadah yang isinya bertambah setiap putaran, dan kenapa nilai awalnya menentukan segalanya.IterativeTracing
- 1.36 menitUrutan hitung dalam satu barisMesin tidak membaca hitungan dari kiri ke kanan. Ada urutan tetap, dan tanda kurung mengalahkannya.Tracing
- 1.48 menitMengosongkan wadah tiap putaranSatu baris yang berpindah tempat mengubah seluruh hasil, dan tidak ada pesan galat yang memberi tahu.Logical DebuggingTracing
- 2.18 menitBenar, salah, dan gabungannyaAND, OR, dan NOT bukan kata biasa. Ketiganya punya aturan yang tidak selalu sama dengan bahasa sehari hari.Conditional
- 2.29 menitCabang di dalam cabangDua kondisi berurutan dan dua kondisi bertingkat terlihat mirip, tetapi jalur yang dilaluinya berbeda.Conditional
- 2.38 menitMenolak lebih dulu, baru menghitungMemeriksa yang mustahil di baris terdepan membuat sisa kodenya berhenti perlu waspada.ConditionalLogical Debugging
- 2.47 menitMemeriksa nilai di dalam rentangSatu keputusan yang menuntut dua pemeriksaan lolos bersamaan, termasuk pada angka negatif.Conditional
- 2.510 menitKeputusan yang bergantung keadaanKejadian yang sama dapat berakibat berbeda, dan yang membedakannya keadaan saat kejadian itu datang.ConditionalTracing
- 3.19 menitMenghitung sampai berhentiSetiap loop butuh tiga bagian. Yang paling sering lupa ditulis adalah bagian yang membuatnya berhenti.Iterative
- 3.29 menitBerhenti tanpa tahu berapa kaliKadang yang diketahui hanya kapan harus berhenti, bukan berapa kali harus berputar.Iterative
- 3.39 menitBatas yang bergeser satu langkahElemen terakhir tidak punya tetangga sesudahnya, dan lupa itu adalah kesalahan paling umum di seluruh pemrograman.Logical DebuggingIterative
- 3.410 menitDua indeks sekaligusLoop di dalam loop, dan indeks dalam yang dimulai ulang setiap kali yang luar melangkah.IterativeData Structure
- 3.59 menitMenolak loop yang tidak berhentiKadang jawaban yang benar bukan menghitung, melainkan menyatakan bahwa perhitungannya tidak akan pernah selesai.Logical DebuggingIterative
- 4.18 menitMenunjuk elemen lewat nomornyaNomor pertama adalah nol, nomor terakhir adalah panjang dikurangi satu, dan di luar itu tidak ada apa apa.Data Structure
- 4.28 menitMemilih sebagian ke array baruMenyaring bukan membuang. Yang tidak memenuhi kriteria tidak pernah ditambahkan, bukan ditambahkan lalu dihapus.Data StructureConditional
- 4.38 menitMengubah isi di tempatnyaKadang yang diminta bukan array baru, melainkan array yang sama dengan isi yang sudah berubah.Data Structure
- 4.48 menitMap, data yang ditunjuk dengan namaBukan nomor urut, melainkan nama. Dan menulis nama yang belum ada justru menambahkannya.Data Structure
- 4.59 menitMenghitung kemunculan tiap nilaiSatu akumulator per nilai unik, dan kunci yang belum ada harus disiapkan sebelum dapat ditambah.Data StructureIterative
- 5.19 menitMencari terkecil dan terbesarNilai awal pembanding tidak boleh dikarang. Ia harus datang dari data itu sendiri.ConditionalIterativeData Structure
- 5.28 menitBerhenti begitu ketemuLoop yang berhenti karena berhasil, bukan karena datanya habis, dan cara menjawab ketika tidak ada.IterativeConditional
- 5.310 menitDua pointer yang saling mendekatMembalik array dengan menukar dari kedua ujung, dan satu keputusan halus tentang kapan harus berhenti.Data StructureIterative
- 5.410 menitMenyimpan yang terbaik sejauh iniDua counter dengan tugas berbeda: satu untuk yang sedang berjalan, satu untuk rekor yang pernah tercapai.IterativeTracing
- 5.512 menitYang terakhir masuk keluar duluSatu struktur yang hanya bisa disentuh dari satu ujung, dan kenapa justru batasan itu yang membuatnya berguna.Data StructureTracing
- 5.612 menitDefinisi yang menunjuk dirinyaMenyelesaikan persoalan dengan menyebut versi yang lebih kecil dari persoalan yang sama, dan satu syarat yang membuatnya berhenti.IterativeTracing
Lanjut
3 pelajaran, 29 menitLogika dasarnya sudah jalan. Yang dilatih di sini kerapian: penamaan, memecah langkah, dan menghapus percabangan yang tidak perlu.
Materi tingkat ini tidak menggerakkan rating sumbu. Tidak ada soal yang dapat mengujinya.
- 6.19 menitPenamaan yang jujurNama yang berbohong lebih berbahaya daripada nama yang buruk, dan komentar tidak pernah menjadi obatnya.
- 6.210 menitMemecah langkah jadi satu tugasUkurannya bukan jumlah baris, melainkan jumlah alasan sebuah fungsi bisa berubah. Satu fungsi yang mengerjakan dua hal akan diubah dua kali lebih sering.
- 6.310 menitMenghapus percabangan yang tidak perluSetiap cabang menggandakan jalur yang harus dibaca. Sebagian cabang tidak membawa keputusan apa pun, dan menghapusnya lebih baik daripada merapikannya.
Expert
3 pelajaran, 35 menitSudah memimpin pekerjaan orang lain. Isinya keputusan yang tidak punya jawaban tunggal: batas satu unit kode, cara menulis kebutuhan, dan alasan di balik keduanya.
Materi tingkat ini tidak menggerakkan rating sumbu. Tidak ada soal yang dapat mengujinya.
- 8.112 menitBatas satu unit kodeKapan sebuah fungsi harus dipecah, kapan memecahnya justru memperburuk, dan kenapa jumlah baris bukan jawabannya.
- 8.212 menitMenulis kebutuhan dari perubahannyaButir kebutuhan yang menyentuh lima unit terpisah bukan kebutuhan yang besar, melainkan batas kode yang dipotong menurut lapisan teknis.
- 8.311 menitMencatat alasan, bukan hasilnyaKeputusan tanpa alasan tertulis akan dibatalkan oleh orang berikutnya, dan biasanya orang berikutnya itu Anda sendiri enam bulan kemudian.