- Halaman Nilai: tabel "Nilai per Komponen" (rata-rata skor mentah tiap sesi, bisa diedit langsung) berdampingan dengan grid Sub-CPMK yang tetap presisi; kolom persentase ternilai di Hasil Ketercapaian. - Komponen Tugas: sesi bisa menyasar subset Sub-CPMK (RPS tetap batasannya), lengkap dengan field ala RTM (bentuk tugas, deskripsi, metode, luaran, indikator/bobot, jadwal) dan tombol isi-otomatis per bentuk tugas. - RPS: auto-save berkala sebagai draft, tombol ke atas, validasi total bobot komponen 100% saat ditandai selesai, komponen berbobot kosong disembunyikan dari halaman Nilai. - Admin: tampilkan kelas yang tersedia dari data mahasiswa saat mengatur penugasan dosen per kelas. - Perbaikan step="any" pada input nilai (mencegah validasi HTML5 menolak nilai desimal hasil roll-up). - Tambah METODOLOGI_ASESMEN_KOMPONEN.md: dokumentasi metodologi Sub-CPMK vs komponen, termasuk skenario tugas menyasar sebagian Sub-CPMK. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
12 KiB
Metodologi Asesmen: Sub-CPMK vs Komponen
Dokumen ini menjelaskan dua sudut pandang nilai di halaman Input Nilai
(/nilai/<kode>) — bagaimana keduanya dihitung, bagaimana keduanya berbeda,
dan bagaimana pembagian bobot bekerja ketika satu komponen (mis. Tugas) diisi
lewat beberapa sesi yang masing-masing menyasar sebagian Sub-CPMK saja.
Pelengkap RANCANGAN.md §7 (roll-up CPMK/CPL tingkat prodi) dan halaman
/metodologi (dokumentasi resmi untuk asesor) — dokumen ini fokus ke lapisan
di dalam satu MK: dari nilai mentah yang diketik dosen, sampai ke skor
Sub-CPMK yang jadi bahan roll-up CPMK/CPL.
1. Dua tampilan, satu sumber data
| Nilai per Mahasiswa (berdasarkan Sub-CPMK) | Nilai per Komponen (berdasarkan komponen) | |
|---|---|---|
| Kolom tabel | Tiap Sub-CPMK (Sub-051-1, Sub-051-2, ...) | Tiap komponen (Kuis, Tugas, UTS, ...) |
| Isi sel | Skor Sub-CPMK — presisi, boleh beda-beda dalam satu komponen | Rata-rata skor mentah tiap sesi/instrumen komponen itu yang diikuti mahasiswa |
| Dipakai untuk roll-up CPMK/CPL? | Ya — ini sumber kebenaran satu-satunya | Tidak — murni ringkasan & alat edit cepat |
| Efek saat diedit | Menulis persis ke Sub-CPMK yang diketik | Menulis nilai yang sama ke semua Sub-CPMK komponen itu (menimpa presisi bila sebelumnya beda-beda) |
Intinya: Sub-CPMK adalah satuan ukur OBE yang sesungguhnya. "Komponen" (Kuis, Tugas, UTS, dst.) hanyalah label pengelompokan instrumen penilaian — satu komponen bisa mengukur beberapa Sub-CPMK sekaligus, dan satu Sub-CPMK bisa diukur oleh lebih dari satu komponen. "Nilai per Komponen" cuma jendela lain untuk melihat/mengedit data yang sama, dari sudut instrumen bukan dari sudut capaian.
2. Alur data lengkap
flowchart TD
ISI["Isi Nilai per komponen\n(sesi bernama; Tugas boleh pilih\nsubset Sub-CPMK per sesi)"] --> SESI
GRID["Nilai per Mahasiswa\n(ketik langsung per Sub-CPMK)"] --> SK
SESI["sesi[komponen]\n= daftar sesi mentah tiap komponen\n(nim → skor, subset Sub-CPMK opsional)"]
SESI <--> KOMP["Nilai per Komponen\n(tampil = rata-rata sesi;\nketik = sesi baru 'Input Cepat')"]
SESI --> H["skor_dari_sesi()\nbagi kontribusi per Sub-CPMK,\ntertimbang bobot_komponen ÷ n_subs_komponen"]
H --> SK["Skor Sub-CPMK per mahasiswa\n(mahasiswa[].skor — SUMBER KEBENARAN)"]
SK --> CPMK["rollup_mk(): Skor CPMK\n= rata-rata Sub-CPMK pendukung"]
CPMK --> CPL["Skor CPL (dalam MK)\n= rata-rata CPMK pendukung"]
CPMK --> PRODI["rollup_prodi(): CPMK/CPL tingkat prodi\n(lintas semua MK pemikul)"]
SK --> AKHIR["Nilai Akhir mahasiswa\n= Σ(bobot_sub × skor_sub) / Σ bobot_sub\n(bobot dari RPS, bagi rata per komponen)"]
Dua hal penting dari diagram ini:
- "Nilai per Komponen" bukan jalur data terpisah — ia baca/tulis ke sesi
yang sama yang dipakai
skor_dari_sesi(). Angka yang ditampilkan di situ (rata-rata sesi) tidak dipakai langsung oleh rumus manapun — ia sekadar ringkasan. Tapi begitu diedit (diketik ulang), perubahan itu tercatat sebagai sesi baru "Input Cepat" dan ikut dihitung lewat jalur yang sama seperti sesi bernama lain — jadi tetap satu sumber kebenaran, bukan data ganda yang bisa tidak sinkron. - "Nilai Akhir" (nilai huruf/angka mahasiswa) dan "Ketercapaian CPMK/CPL" (OBE) adalah dua rumus berbeda yang sama-sama diturunkan dari skor Sub-CPMK, tapi dengan cara menimbang yang berbeda (lihat §6).
3. Komponen berulang vs sekali-jalan
| Tipe | Contoh | Bisa berapa sesi? | Sub-CPMK per sesi |
|---|---|---|---|
| Berulang | Kuis, Presentasi, Tes Lisan | Banyak — tiap sesi dirata-rata sederhana | Selalu semua Sub-CPMK komponen itu |
| Berulang + subset | Tugas (Observasi/Praktik) | Banyak, tiap sesi = satu tugas bernama | Bisa dipilih sebagian — lihat §4 |
| Sekali-jalan | UTS, UAS | Satu — mengisi lagi menimpa sesi yang sama | Selalu semua Sub-CPMK komponen itu |
Komponen Tugas adalah satu-satunya yang mendukung penyasaran Sub-CPMK per sesi (checklist di form "Isi Nilai"), karena secara alami satu MK sering punya beberapa tugas berbeda yang masing-masing menguji kemampuan (Sub-CPMK) yang berbeda pula — beda dari Kuis/Presentasi yang biasanya satu instrumen menguji semua Sub-CPMK yang sama tiap kali.
4. Sub-CPMK per sesi — bagaimana pembagiannya
Saat RPS menetapkan komponen Tugas mengukur, misalnya, 4 Sub-CPMK dengan bobot 20%, checklist di form "Isi Nilai" selalu dibatasi ke 4 Sub-CPMK itu saja (tak bisa menambah Sub-CPMK di luar yang RPS tetapkan) — bawaannya semua tercentang, dosen tinggal mengurangi centang sesuai Sub-CPMK mana yang benar-benar diuji tugas tsb.
Aturan penggabungan kontribusi (fungsi skor_dari_sesi):
- Untuk tiap Sub-CPMK di dalam komponen itu, sistem mencari semua sesi yang menyasarnya (baik yang eksplisit memilihnya, atau sesi lama yang tak punya pilihan subset sama sekali → dianggap menyasar semua Sub-CPMK komponen).
- Sesi-sesi yang relevan itu dirata-rata sederhana dulu per Sub-CPMK (bukan rata dulu antar-tugas lalu disebar rata — tiap Sub-CPMK punya rata- ratanya sendiri dari tugas yang benar-benar mengukurnya).
- Bobot komponen (20%) dibagi rata ke SEMUA 4 Sub-CPMK milik komponen itu (5% tiap Sub-CPMK) — pembagian ini memakai jumlah Sub-CPMK komponen, bukan jumlah Sub-CPMK sesi tertentu. Bobot per-Sub-CPMK inilah yang dipakai untuk menimbang kalau Sub-CPMK yang sama juga diukur komponen lain (mis. Presentasi turut menilai Sub-052).
flowchart LR
subgraph RPS["RPS: Observasi (Praktik/Tugas) — bobot 20%, 4 Sub-CPMK"]
direction TB
RSub1["Sub-051-1"]
RSub2["Sub-051-2"]
RSub3["Sub-052-1"]
RSub4["Sub-052-2"]
end
T1["Tugas 1: Analisis Kasus\n(centang: Sub-051-1, Sub-051-2)"] --> RSub1
T1 --> RSub2
T2["Tugas 2: Proyek Mini\n(centang: Sub-052-1, Sub-052-2)"] --> RSub3
T2 --> RSub4
T3["Tugas 3: Presentasi Studi Kasus\n(centang: semua 4)"] --> RSub1
T3 --> RSub2
T3 --> RSub3
T3 --> RSub4
5. Skenario nyata: tugas menyasar sebagian Sub-CPMK
Studi kasus dari MK Logika Komputasional — komponen Observasi (Praktik/
Tugas), bobot RPS 20%, mencakup 4 Sub-CPMK: Sub-051-1, Sub-051-2,
Sub-052-1, Sub-052-2.
Penyederhanaan untuk ilustrasi: contoh di bawah mengasumsikan keempat Sub-CPMK itu hanya diukur komponen Tugas, supaya mekanisme pembagiannya kelihatan jelas. Di data MK ini yang sebenarnya,
Sub-051-1/2juga ikut diukur komponen Tes Tulis (UTS) — lihat §5.1 untuk contoh gabungan lintas-komponen dengan angka riil.
Tiga tugas dibuat sepanjang semester:
| Sesi | Sub-CPMK disasar | Nilai per mahasiswa |
|---|---|---|
| Tugas 1: Analisis Kasus | Sub-051-1, Sub-051-2 | Andi 85 · Budi 92 |
| Tugas 2: Proyek Mini | Sub-052-1, Sub-052-2 | Citra 78 · Dedi 88 |
| Tugas 3: Presentasi Studi Kasus | Semua 4 Sub-CPMK | Andi 88 · Budi 90 · Citra 82 · Dedi 86 · Eka 79 |
Hasil skor per Sub-CPMK (rata-rata sederhana dari sesi yang relevan tiap Sub-CPMK):
| Mahasiswa | Sub-051-1 / -2 | Sub-052-1 / -2 | Keterangan |
|---|---|---|---|
| Andi | (85 + 88) / 2 = 86,5 | 88 (dari Tugas 3 saja) | Ikut Tugas 1 & 3 |
| Budi | (92 + 90) / 2 = 91 | 90 (dari Tugas 3 saja) | Ikut Tugas 1 & 3 |
| Citra | 82 (dari Tugas 3 saja) | (78 + 82) / 2 = 80 | Ikut Tugas 2 & 3 |
| Dedi | 86 (dari Tugas 3 saja) | (88 + 86) / 2 = 87 | Ikut Tugas 2 & 3 |
| Eka | 79 (dari Tugas 3 saja) | 79 (dari Tugas 3 saja) | Cuma ikut Tugas 3 |
Perhatikan: Sub-051 dan Sub-052 milik satu mahasiswa boleh berbeda — itu tepat sesuai fakta bahwa Tugas 1 dan Tugas 2 mengukur kemampuan yang berbeda. Ini yang dipakai untuk ketercapaian CPMK051 dan CPMK052 — masing- masing presisi sesuai tugas yang benar-benar mengukurnya, bukan dicampur rata.
Tampilan "Nilai per Komponen" (rata-rata mentah tiap tugas yang diikuti, independen dari Sub-CPMK):
| Mahasiswa | Tugas 1 | Tugas 2 | Tugas 3 | Rata-rata tampil |
|---|---|---|---|---|
| Andi | 85 | — | 88 | (85+88)/2 = 86,5 |
| Budi | 92 | — | 90 | (92+90)/2 = 91 |
| Citra | — | 78 | 82 | (78+82)/2 = 80 |
| Dedi | — | 88 | 86 | (88+86)/2 = 87 |
| Eka | — | — | 79 | 79 |
Perhatikan Andi: "Nilai per Komponen"-nya 86,5 kebetulan sama dengan skor Sub-051 (86,5), tapi berbeda dari skor Sub-052-nya (88) — karena kolom "Nilai per Komponen" cuma satu angka gabungan dari seluruh tugas yang diikuti (Tugas 1 + Tugas 3), tanpa mempedulikan Sub-CPMK mana yang disasar tiap tugas. Pola yang sama berlaku untuk Budi, Citra, dan Dedi. Kalau kolom ini diketik ulang (dijadikan override manual), nilai baru itu akan ditulis rata ke keempat Sub-CPMK sekaligus — jadi presisi Sub-051 vs Sub-052 akan hilang untuk mahasiswa itu kalau memang sengaja ditimpa.
5.1 Saat Sub-CPMK yang sama diukur >1 komponen (angka riil)
Di RPS MK ini, Sub-051-1/Sub-051-2 sebenarnya diukur dua komponen:
Observasi (Praktik/Tugas) — bobot 20%, 4 Sub-CPMK — dan Tes Tulis (UTS)
— bobot 25%, 6 Sub-CPMK. Andi punya nilai UTS = 80 (sesi tunggal, berlaku ke
keenam Sub-CPMK UTS) selain nilai Tugas-nya di atas.
Bobot kontribusi tiap komponen ke Sub-051 = bobot komponen ÷ jumlah Sub-CPMK komponen itu (bukan jumlah Sub-CPMK yang disasar sesi tertentu):
w(Tugas) = 20% ÷ 4 Sub-CPMK = 5,0%
w(UTS) = 25% ÷ 6 Sub-CPMK = 4,1667%
Skor Sub-051 Andi = rata-rata tertimbang kedua kontribusi itu:
rata Tugas (Tugas 1 & 3) = (85 + 88) / 2 = 86,5
rata UTS = 80
skor Sub-051 = (5,0% × 86,5) + (4,1667% × 80)
────────────────────────────────
5,0% + 4,1667%
= (4,325 + 3,3333) / 0,091667 = 83,55
Ini persis angka yang muncul di grid Sub-CPMK aplikasi (83,5455 — beda tipis karena pembulatan). Jadi kalau sebuah Sub-CPMK diukur lebih dari satu komponen, komponen dengan bobot lebih besar relatif terhadap jumlah Sub-CPMK yang ditanggungnya akan lebih dominan menentukan skor akhir Sub-CPMK itu — bukan sekadar rata-rata polos antar komponen.
6. Nilai Akhir (huruf mutu) vs Ketercapaian CPL/CPMK (OBE)
Dua angka yang kelihatannya mirip tapi rumusnya beda tujuan:
| Nilai Akhir mahasiswa | Ketercapaian CPMK/CPL | |
|---|---|---|
| Untuk apa | Nilai/huruf mutu mahasiswa (transkrip) | Evaluasi kurikulum (OBE) |
| Rumus | Σ(bobot Sub-CPMK × skor mahasiswa) / Σ bobot — bobot dari RPS, dibagi rata per Sub-CPMK dalam tiap komponen | Rata-rata sederhana Sub-CPMK → CPMK → CPL (bagi rata, tanpa bobot RPS) |
| Level | Per mahasiswa, per MK | Per angkatan/kelas, lintas MK (tingkat prodi) |
| Halaman | Kolom "Nilai Akhir" di form Nilai | Halaman Rekap CPL/CPMK, Dasbor Monitoring |
Keduanya bersumber dari skor Sub-CPMK yang sama — bedanya cuma di cara menimbang saat digulung ke atas.
7. Ringkasan rumus
skor Sub-CPMK = rata-rata sesi yang menyasarnya (lintas komponen,
tertimbang bobot_komponen ÷ n_subs_komponen)
Nilai Akhir = Σ(bobot_sub × skor_sub) / Σ bobot_sub
Skor CPMK (dlm MK) = rata-rata skor Sub-CPMK pendukung
Skor CPL (dlm MK) = rata-rata skor CPMK pendukung
Skor CPMK (prodi) = rata-rata skor CPMK itu lintas semua MK pemikul
Skor CPL (prodi) = rata-rata skor CPMK pendukung, lintas prodi
Nilai per Komponen = rata-rata skor MENTAH sesi komponen itu yang diikuti
mahasiswa (tampilan/edit cepat — tidak dipakai di
rumus manapun di atas secara langsung; edit di sini
menulis balik ke skor Sub-CPMK secara rata)