2Python untuk AI

Final Challenges — Fase 2

7 min baca
Tujuan

Konsolidasi seluruh Fase 2 sebelum lanjut ke Fase 3 (Prompt Engineering + Math). Selesaikan minimal 70% sebelum lanjut.

Final Challenges — Fase 2

Tujuan: Konsolidasi seluruh Fase 2 sebelum lanjut ke Fase 3 (Prompt Engineering + Math). Selesaikan minimal 70% sebelum lanjut.


Challenge 1 — Quiz Mandiri (1 jam)

Jawab tanpa cek file:

A. Fundamentals

  1. Apa beda = dan ==? Beri contoh.
  2. Apa beda 5 / 2 dan 5 // 2?
  3. Sebut 5 falsy values di Python.
  4. Apa beda is dan ==?
  5. Apa output dari f"{3.14159:.2f}"?

B. Control Flow

  1. Apa beda break, continue, pass?
  2. Apa output dari:
for i in range(2, 10, 3):
    print(i)
  1. Apa keuntungan enumerate vs range(len(...))?
  2. Apa fungsi while-else?

C. Functions

  1. Apa beda *args dan **kwargs?
  2. Apa "mutable default argument pitfall"?
  3. Kapan pakai lambda vs def?
  4. Apa LEGB rule?

D. Data Structures

  1. Apa beda list dan tuple?
  2. Kenapa membership check (x in s) lebih cepat di set vs list?
  3. Apa output: [i**2 for i in range(5) if i % 2 == 0]?
  4. Bagaimana bikin dict dari 2 list (nama dan umur)?

E. OOP

  1. Apa fungsi self?
  2. Apa beda instance vs class attribute?
  3. Apa fungsi super()?
  4. Apa itu dunder method? Beri 3 contoh.
  5. Kapan pakai composition vs inheritance?

F. File I/O & Error

  1. Kenapa selalu pakai with open(...)?
  2. Apa beda json.load dan json.loads?
  3. Apa bedanya except Exception dan bare except:?
  4. Apa fungsi finally?

G. Advanced

  1. Apa yang dilakukan @functools.wraps?
  2. Apa beda function biasa dan generator?
  3. Kapan pakai lru_cache?

Cek dengan ngecek file yang relevan. Target: 22-29 benar.


Challenge 2 — Build dari Spec (3 jam)

Bikin 1 project menengah dari scratch tanpa lihat solusi.

Pilihan A — Expense Tracker

CLI app untuk catat pengeluaran.

python expense.py add 50000 "Makan siang" --category food
python expense.py list --month 2026-05
python expense.py summary --month 2026-05
python expense.py top --category --limit 5

Wajib:

  • OOP dengan class Expense, ExpenseTracker
  • Save/load JSON
  • Filter by date range, category
  • Summary: total per category, average daily
  • Type hints
  • Error handling
  • Pakai pathlib + datetime + argparse

Bonus:

  • Export to CSV
  • Budget alert kalau exceed limit
  • Pretty print dengan tabel ASCII

Pilihan B — Quiz CLI Game

Game tanya-jawab CLI dari bank soal JSON.

python quiz.py play --difficulty medium --topic python
python quiz.py stats
python quiz.py add-question

Wajib:

  • Class Question, Quiz, Player
  • Random question dari bank
  • Score tracking persistent
  • Time limit per soal (pakai signal atau timer)
  • Multiple choice + open-ended

Bonus:

  • Adaptive difficulty
  • Leaderboard
  • Spaced repetition (soal yang salah muncul lagi)

Pilihan C — Markdown Notes Manager

CLI untuk organize file markdown.

python md_notes.py new "Belajar Python"
python md_notes.py search "comprehension"
python md_notes.py tag note-5 ai,learning
python md_notes.py stats

Wajib:

  • Folder notes/ berisi .md files
  • Frontmatter YAML untuk metadata
  • Full-text search
  • Tag system
  • Stats (jumlah, top tag, dll)

Bonus:

  • Wikilink parsing ([[note-name]])
  • Auto-generate index/TOC
  • Export ke HTML

Submission: Push ke GitHub, README lengkap, screenshot demo. Comment di chat saya untuk review (atau minta feedback dari LLM).


Challenge 3 — Refactor Eksisting Code (2 jam)

Ambil 1 project pertama kamu (misal calculator dari challenge 2.1) yang masih dalam style awal-awal.

