Ekstrakurikuler CSSE: Computer Science & Software Engineering (Python)
Level menengah Cek Kelayakan Tiket Bioskop (nested if: umur + rating film) dan challenge Chatbot Jurusan BINUS (banyak cabang elif + .lower() agar input huruf besar-kecil tetap cocok).
input(), operator, dan if/elif/else dalam satu program utuh.Hari ini siswa menempuh barisan ke-8 dari 17 — 47% perjalanan:
| Waktu | Blok | Aktivitas |
|---|---|---|
| 10' | Pembuka | Cover sesi, baca tujuan bersama, rekap Sesi 07 (if/elif/else + indentasi) dan framing: "hari ini tidak ada materi baru — ada proyek pertamamu" |
| 15' | Brainstorm | Pilih proyek: baseline Sistem Penilaian Siswa (wajib bisa), menengah Cek Tiket Bioskop, challenge Chatbot Jurusan BINUS — siswa menulis syarat keputusannya sebagai kalimat dulu |
| 20' | Rancang alur | Flowchart di kertas: mulai → input → belah ketupat keputusan → cabang output → selesai; guru cek alur tiap siswa sebelum semua pindah ke komputer |
| 45' | Kerja coding | Bangun program bertahap: input dulu (uji), lalu satu keputusan (uji), lalu semua cabang (uji) — guru dampingi individual, ini titik jawab utang konsep |
| 20' | Demo & feedback | Presentasi singkat 2-3 siswa: demo live + tunjukkan satu bagian kode yang dibanggakan; kelas memberi umpan balik |
| 10' | Penutup | Rangkuman 5 poin, refleksi singkat ("syarat mana yang paling sulit dirumuskan?"), preview Sesi 09 (Looping) |
Naik mobil jauh, orang buka peta dulu — bukan nyala mesin lalu bingung di lampu merah pertama. Flowchart = peta, coding = menyetir. Kurikulum resmi menegaskan urutannya: rancang alur dulu, baru coding. Keuntungan praktisnya nyata saat jam coding: kalau alur sudah di kertas, siswa yang buntu tinggal melihat "cabang mana yang belum saya tulis?" — bukan membayangkan semuanya dari nol. Simbol yang dipakai pun bukan baru: oval (mulai/selesai) dan belah ketupat (keputusan) sudah dibaca di Sesi 01-02 — minggu ini simbol itu kembali, kali ini jadi program sungguhan.
Hari ini tidak ada sintaks baru — dan itu harus diucapkan dengan bangga. Empat bekal yang selama ini dilatih terpisah kini jadi satu: variabel & input (Sesi 04-05) menyimpan data yang masuk, operator (Sesi 06) menghitung dan menghasilkan True/False, percabangan (Sesi 07) memilih jalan berdasarkan jawaban itu. Pola berpikir yang perlu ditekankan: setiap belah ketupat di flowchart = satu baris if; setiap panah keluar = satu cabang yang dijalankan. Kalau siswa bisa menggambar alurnya, mereka hampir pasti bisa menulis kodenya.
Program keputusan yang "selesai" bukan yang sekali jalan — tapi yang menjawab benar untuk beberapa kasus: nilai tinggi, batas persis, nilai rendah, dan (jika relevan) input tak terduga. Latih kebiasaan "kartu kasus": tulis 3-4 kombinasi input dan jawaban yang diharapkan sebelum run, lalu centang satu per satu. Inilah cara paling awal mendeteksi bug yang tidak berbunyi — program jalan tanpa error tapi cabangnya salah, dan itu tidak bisa ditemukan dengan satu percobaan.
Presentasi singkat bukan formalitas — itu latihan menegaskan pemahaman. Format yang disarankan (juga jembatan ke Final Project di Sesi 17): tunjukkan masalah → demo live → sebut satu bagian kode yang dibanggakan. Dengan memilih sendiri satu potongan kode untuk dibanggakan, siswa memaksa dirinya mengidentifikasi bagian yang benar-benar dipahami — dan guru mendapat sinyal cepat bagian mana yang perlu diperkuat.
Tampilkan tiga level, minta setiap siswa (atau pasangan) memilih dan menulis syarat keputusannya sebagai kalimat dulu:
elif banyak + .lower()).Aturan pilihannya satu kalimat: baseline harus dulu selesai utuh — level lain hanya untuk yang baseline-nya sudah jalan.
Di kertas: oval "Mulai", jajar genjang "input nama, nilai, kehadiran", belah ketupat untuk tiap keputusan, persegi untuk tiap output, oval "Selesai". Tekankan pemetaan yang sama seperti materi: satu ketupat = satu if. Berkeliling dan cek alur tiap siswa di tahap ini — lebih murah membetulkan peta daripada membetulkan kode.
Minta siswa membangun bertahap dan menguji di tiap tahap — bukan menulis semua lalu run sekali:
Tahap A — input dulu (uji):
nama = input("Nama siswa: ")
nilai = int(input("Nilai angka (0-100): "))
hadir = int(input("Kehadiran (%): "))
print(nama, nilai, hadir) # cek: data masuk semua?
Tahap B — satu keputusan dulu (uji):
if nilai >= 60:
print("Tuntas")
else:
print("Belum tuntas")
Tahap C — lengkapi semua cabang (uji 4 kasus): predikat A/B/C/D/E + status lulus. Kartu kasus yang disarankan: 95/90, 75/80 (tepat di batas!), 60/70, 40/90.
2-3 siswa presentasi: masalah → demo live → satu potongan kode dibanggakan → tanya balik ke kelas: "kalau inputnya X, hasilnya apa?" Kelas menebak, siswa mengetik, program membuktikan. Umpan balik wajib berorientasi "apa yang menarik" dulu, saran sesudahnya.
Rangkum 5 poin: alur dulu baru kode, satu ketupat = satu if, uji beberapa skenario, tahap kecil lebih aman dari tulis-semua-sekali, demo = bukti paham. Refleksi singkat lisan: "syarat keputusan mana yang paling sulit dirumuskan, dan kenapa?" Lalu preview Sesi 09.
Solusi baseline lengkap — program Sistem Penilaian Siswa yang utuh, jalan tanpa error, dan menangani beberapa kasus. Ini pengembangan penuh dari kode.py stub:
# Sesi 08 - Mini Project 1: Decision Making
# Baseline: Sistem Penilaian Siswa
# Flow: input nama, nilai, kehadiran -> predikat huruf -> status lulus/tidak
print("=== SISTEM PENILAIAN SISWA ===")
nama = input("Nama siswa: ") # contoh: Budi
nilai = int(input("Nilai angka (0-100): ")) # contoh: 82
hadir = int(input("Kehadiran (%): ")) # contoh: 85
# --- Keputusan 1: predikat huruf (urutan tinggi -> rendah) ---
if nilai >= 90:
grade = "A"
elif nilai >= 75:
grade = "B"
elif nilai >= 60:
grade = "C"
else:
grade = "D"
# --- Keputusan 2: status lulus (dua syarat, digabung and) ---
lulus = nilai >= 75 and hadir >= 80
# --- Output hasil ---
print()
print("--- HASIL ---")
print("Nama :", nama)
print("Nilai :", nilai)
print("Predikat:", grade)
if lulus:
print("Status : LULUS - pertahankan!")
else:
print("Status : TIDAK LULUS - ayo semangat, masih bisa diperbaiki!")
# Output kalau diisi seperti contoh:
# === SISTEM PENILAIAN SISWA ===
# Nama siswa: Budi
# Nilai angka (0-100): 82
# Kehadiran (%): 85
#
# --- HASIL ---
# Nama : Budi
# Nilai : 82
# Predikat: B
# Status : LULUS - pertahankan!
Empat kartu kasus untuk memastikan "menangani beberapa kasus": Budi 95/90 → A, LULUS · Sinta 75/80 → B, LULUS (tepat di batas, dua-duanya) · Rio 60/70 → C, TIDAK LULUS (nilai cukup, kehadiran kurang) · Ani 40/90 → D, TIDAK LULUS.
Untuk siswa yang cepat selesai, arahkan ke level menengah — inti tambahannya nested if (keputusan di dalam keputusan):
# Level menengah: Cek Kelayakan Tiket Bioskop (inti keputusannya)
umur = int(input("Umur: "))
rating = input("Rating film (SU/13+/R): ").lower()
if umur >= 17:
print("Boleh menonton semua film")
elif rating == "su":
print("Boleh menonton film SU")
elif rating == "13+" and umur >= 13:
print("Boleh menonton film 13+")
else:
print("Belum boleh menonton film ini")
Dan untuk challenge, kuncinya satu: .lower() membuat "Informatika", "INFORMATIKA", dan "informatika" dicocokkan sama rata — gabungkan dengan elif berlapis untuk tiap jurusan.
| Masalah | Penyebab | Tindakan Perbaikan |
|---|---|---|
ValueError: invalid literal for int() |
Nilai diketik dengan teks ("delapan puluh") atau spasi. | Alarm input, bukan program rusak. Ketik angka murni. Validasi penuh belum dibahas — cukup dicatat sebagai "skenario tak terduga". |
| Predikat selalu "D" walau nilainya tinggi | Urutan elif terbalik: cabang longgar (>= 60) menangkap dulu semua nilai di atasnya. |
Tracing dengan nilai 95: masuk cabang mana? Perbaiki urutan tinggi → rendah, else paling bawah. |
| Status lulus terbalik untuk kehadiran | Logika gabungan salah: nilai >= 75 or hadir >= 80 (salah satu cukup) padahal aturannya dua-duanya harus. |
Uji kartu kasus 60/70: dengan or program bilang lulus — tunjukkan kelemahannya. Ganti ke and, uji ulang 4 kartu. |
| Program jalan tapi teks hasil tidak muncul | print hasil tidak menjorok ke dalam if (atau sebaliknya) — keputusannya tidak pernah dieksekusi. |
Error senyap khas Sesi 07. Bandingkan indentasi blok luar vs dalam; uji ulang dengan dua input berbeda. |
| Buntu — kode tidak selesai di menit ke-20 kerja coding | Menulis semua sekaligus tanpa menguji tahapan, atau alur belum jelas di kertas. | Kembali ke Tahap A: buat input dulu, uji, tambah satu keputusan, uji lagi. Kalau flowchart-nya belum ada, buat minimalis dulu (3 kotak) lalu koding versi kecil. |
| Kejar challenge, baseline belum utuh | Terlena level menengah/challenge padahal wajibnya belum jalan. | Terapkan aturan sesi: baseline selesai utuh dulu (kriteria lulus proyek), baru naik level. Guru tegaskan ini bukan hukuman — urutan yang aman. |
input() yang sudah dikonversi.else sebagai bantalan.and — dan siswa bisa menjelaskan kenapa bukan or.Programmu minggu ini bisa memutuskan sekali lalu selesai. Tapi bayangkan siswa yang datang sendirian ke program itu — mau input nilai 5 teman, programmu harus di-run 5 kali. Minggu depan kita beri kemampuan yang selama ini hilang: mengulang. Satu blok kode, dijalankan berkali-kali — dari situ nanti lahir game "Tebak Angka" di Sesi 09 dan pola-pola bintang di Sesi 10.
# Teaser: cetak "LULUS" untuk 5 siswa - tanpa menulis if 5 kali
for i in range(5):
print("Cek siswa nomor", i + 1)
# (minggu depan if-nya digabung ke dalam loop)
Loop adalah bekal langsung untuk Mini Project 2 (Sesi 14): aplikasi menu yang harus terus bertanya sampai user memilih keluar — persis pola "ulang sampai kondisi terpenuhi".