Ekstrakurikuler CSSE: Computer Science & Software Engineering (Python)
Bahas "jalur lanjut" setelah ekstrakurikuler: portofolio proyek di GitHub, materi Python berikutnya (OOP, modul eksternal), dan ide pengembangan Final Project versi 2.0.
Hari ini siswa menempuh barisan ke-17 dari 17 — 100% perjalanan:
| Waktu | Blok | Aktivitas |
|---|---|---|
| 10' | Pembukaan | Sambutan + aturan presentasi: 5–7 menit/kelompok, urutan Masalah → Fitur → Demo Live → kode dibanggakan → Q&A; tech check proyektor & laptop; tepuk tangan untuk SEMUA tim sebelum mulai |
| 60' | Presentasi & demo | Kelompok tampil berurutan (5–7 menit/kelompok + rotasi cepat antar kelompok); guru & siswa mengisi lembar rubrik: Fungsi jalan 30% · Struktur kode 25% · Logika 20% · Demo & Penjelasan 15% · Kreativitas 10% |
| 30' | Tanya jawab & umpan balik | Sisa pertanyaan dibahas terbuka; umpan balik berbasis rubrik agar konsisten dengan Sesi 16; apresiasi keputusan teknis menarik ("kenapa pakai list[dict]?") |
| 15' | Refleksi & penutupan | Refleksi semester 17 pertemuan: "1 hal yang dulu terasa mustahil, sekarang bisa kamu jelaskan ke adik kelas?"; hambatan & cara mengatasi; pengembangan lanjut |
| 5' | Pengumuman & apresiasi | Pengumuman rubrik, apresiasi kemajuan (bukan hanya hasil akhir), penutupan program ekstrakurikuler |
Analogi: demo itu seperti jualan di pentas seni — kamu punya 6 menit untuk membuat orang meyakinkan bahwa produkmu berguna. yang dinilai bukan seberapa canggih aplikasimu, tapi seberapa jelas kamu menyampaikannya. Karena itu urutannya Masalah → Fitur → Demo Live → kode dibanggakan → Q&A: mulai dari masalah nyata ("nilai kelas masih dicatat di kertas, sering hilang") supaya audiens peduli, baru perlihatkan jawabannya. Kode yang jalan itu hebat — kode yang bisa kamu jelaskan itu lebih hebat lagi.
Pertemuan terakhir harus jadi pengalaman yang dinanti, bukan sidang yang ditakuti. Aturan mainnya: tepuk tangan untuk setiap tim, pertanyaan boleh tapi menggurui jangan, dan guru memberi umpan balik berbasis rubrik — bukan perbandingan antar siswa. Apresiasi diberikan untuk kemajuan: siswa yang di Sesi 03 belum berani menulis print dan hari ini mendemokan aplikasi ber-menu adalah bintang hari itu, apa pun nilainya. Suasana suportif bukan turunkan standar — rubrik tetap rubrik — tapi jamin semua berani naik panggung.
Penilaian hari ini konsisten dengan penilaian development kemarin: Fungsi jalan 30% · Struktur kode 25% · Logika 20% · Demo & Penjelasan 15% · Kreativitas 10%. Artinya: siswa yang proyeknya jalan sempurna sejak Sesi 16 sudah membayar setengah tiketnya. Bagikan rubrik di awal agar tiap kelompok tahu di mana fokus: fungsi jalan adalah bobot terbesar — jangan korbankan waktu demo untuk fitur bonus yang belum stabil.
Program bisa error persis di depan kelas — itu normal, bahkan developer profesional mengalaminya saat demo. Yang membedakan pemula dan siap-panggung: siapkan cadangan. Plan B minimal: video/screenshot fitur berjalan yang direkam di rumah, dan kalimat penyelamat yang jujur: "kemarin fitur ini jalan — mari saya tunjukkan lewat rekamannya sementara saya cek errornya". Error tetap bukan aib: kalau kamu bisa bilang "ini ValueError dari input huruf, penanganannya di sini — akan saya perbaiki", itu malah poin Demo & Penjelasan.
Sampaikan aturan main sebelum tim pertama naik:
Bagikan lembar rubrik ke semua penilai (guru + siswa penilai): Fungsi jalan 30% · Struktur kode 25% · Logika 20% · Demo & Penjelasan 15% · Kreativitas 10%.
Setiap kelompok mengikuti kerangka waktu berikut (total 6 menit contoh):
| Bagian | Waktu | Isi |
|---|---|---|
| Masalah | 30 detik | 1 kalimat: aplikasi untuk siapa, menyelesaikan apa |
| Fitur | 45 detik | Sebut 4–5 fitur menu tanpa demo dulu |
| Demo Live | 2–3 menit | Jalankan aplikasi: tambah data → lihat → cari → statistik → keluar; tunjukkan data selamat setelah restart |
| Kode dibanggakan | 1 menit | 1 fungsi saja, jelaskan dengan kata sendiri |
| Q&A | 1–2 menit | Jawab pertanyaan — jujur kalau belum tahu |
Tugas guru selama sesi: catat catatan rubrik per kelompok, jaga waktu, dan bantu transisi antar kelompok agar tidak makan waktu. Siswa penonton mengisi lembar umpan balik sederhana (1 hal yang keren + 1 saran).
Setelah semua tampil, buka sesi tanya-jawab bersama. Pancing dengan pertanyaan teknis yang menunjukkan logika:
list[dict], bukan dua list terpisah?" (jawaban harapan: satu record = satu dict, mudah diambah/dihapus sebagai satu kesatuan)try-except menolak dengan sopan)save tiap perubahan, load di awal)Beri umpan balik per kelompok dengan merujuk angka rubrik — bukan "bagus" kosong, tapi "Struktur kodemu rapi karena 1 menu = 1 fungsi".
Siswa mengisi refleksi tertulis singkat (tidak dinilai — untuk dirinya sendiri dan portofolio):
Pancing dengan pertanyaan kunci: "apa 1 hal yang dulu terasa mustahil, sekarang bisa kamu jelaskan ke adik kelas?" — dari flowchart di kertas (Sesi 01–02) sampai aplikasi ber-menu + file hari ini, itu jarak yang luar biasa.
Umumkan hasil rubrik dengan framing apresiasi kemajuan — sebut hal konkret tiap kelompok yang berkembang dari Sesi 14 (Mini Project 2). Tutup program: "17 pertemuan, dari print("Hello World") sampai aplikasi yang kamu rancang sendiri. Setiap baris kode yang kamu tulis adalah bukti: kamu sudah jadi programmer pemula yang sesungguhnya."
Sebelum sesi dimulai (atau saat pergantian kelompok), pastikan checklist panggung ini terpenuhi:
Hari ini bukan hari menulis kode baru — tapi memilih potongan kode yang dibanggakan. Berikut contoh fungsi yang layak dipamerkan saat demo (dari aplikasi Sesi 16), plus alasan kenapa dia menarik dijelaskan:
# Potongan kode "dibanggakan" untuk demo — pilih SATU fungsi
# yang bisa kamu jelaskan paling meyakinkan.
# Kandidat 1: cari_data() — menunjukkan logika pencarian case-insensitive
def cari_data(kata):
hasil = []
for item in data:
if kata.lower() in item["nama"].lower():
hasil.append(item)
return hasil
# Alasan layak dibanggakan:
# - .lower() di dua sisi agar "budi" ketemu "Budi" (case-insensitive)
# - in untuk pencarian sebagian ("bud" tetap ketemu)
# - mengembalikan list hasil: kosong berarti tidak ketemu (jujur)
# Kandidat 2: tambah_data() — menunjukkan try-except pelindung input
def tambah_data():
nama = input("Nama: ")
while True:
try:
nilai = int(input("Nilai (0-100): "))
break
except ValueError:
print("Harus angka! Contoh: 85")
data.append({"nama": nama, "nilai": nilai})
simpan_file()
print(f"Data {nama} ditambahkan.")
# Alasan layak dibanggakan:
# - while True + try-except: tanya ulang sampai input sah (anti crash)
# - append + simpan_file(): data langsung aman ke file
# - ini jawaban terbaik untuk pertanyaan Q&A "kalau user nakal?"
# Kandidat 3: statistik() — menunjukkan list comprehension + agregasi
def statistik():
if len(data) == 0:
print("Belum ada data untuk dihitung.")
return
nilai = [item["nilai"] for item in data]
rata = sum(nilai) / len(nilai)
print(f"Jumlah data : {len(nilai)}")
print(f"Nilai tertinggi : {max(nilai)}")
print(f"Nilai terendah : {min(nilai)}")
print(f"Rata-rata : {rata:.1f}")
# Alasan layak dibanggakan:
# - list comprehension merapikan pengambilan kolom nilai
# - sum/max/min: tiga agregasi dari materi list (Sesi 11)
# - penanganan data kosong lebih dulu (belum ada data = tidak crash)
Penjelasan singkat: ketiganya berasal dari baseline aplikasi Sesi 16. Saat demo, tunjukkan fungsi pilihanmu di layar, jalankan fiturnya secara live, lalu jelaskan maksimal 3 poin kenapa ditulis begitu — 1 menit cukup. Daftar fitur siap demo (dari baseline B): Lihat, Tambah, Cari, Hapus, Statistik, Keluar + bukti file (data selamat setelah restart). Skenario demo 2 menit yang terbukti aman: tambah → lihat → cari (yang ada & yang tidak ada) → statistik → keluar → jalan lagi → data masih ada.
| Masalah | Penyebab | Tindakan Perbaikan |
|---|---|---|
| Program error persis saat demo di depan kelas | Input berbeda dari yang diuji (nama dengan spasi, huruf di kolom angka), file data.txt berada di folder lain. | Tenangkan: "error itu alarm, bukan kegagalan". Baca errornya bersama; kalau 1 menit tidak selesai, lompat ke Plan B (video/screenshot) dan lanjut cerita. Jangan biarkan 3 menit habis untuk 1 bug. |
| Waktu demo kebablasan (10+ menit, kelompok lain menunggu) | Demo semua fitur satu per satu + Q&A memanjang. | Timer + sinyal "1 menit tersisa" sejak awal. Batasi demo live ke skenario inti (tambah → lihat → cari → statistik → keluar); fitur bonus cukup diceritakan. |
| Tech check gagal: program tidak muncul di proyektor | Kabel/HDMI, resolusi, atau laptop sleep; terminal terlalu kecil dibaca dari belakang. | Tech check SEBELUM sesi dimulai (bukan saat kelompok pertama naik). Font terminal diperbesar (Ctrl + +), matikan sleep. Punya laptop cadangan bila memungkinkan. |
| Siswa gagap menjelaskan kode sendiri saat Q&A | Ujian menulis/menyontek tahap akhir (Sesi 15) — kode asing di dalam program. | Frame ulang: minta jelaskan yang ia tahu saja (yang ia tulis); bagian yang belum dipahami diakui jujur. Umpan baliknya jelas: pahami sebelum demo berikutnya. Ini pelajaran etika AI yang nyata. |
| Suasana tegang / siswa takut ditertawakan | Budaya menyindir saat demo temuan error, atau pertanyaan bernada menggurui. | Tegakkan aturan dari awal: tepuk tangan tiap tim, pertanyaan ya, ejekan tidak. Guru memberi contoh cara menanyakan yang membangun. Apresiasi kemajuan spesifik tiap kelompok. |
| Kelompok tidak membawa proyek / file korup | Lupa kopi file, laptop lupa diisi, tidak ada backup. | Terima presentasi tanpa demo (jelaskan fitur + tunjukkan kode), nilai bagian yang bisa dinilai; catat sebagai pelajaran: backup adalah kebiasaan developer. Tawarkan sesi perbaikan singkat setelah kelas. |
Hari ini garis finis. Ingat kembali perjalananmu: 17 pertemuan lalu flowchart masih di kertas dan print terasa ajaib — hari ini kamu mendemokan aplikasi ber-menu yang datanya selamat di file, yang kamu rancang dan perbaiki sendiri. Kecilkan begitu: setiap konsep yang dulu asing (while True, list[dict], try-except) sekarang jadi alat yang kamu pegang. Itu bukan bakat — itu 17 pertemuan kerja yang menumpuk.
Setelah ekstrakurikuler usai, jalanmu baru mulai. Tiga langkah lanjut yang bisa langsung dijalankan:
csv untuk data sesungguhnya), lalu GUI/web sederhana. Semua fondasinya sudah kamu punya.# Bukti perjalananmu — dari baris pertama 17 pertemuan lalu...
print("Hello World")
# ...sampai hari ini: aplikasimu sendiri, jalan utuh, data aman.
# Pertanyaan penutupnya bukan "sudah selesai?" —
# tapi "selanjutnya saya bangun apa?"
Semester Ganjil 2026/2027 resmi tamat. Terima kasih sudah bertahan sampai baris terakhir — jaga kebiasaan baikmu: alur dulu sebelum kode, satu fitur selesai daripada lima setengah jadi, dan error selalu alarm. Sampai jumpa di proyek berikutnya.