# Metodologi Asesmen: Sub-CPMK vs Komponen Dokumen ini menjelaskan **dua sudut pandang nilai** di halaman Input Nilai (`/nilai/`) — 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) ```