Ekstrakurikuler CSSE: Computer Science & Software Engineering (Python)
Minta AI melakukan refactor terhadap salah satu fungsi lamamu agar lebih rapi, lalu bandingkan versi sebelum–sesudah; plus latihan "tes paham": jelaskan kode hasil AI ke teman tanpa melihat layar.
autocomplete, generate kode baru, dan debug.Hari ini siswa menempuh barisan ke-15 dari 17 — 88% perjalanan:
| Waktu | Blok | Aktivitas |
|---|---|---|
| 10' | Pembuka | Cover, tujuan sesi, rekap Sesi 14 (Mini Project 2: aplikasi menu + list + file) — proyek itu jadi bahan latihan minggu ini |
| 15' | Demo | Demo "AI menghasilkan fungsi sederhana" — output AI disimulasikan sebagai teks di layar (kelas offline), lalu kode disalin & dijalankan |
| 25' | Materi 1 | Cara kerja AI coding assistant (autocomplete super) + pola prompt KBT: Konteks, Bahasa, Tujuan; bedah contoh prompt buruk vs baik |
| 30' | Praktik | Siklus lengkap: tulis prompt → baca hasil AI (teks) → salin → jalankan → uji kasus tepi (75 pas, nilai aneh) → perbaiki kode AI yang salah logika |
| 10' | Diskusi | Etika & batas: kapan boleh pakai AI, kapan jangan; tes paham "tutup laptop, jelaskan ke teman"; catatan offline dibahas terbuka |
| 10' | Penutup | Rangkuman 5 poin, preview Sesi 16 (Final Project Development), PR opsional: 1 prompt untuk fitur Final Project |
Analogi: autocomplete di HP. Saat chat, HP menebak kata berikutnya dari kamus kata yang pernah kamu pakai. AI coding assistant bekerja sama persis — bedanya kamusnya bukan kata, tapi jutaan kode dari banyak proyek open source. Jadi AI itu seperti asisten magang yang baca buku secepat kilat: kamu minta, dia tulis rapi dalam 3 detik. Tapi magang tetap magang — hasil kerjanya wajib diperiksa bosnya (kamu) sebelum dipakai. AI menebak kode terlihat masuk akal, bukan menjamin kode itu benar.
AI hanya sebagus pertanyaan yang diberikan. Pola yang perlu diingat: KBT.
if/elif/else" → AI menyesuaikan level.status_nilai(nilai) yang mengembalikan "Lulus" jika nilai >= 75, selain itu "Remedial"" → AI tahu persis mau ke mana.Bandungkan dengan prompt buruk "buatin kode nilai" — AI bingung: nilai apa? huruf? lulus? jumlahukan? Makin lengkap KBT, makin tepat hasil.
Ini janji inti sesi 15. AI boleh menulis kode, tapi pemahaman tidak boleh ikut di-outsource. Alat ukurnya sederhana: tutup laptop — kalau kamu bisa menjelaskan tiap baris ke teman, kamu pemilik kode itu. Kalau tidak, kodenya cuma "nganggur" di file-mu dan tidak menambah kemampuanmu. Otot coding seperti otot fisik: kalau selalu minta digendong AI, ototnya tidak tumbuh. Aturan etisnya: boleh minta bantuan, wajib paham hasilnya, haram menyalin buta — terutama saat tugas/ujian yang justru menilai pemahamanmu sendiri.
Verifikasi itu bukan formalitas. AI sering menulis kode yang jalan tapi salah logika (misal ambang kelulusan terbalik), atau gagal di kasus tepi: nilai tepat 75, nilai negatif, nilai di atas 100. Karena itu kunci yang diuji hari ini adalah alat verifikasi: jalankan → baca error → uji kasus tepi → tanya "masuk akal nggak?". Error tetap diperlakukan sebagai alarm, bukan aib — justru saat memperbaiki kode AI, kamu belajar lebih banyak daripada saat menyalinnya.
Guru menampilkan prompt berikut (tuliskan di papan, ini contoh KBT lengkap):
Prompt (KBT):
[Konteks] Aku siswa SMA yang sedang belajar Python dasar (baru sampai function).
[Bahasa] Jawab dengan kode Python, singkat, pakai komentar.
[Tujuan] Buat fungsi luas_persegi_panjang(panjang, lebar) yang
mengembalikan hasil kali keduanya, lalu contoh pemanggilannya.
Lalu tampilkan "hasil AI" — versi teks berikut (kelas offline; hasil AI sudah disiapkan):
# Hasil AI (disimulasikan sebagai teks):
def luas_persegi_panjang(panjang, lebar):
# fungsi mengembalikan luas = panjang * lebar
return panjang * lebar
hasil_ai = luas_persegi_panjang(4, 5)
print("Hasil contoh:", hasil_ai)
Minta siswa menyalin kode Python-nya (bukan prompt-nya) ke file demo_ai.py dan menjalankan (Run ▶). Diskusikan: hasilnya 20 — benar? Coba juga 7 × 3. Kesimpulan demo: dari nol jadi fungsi dalam hitungan detik — kalau promptnya jelas.
Bandingkan dua prompt di papan, tanyakan "apa beda hasil yang kira-kira keluar?"
Prompt buruk: "buatin kode nilai"
Prompt KBT: [Konteks] Aku siswa SMA, Python dasar, sudah kenal if/elif/else.
[Bahasa] Python.
[Tujuan] Buat fungsi status_nilai(nilai) yang mengembalikan
"Lulus" jika nilai >= 75, selain itu "Remedial".
Sertakan 3 contoh pemanggilan: 82, 40, dan 75.
Diskusikan kenapa prompt buruk meleset: "nilai" bisa berarti rata-rata, huruf A–E, atau status lulus — AI nebak, dan tebakannya mungkin bukan yang kamu mau. Lalu bedah hasil AI untuk prompt KBT (teks):
# Hasil AI (disimulasikan sebagai teks):
def status_nilai(nilai):
if nilai >= 75:
return "Lulus"
else:
return "Remedial"
print(status_nilai(82)) # Lulus
print(status_nilai(40)) # Remedial
print(status_nilai(75)) # Lulus
Sekali lagi: siswa menyalin, menjalankan, membandingkan output dengan yang dijanjikan komentar. Tekankan kebiasaan: klaim di komentar vs output nyata — dua hal yang harus selalu dicocokkan.
Kode AI di Langkah 2 terlihat benar. Sekarang jadilah bos yang curiga. Uji 3 kasus tepi:
Lulus (karena >=). Kalau soalmu maksudnya 75 masih Remedial, prompt-nya yang harus berubah, bukan nebak-nebak hasil AI.-10 dan 150. Kode AI tetap menjawab "Remedial"/"Lulus" — padahal input itu tidak sah. AI tidak menambahkan pengecekan karena kamu tidak minta!status_nilai("delapan puluh") meledak TypeError. Ini alarm bagus untuk bahas try-except yang akan dipakai di Final Project.Kesimpulan langkah ini: AI tidak tahu aturanmu kecuali kamu tulis di prompt. Versi prompt yang lebih baik minta validasi:
[Tujuan] Buat fungsi status_nilai(nilai) yang mengembalikan "Lulus"
jika 75 <= nilai <= 100, "Remedial" jika 0 <= nilai < 75,
dan "Nilai tidak valid" untuk input lain di luar 0-100.
Guru menampilkan "hasil AI" yang sengaja mengandung bug halus (bikin sendiri, jangan disebut dulu ada bug-nya):
# Hasil AI (disimulasikan sebagai teks):
def status_nilai(nilai):
if nilai > 75:
return "Lulus"
else:
return "Remedial"
Tugas siswa: jalankan status_nilai(75) → muncul Remedial, padahal harusnya Lulus. Ini logical error: kode jalan tanpa SyntaxError tapi logikanya salah — jenis error tersulit karena tidak ada alarm bunyi. Perbaikan: > 75 menjadi >= 75. Framing: menemukan bug dari hasil AI bukan bukti AI jelek — itu bukti verifikasimu bekerja.
Diskusi kelompok kecil, 3 pertanyaan pemicu:
Tutup dengan pertanyaan jujur: kalau besok tanpa AI, kamu masih bisa nulis status_nilai sendiri? Harusnya bisa — itu targetnya.
Rangkum 5 poin: (1) AI = autocomplete super dari jutaan kode, (2) prompt KBT = Konteks-Bahasa-Tujuan, (3) verifikasi: jalankan + uji kasus tepi + cek logika, (4) AI membantu, kamu yang paham — tes paham, (5) ketergantungan membuat otot coding tidak tumbuh. Lalu preview minggu depan dan berikan PR opsional: tulis 1 prompt KBT untuk satu fitur Final Project-mu (domain bebas: Nilai Siswa, Perpustakaan, Kasir, Kontak, Todo) — akan langsung terpakai di Sesi 16.
Karena kelas offline, solusi utuh hari ini berbentuk simulator mini: program yang memainkan seluruh siklus "prompt → hasil AI (teks) → verifikasi" tanpa internet. Simpan sebagai ai_assistant_sim.py dan jalankan:
# AI-Assistant Simulator — Sesi 15 (offline)
# Siklus lengkap: prompt KBT -> hasil AI (teks) -> verifikasi
def luas_persegi_panjang(panjang, lebar):
# Hasil "AI" untuk prompt demo (Langkah 1)
return panjang * lebar
def status_nilai(nilai):
# Hasil "AI" untuk prompt KBT (Langkah 2-3), sudah diperbaiki (Langkah 4)
if 0 <= nilai < 75:
return "Remedial"
elif 75 <= nilai <= 100:
return "Lulus"
else:
return "Nilai tidak valid"
# ---- Bagian 1: demo luas ----
prompt = "[Konteks] siswa SMA Python dasar | [Bahasa] Python | \
[Tujuan] fungsi luas_persegi_panjang(panjang, lebar)"
print("Prompt :", prompt)
hasil_ai = luas_persegi_panjang(4, 5)
print("Hasil contoh:", hasil_ai) # Hasil contoh: 20
print("Verifikasi:", hasil_ai == 20) # Verifikasi: True
# ---- Bagian 2: verifikasi status_nilai dengan kasus tepi ----
uji = [82, 40, 75, -10, 150]
for n in uji:
print(f"status_nilai({n}) => {status_nilai(n)}")
# status_nilai(82) => Lulus
# status_nilai(40) => Remedial
# status_nilai(75) => Lulus (kasus tepi: pas 75 masuk Lulus)
# status_nilai(-10) => Nilai tidak valid
# status_nilai(150) => Nilai tidak valid
# ---- Bagian 3: prompt Final Project (PR) ----
prompt_pr = ("[Konteks] Final Project CLI Python, list[dict] + menu while True | "
"[Bahasa] Python | [Tujuan] fungsi tambah_data() + validasi try-except")
print("PR — prompt untuk Final Project:")
print(prompt_pr)
Penjelasan singkat: fungsi status_nilai di sini adalah "hasil AI yang sudah diverifikasi & diperbaiki" — rentang 0–100 dijaga, dan kasus tepi 75 jatuh ke Lulus karena 75 <= nilai. Bagian 2 adalah kebiasaan verifikasi yang wajib terbawa: uji bukan cuma kasus normal, tapi juga tepi batas dan nilai aneh. Bagian 3 menunjukkan prompt KBT langsung dipakai untuk kebutuhan nyata minggu depan.
| Masalah | Penyebab | Tindakan Perbaikan |
|---|---|---|
| Siswa langsung salin kode "hasil AI" tanpa membaca | Terlena cepatnya — kodenya jalan, jadi dianggap selesai. | Terapkan tes paham: tutup laptop, jelaskan tiap baris ke teman. Yang belum bisa → baca ulang bersama, baru lanjut. |
| Kode hasil AI error saat dijalankan (IndentationError / NameError) | Salin-tempel kacau: indentasi campur tab-spasi, atau nama variabel beda dengan pemanggilan. | Baca pesan error dari baris teratas. Baca error sebagai alarm: "baris berapa, keliru apa?" Ini latihan debug standar. |
| Prompt terlalu pendek, hasil "meleset" | Prompt tanpa KBT — "buatin kode nilai" memicu AI nebak-nebak. | Bedah bersama: mana Konteks, Bahasa, Tujuan yang hilang? Tulis ulang prompt, bandingkan hasilnya. |
| Siswa kecewa: "juga harusnya kita pakai ChatGPT beneran" | Ekspektasi akses tool live, kelas tanpa internet. | Framing offline: yang dilatih adalah keterampilan (prompt + verifikasi), bukan tool-nya. Prompt yang ditulis hari ini tetap bisa dipakai online di rumah. |
| Kode AI jalan tanpa error tapi jawabannya salah (75 → Remedial) | Logical error: operator > vs >=; tidak ada pesan error karena kode sah. |
Selalu ada "uji kasus tepi" (75, 0, 100, -10). Cocokkan output dengan aturan yang diminta di prompt. |
| Siswa jadi tergantung: tanpa AI panik dan tidak bisa menulis apa-apa | AI dipakai sebagai gendong, bukan asisten. | Aturan otot coding: kerjakan sendiri dulu, minta AI (di sini: simulasi teks) hanya setelah usaha mandiri. Tanya: "kalau besok tanpa AI, kamu masih bisa?" |
> → >=).Hari ini kamu belajar meminta bantuan asisten yang cepat namun butuh diperiksa. Minggu depan Final Project Development: semua bekal 14 pertemuan — variabel, list, fungsi, file, try-except — dirangkai jadi satu aplikasi utuh berbasis menu + file. AI (dalam bentuk apa pun) boleh jadi asisten, tapi kamu bosnya: proyek jalan karena keputusanmu. Pilih domainmu minggu ini: Nilai Siswa, Perpustakaan Mini, Kasir Warung, Kontak, atau Todo.
# Kerangka yang akan kamu bangun minggu depan:
data = [] # list[dict] — semua catatanmu tinggal di sini
while True:
print("1. Lihat 2. Tambah 3. Cari 4. Hapus 5. Statistik 6. Keluar")
pilihan = input("Pilih menu: ")
if pilihan == "6":
print("Sampai jumpa!")
break
Menu while True ini adalah pintu masuk aplikasimu — di Sesi 16 kita isi tiap opsi dengan fungsi, lalu simpan datanya ke file.