Files
OBE-Mapping/METODOLOGI_ASESMEN_KOMPONEN.md
T
Power BI Dev d5edbe2134 Tambah ringkasan nilai per komponen, rincian tugas ala RTM, auto-save RPS
- 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>
2026-07-23 23:28:46 +07:00

235 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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
```mermaid
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:
1. **"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.
2. **"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).
```mermaid
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/2` juga 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)
```