Refactor menjadi:

  • OOP (kalau belum)
  • Pakai type hints
  • Pakai dataclass
  • Decorator untuk logging
  • Generator/comprehension yang relevan
  • Test dengan pytest minimal 5 test cases
  • Black formatter

Bandingkan kode lama vs baru. Tulis di jurnal: apa yang berubah, kenapa lebih baik.

Tujuan: rasakan progress kamu sendiri. Code 3 minggu lalu vs sekarang harus berbeda jelas.


Challenge 4 — Code Review Pair (Opsional)

Cari teman (atau pakai LLM):

  • Tukar 1 mini project
  • Review kode masing-masing
  • Tulis 5 saran perbaikan untuk masing-masing

Hal yang dinilai:

  • Naming
  • Structure (function/class breakdown)
  • DRY (no duplication)
  • Error handling
  • Comments (terlalu banyak/sedikit?)
  • Test coverage
  • README quality

Tujuan: baca kode orang lain = belajar style berbeda. Beri kritik = melatih critical thinking.


Challenge 5 — Open Source Contribution (Sulit, Opsional)

Cari 1 repo Python populer di GitHub yang punya label "good first issue" atau "help wanted".

Coba kontribusi:

  • Fix typo di docs
  • Tambah unit test
  • Fix small bug
  • Improve example

Walaupun tidak di-merge, prosesnya berharga:

  • Belajar baca codebase besar
  • Belajar pakai git workflow (fork, PR)
  • Belajar code style profesional

Kalau di-merge → masuk LinkedIn/CV: "Open source contributor".


Challenge 6 — Anki Deck Update

Tambahkan 30 cards baru ke Anki deck dari Fase 2:

  • Method String, List, Dict
  • Pythonic patterns
  • Common pitfalls
  • Decorator/generator

Total deck sekarang: 60+ cards. Review 15 menit/hari.


Challenge 7 — Refleksi & Plan Lanjut

Tulis di learning-journal/refleksi-fase-2.md:

Apa yang Berubah?

  1. Bandingkan code di awal Fase 2 vs sekarang.
  2. Sebut 5 konsep yang baru kamu pahami yang akan kamu pakai sepanjang karir.
  3. Apa yang awalnya susah, sekarang gampang?

Apa yang Masih Susah?

  1. Konsep mana yang masih bingung?
  2. Apa rencana untuk memperdalam?

Habit Check

  1. Apakah konsisten 5+ jam/hari?
  2. Apakah konsisten jurnal harian?
  3. Apa yang perlu adjust untuk Fase 3?

Plan Fase 3

  1. Target durasi
  2. Output GitHub yang ditargetkan
  3. Hambatan potensial

Checklist Akhir Fase 2

Skill Programming

  • Python syntax lancar (variabel, control flow, function)
  • List/dict/set comprehension reflexive
  • OOP — bisa bikin class dengan inheritance
  • File I/O (text, JSON, CSV)
  • Error handling dengan try/except
  • Decorator dan generator paham konsep
  • Type hints di semua function

Tools

  • Conda environment lancar
  • Git workflow lancar (commit, branch, push)
  • VS Code productive (shortcut, debugger)
  • pytest untuk testing
  • requests untuk HTTP

Output

  • Minimal 1 mini project di GitHub
  • Minimal 30 entri jurnal harian
  • Anki deck 60+ cards
  • Refactor 1 code lama
  • Selesaikan kelas Dicoding "Memulai Pemrograman dengan Python"

Mental Model

  • Bisa baca kode Python orang lain dengan paham
  • Bisa decompose masalah jadi function-function kecil
  • Bisa identifikasi kapan pakai list vs dict vs set
  • Tahu kapan butuh OOP vs functional approach
  • Bisa debug dengan sistematis (baca traceback, isolate error)

Pesan Penutup Fase 2

Selamat. Kamu baru saja kuasai Python sebagai alat — bukan sekedar bisa baca, tapi bisa bikin software.

Banyak orang berhenti di "bisa Python" — tahu syntax. Yang membedakan adalah bisa membuat sesuatu yang berguna, debug saat error, dan organisir code yang maintainable.

Kamu sekarang ada di kelompok kedua.

Mulai sekarang, Python akan jadi bahasa kerja sehari-hari kamu. Di Fase 3-7, kita akan pakai Python sebagai alat, bukan subject lagi.


Selanjutnya: Fase 3 — Prompt Engineering + Math Intuition

Sebelum lanjut, istirahat 1 hari. Otak butuh konsolidasi. Lalu mulai Fase 3 dengan fresh.