riset-teknologi-informasi/slide/slide-11-data-validation.md
hb_alim e3e1e8db41 feat: add slide deck and book prompt template
- slide/: 16 Marp slide files with inline UPB CSS theme
  (slide-01 through slide-16, covering all RTI-20252 topics)
- slide/theme/: upb.css canonical theme + logo-upb.png
- docs/AI-BOOK-PROMPT-TEMPLATE.md: RTI-20252 book authoring prompt
2026-04-13 15:04:45 +07:00

1435 lines
40 KiB
Markdown
Raw Permalink 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.

---
marp: true
paginate: true
class: bagian-iii
header: 'RTI — Riset Teknologi Informasi | Universitas Putra Bangsa Kebumen'
footer: 'Helmi Bahar Alim, S.Kom., M.Kom. | 2026'
---
<style>
/* UPB Theme (inline) */
/*
============================================================
UPB MARP THEME — Riset Teknologi Informasi
Universitas Putra Bangsa (UPB), Kebumen
Fak. Sains & Teknologi | Prodi Teknik Informatika
------------------------------------------------------------
Penggunaan di frontmatter slide:
theme: upb
class: bagian-ii ← opsional; ganti warna Bagian
Kelas per Bagian:
(kosong / default) = Bagian I — Biru #2563EB
bagian-ii = Bagian II — Hijau #059669
bagian-iii = Bagian III — Oranye #d97706
bagian-iv = Bagian IV — Ungu #7c3aed
Kelas layout khusus (gunakan via <!-- _class: ... -->):
cover = Cover / halaman judul
section-header = Pembatas antar-topik
integrative = Bab 8 (UTS — gradien biru-ungu)
fullcircle = Bab 16 penutup (gradien gelap)
============================================================
*/
/* ============================================================
1. CSS CUSTOM PROPERTIES — DEFAULT (Bagian I · Biru)
============================================================ */
section {
--accent: #2563EB;
--accent-dark: #1e3a5f;
--accent-light: #eff6ff;
--accent-border: #bfdbfe;
--cover-grad: linear-gradient(135deg, #1e3a5f 0%, #2563EB 100%);
--cover-sub: #bfdbfe;
--cover-meta: #93c5fd;
font-family: 'Segoe UI', Arial, sans-serif;
font-size: 1.1em;
color: #1e293b;
padding: 40px 60px;
}
/* ============================================================
2. VARIAN WARNA PER BAGIAN
============================================================ */
/* Bagian II — Hijau */
section.bagian-ii {
--accent: #059669;
--accent-dark: #064e3b;
--accent-light: #ecfdf5;
--accent-border: #a7f3d0;
--cover-grad: linear-gradient(135deg, #064e3b 0%, #059669 100%);
--cover-sub: #a7f3d0;
--cover-meta: #6ee7b7;
}
/* Bagian III — Oranye */
section.bagian-iii {
--accent: #d97706;
--accent-dark: #78350f;
--accent-light: #fffbeb;
--accent-border: #fde68a;
--cover-grad: linear-gradient(135deg, #78350f 0%, #d97706 100%);
--cover-sub: #fde68a;
--cover-meta: #fcd34d;
}
/* Bagian IV — Ungu */
section.bagian-iv {
--accent: #7c3aed;
--accent-dark: #3b0764;
--accent-light: #f5f3ff;
--accent-border: #ddd6fe;
--cover-grad: linear-gradient(135deg, #3b0764 0%, #7c3aed 100%);
--cover-sub: #ddd6fe;
--cover-meta: #c4b5fd;
}
/* ============================================================
3. LAYOUT: COVER
============================================================ */
section.cover {
background: var(--cover-grad);
color: white;
justify-content: center;
text-align: center;
}
/* Logo dimuat dari CSS — tidak perlu tag img di markdown */
section.cover::before {
content: '';
display: block;
width: 90px;
height: 90px;
background: white url('theme/logo-upb.png') center / contain no-repeat;
border-radius: 8px;
padding: 6px;
margin: 0 auto 14px;
box-sizing: border-box;
}
section.cover h1 {
color: white;
font-size: 2em;
margin-bottom: 8px;
border-bottom: none;
}
section.cover h2 {
color: var(--cover-sub);
font-size: 1.1em;
font-weight: normal;
}
section.cover p { color: var(--cover-meta); font-size: 0.85em; }
section.cover strong { color: white; }
/* ============================================================
4. LAYOUT: SECTION HEADER (pembatas topik)
============================================================ */
section.section-header {
background: var(--accent);
color: white;
justify-content: center;
text-align: center;
}
section.section-header h1 {
color: white;
font-size: 2.5em;
border-bottom: none;
}
section.section-header h2 { color: rgba(255, 255, 255, 0.85); }
/* ============================================================
5. LAYOUT: INTEGRATIVE (Bab 8 — UTS Checkpoint)
============================================================ */
section.integrative {
background: linear-gradient(135deg, #1e3a5f 0%, #7c3aed 100%);
color: white;
justify-content: center;
text-align: center;
}
section.integrative::before {
content: '';
display: block;
width: 90px;
height: 90px;
background: white url('theme/logo-upb.png') center / contain no-repeat;
border-radius: 8px;
padding: 6px;
margin: 0 auto 14px;
box-sizing: border-box;
}
section.integrative h1 {
color: white;
font-size: 2.2em;
border-bottom: none;
}
section.integrative h2 { color: #ddd6fe; font-size: 1.1em; }
section.integrative p { color: #c4b5fd; font-size: 0.85em; }
section.integrative strong { color: white; }
/* ============================================================
6. LAYOUT: FULLCIRCLE (Bab 16 — Penutup)
============================================================ */
section.fullcircle {
background: linear-gradient(135deg, #1e293b 0%, #1e3a5f 50%, #1e293b 100%);
color: white;
justify-content: center;
text-align: center;
}
section.fullcircle h1 {
color: #ddd6fe;
font-size: 2.2em;
border-bottom: 3px solid #7c3aed;
}
section.fullcircle blockquote {
border-left: 5px solid #7c3aed;
background: rgba(255, 255, 255, 0.08);
color: #ddd6fe;
font-style: italic;
}
/* ============================================================
7. ELEMEN KONTEN — menggunakan CSS vars dari bagian
============================================================ */
h1 {
color: var(--accent);
border-bottom: 3px solid var(--accent);
padding-bottom: 8px;
}
h2 { color: var(--accent-dark); font-size: 1.3em; }
h3 { color: var(--accent); font-size: 1.05em; }
blockquote {
border-left: 5px solid var(--accent);
background: var(--accent-light);
padding: 12px 20px;
margin: 16px 0;
color: var(--accent-dark);
font-style: italic;
border-radius: 0 8px 8px 0;
}
table { font-size: 0.82em; width: 100%; border-collapse: collapse; }
th { background: var(--accent); color: white; padding: 8px 12px; }
td { padding: 6px 12px; border-bottom: 1px solid var(--accent-border); }
tr:nth-child(even) td { background: var(--accent-light); }
code {
background: var(--accent-light);
color: var(--accent-dark);
padding: 2px 6px;
border-radius: 4px;
font-size: 0.9em;
}
pre {
background: #f1f5f9;
color: #1e293b;
padding: 16px;
border-radius: 8px;
border-left: 4px solid var(--accent-border);
}
ul li, ol li { margin-bottom: 6px; line-height: 1.6; }
/* ============================================================
8. HELPER CLASSES
============================================================ */
/* Status / penekanan */
.warn { color: #d97706; font-weight: bold; }
.good { color: #059669; font-weight: bold; }
.bad { color: #dc2626; font-weight: bold; }
/* Kotak pernyataan akhir */
.final {
background: #fef3c7;
border-left: 5px solid #d97706;
padding: 14px 20px;
border-radius: 0 8px 8px 0;
font-size: 1.1em;
}
/* Kotak highlight */
.highlight-box {
background: var(--accent);
color: white;
padding: 16px 20px;
border-radius: 8px;
margin: 12px 0;
}
/* Kotak checkpoint bab 8 */
.checkpoint {
background: #f5f3ff;
border: 2px solid #7c3aed;
border-radius: 8px;
padding: 16px 24px;
margin: 16px 0;
}
/* ============================================================
9. PAGINATION & HEADER/FOOTER
============================================================ */
section::after {
font-size: 0.7em;
color: #94a3b8;
}
section[data-marpit-advanced-background] > div:last-child { padding: 40px 60px; }
</style>
<style>
/* UPB Theme (inline) */
/*
============================================================
UPB MARP THEME — Riset Teknologi Informasi
Universitas Putra Bangsa (UPB), Kebumen
Fak. Sains & Teknologi | Prodi Teknik Informatika
------------------------------------------------------------
Penggunaan di frontmatter slide:
class: bagian-ii ← opsional; ganti warna Bagian
Kelas per Bagian:
(kosong / default) = Bagian I — Biru #2563EB
bagian-ii = Bagian II — Hijau #059669
bagian-iii = Bagian III — Oranye #d97706
bagian-iv = Bagian IV — Ungu #7c3aed
Kelas layout khusus (gunakan via <!-- _class: ... -->):
cover = Cover / halaman judul
section-header = Pembatas antar-topik
integrative = Bab 8 (UTS — gradien biru-ungu)
fullcircle = Bab 16 penutup (gradien gelap)
============================================================
*/
/* ============================================================
1. CSS CUSTOM PROPERTIES — DEFAULT (Bagian I · Biru)
============================================================ */
section {
--accent: #2563EB;
--accent-dark: #1e3a5f;
--accent-light: #eff6ff;
--accent-border: #bfdbfe;
--cover-grad: linear-gradient(135deg, #1e3a5f 0%, #2563EB 100%);
--cover-sub: #bfdbfe;
--cover-meta: #93c5fd;
font-family: 'Segoe UI', Arial, sans-serif;
font-size: 1.1em;
color: #1e293b;
padding: 40px 60px;
}
/* ============================================================
2. VARIAN WARNA PER BAGIAN
============================================================ */
/* Bagian II — Hijau */
section.bagian-ii {
--accent: #059669;
--accent-dark: #064e3b;
--accent-light: #ecfdf5;
--accent-border: #a7f3d0;
--cover-grad: linear-gradient(135deg, #064e3b 0%, #059669 100%);
--cover-sub: #a7f3d0;
--cover-meta: #6ee7b7;
}
/* Bagian III — Oranye */
section.bagian-iii {
--accent: #d97706;
--accent-dark: #78350f;
--accent-light: #fffbeb;
--accent-border: #fde68a;
--cover-grad: linear-gradient(135deg, #78350f 0%, #d97706 100%);
--cover-sub: #fde68a;
--cover-meta: #fcd34d;
}
/* Bagian IV — Ungu */
section.bagian-iv {
--accent: #7c3aed;
--accent-dark: #3b0764;
--accent-light: #f5f3ff;
--accent-border: #ddd6fe;
--cover-grad: linear-gradient(135deg, #3b0764 0%, #7c3aed 100%);
--cover-sub: #ddd6fe;
--cover-meta: #c4b5fd;
}
/* ============================================================
3. LAYOUT: COVER
============================================================ */
section.cover {
background: var(--cover-grad);
color: white;
justify-content: center;
text-align: center;
}
/* Logo dimuat dari CSS — tidak perlu tag img di markdown */
section.cover::before {
content: '';
display: block;
width: 90px;
height: 90px;
background: white url('theme/logo-upb.png') center / contain no-repeat;
border-radius: 8px;
padding: 6px;
margin: 0 auto 14px;
box-sizing: border-box;
}
section.cover h1 {
color: white;
font-size: 2em;
margin-bottom: 8px;
border-bottom: none;
}
section.cover h2 {
color: var(--cover-sub);
font-size: 1.1em;
font-weight: normal;
}
section.cover p { color: var(--cover-meta); font-size: 0.85em; }
section.cover strong { color: white; }
/* ============================================================
4. LAYOUT: SECTION HEADER (pembatas topik)
============================================================ */
section.section-header {
background: var(--accent);
color: white;
justify-content: center;
text-align: center;
}
section.section-header h1 {
color: white;
font-size: 2.5em;
border-bottom: none;
}
section.section-header h2 { color: rgba(255, 255, 255, 0.85); }
/* ============================================================
5. LAYOUT: INTEGRATIVE (Bab 8 — UTS Checkpoint)
============================================================ */
section.integrative {
background: linear-gradient(135deg, #1e3a5f 0%, #7c3aed 100%);
color: white;
justify-content: center;
text-align: center;
}
section.integrative::before {
content: '';
display: block;
width: 90px;
height: 90px;
background: white url('theme/logo-upb.png') center / contain no-repeat;
border-radius: 8px;
padding: 6px;
margin: 0 auto 14px;
box-sizing: border-box;
}
section.integrative h1 {
color: white;
font-size: 2.2em;
border-bottom: none;
}
section.integrative h2 { color: #ddd6fe; font-size: 1.1em; }
section.integrative p { color: #c4b5fd; font-size: 0.85em; }
section.integrative strong { color: white; }
/* ============================================================
6. LAYOUT: FULLCIRCLE (Bab 16 — Penutup)
============================================================ */
section.fullcircle {
background: linear-gradient(135deg, #1e293b 0%, #1e3a5f 50%, #1e293b 100%);
color: white;
justify-content: center;
text-align: center;
}
section.fullcircle h1 {
color: #ddd6fe;
font-size: 2.2em;
border-bottom: 3px solid #7c3aed;
}
section.fullcircle blockquote {
border-left: 5px solid #7c3aed;
background: rgba(255, 255, 255, 0.08);
color: #ddd6fe;
font-style: italic;
}
/* ============================================================
7. ELEMEN KONTEN — menggunakan CSS vars dari bagian
============================================================ */
h1 {
color: var(--accent);
border-bottom: 3px solid var(--accent);
padding-bottom: 8px;
}
h2 { color: var(--accent-dark); font-size: 1.3em; }
h3 { color: var(--accent); font-size: 1.05em; }
blockquote {
border-left: 5px solid var(--accent);
background: var(--accent-light);
padding: 12px 20px;
margin: 16px 0;
color: var(--accent-dark);
font-style: italic;
border-radius: 0 8px 8px 0;
}
table { font-size: 0.82em; width: 100%; border-collapse: collapse; }
th { background: var(--accent); color: white; padding: 8px 12px; }
td { padding: 6px 12px; border-bottom: 1px solid var(--accent-border); }
tr:nth-child(even) td { background: var(--accent-light); }
code {
background: var(--accent-light);
color: var(--accent-dark);
padding: 2px 6px;
border-radius: 4px;
font-size: 0.9em;
}
pre {
background: #f1f5f9;
color: #1e293b;
padding: 16px;
border-radius: 8px;
border-left: 4px solid var(--accent-border);
}
ul li, ol li { margin-bottom: 6px; line-height: 1.6; }
/* ============================================================
8. HELPER CLASSES
============================================================ */
/* Status / penekanan */
.warn { color: #d97706; font-weight: bold; }
.good { color: #059669; font-weight: bold; }
.bad { color: #dc2626; font-weight: bold; }
/* Kotak pernyataan akhir */
.final {
background: #fef3c7;
border-left: 5px solid #d97706;
padding: 14px 20px;
border-radius: 0 8px 8px 0;
font-size: 1.1em;
}
/* Kotak highlight */
.highlight-box {
background: var(--accent);
color: white;
padding: 16px 20px;
border-radius: 8px;
margin: 12px 0;
}
/* Kotak checkpoint bab 8 */
.checkpoint {
background: #f5f3ff;
border: 2px solid #7c3aed;
border-radius: 8px;
padding: 16px 24px;
margin: 16px 0;
}
/* ============================================================
9. PAGINATION & HEADER/FOOTER
============================================================ */
section::after {
font-size: 0.7em;
color: #94a3b8;
}
section[data-marpit-advanced-background] > div:last-child { padding: 40px 60px; }
</style>
<style>
/* UPB Theme (inline) */
/*
============================================================
UPB MARP THEME — Riset Teknologi Informasi
Universitas Putra Bangsa (UPB), Kebumen
Fak. Sains & Teknologi | Prodi Teknik Informatika
------------------------------------------------------------
Penggunaan di frontmatter slide:
class: bagian-ii ← opsional; ganti warna Bagian
Kelas per Bagian:
(kosong / default) = Bagian I — Biru #2563EB
bagian-ii = Bagian II — Hijau #059669
bagian-iii = Bagian III — Oranye #d97706
bagian-iv = Bagian IV — Ungu #7c3aed
Kelas layout khusus (gunakan via <!-- _class: ... -->):
cover = Cover / halaman judul
section-header = Pembatas antar-topik
integrative = Bab 8 (UTS — gradien biru-ungu)
fullcircle = Bab 16 penutup (gradien gelap)
============================================================
*/
/* ============================================================
1. CSS CUSTOM PROPERTIES — DEFAULT (Bagian I · Biru)
============================================================ */
section {
--accent: #2563EB;
--accent-dark: #1e3a5f;
--accent-light: #eff6ff;
--accent-border: #bfdbfe;
--cover-grad: linear-gradient(135deg, #1e3a5f 0%, #2563EB 100%);
--cover-sub: #bfdbfe;
--cover-meta: #93c5fd;
font-family: 'Segoe UI', Arial, sans-serif;
font-size: 1.1em;
color: #1e293b;
padding: 40px 60px;
}
/* ============================================================
2. VARIAN WARNA PER BAGIAN
============================================================ */
/* Bagian II — Hijau */
section.bagian-ii {
--accent: #059669;
--accent-dark: #064e3b;
--accent-light: #ecfdf5;
--accent-border: #a7f3d0;
--cover-grad: linear-gradient(135deg, #064e3b 0%, #059669 100%);
--cover-sub: #a7f3d0;
--cover-meta: #6ee7b7;
}
/* Bagian III — Oranye */
section.bagian-iii {
--accent: #d97706;
--accent-dark: #78350f;
--accent-light: #fffbeb;
--accent-border: #fde68a;
--cover-grad: linear-gradient(135deg, #78350f 0%, #d97706 100%);
--cover-sub: #fde68a;
--cover-meta: #fcd34d;
}
/* Bagian IV — Ungu */
section.bagian-iv {
--accent: #7c3aed;
--accent-dark: #3b0764;
--accent-light: #f5f3ff;
--accent-border: #ddd6fe;
--cover-grad: linear-gradient(135deg, #3b0764 0%, #7c3aed 100%);
--cover-sub: #ddd6fe;
--cover-meta: #c4b5fd;
}
/* ============================================================
3. LAYOUT: COVER
============================================================ */
section.cover {
background: var(--cover-grad);
color: white;
justify-content: center;
text-align: center;
}
/* Logo dimuat dari CSS — tidak perlu tag img di markdown */
section.cover::before {
content: '';
display: block;
width: 90px;
height: 90px;
background: white url('theme/logo-upb.png') center / contain no-repeat;
border-radius: 8px;
padding: 6px;
margin: 0 auto 14px;
box-sizing: border-box;
}
section.cover h1 {
color: white;
font-size: 2em;
margin-bottom: 8px;
border-bottom: none;
}
section.cover h2 {
color: var(--cover-sub);
font-size: 1.1em;
font-weight: normal;
}
section.cover p { color: var(--cover-meta); font-size: 0.85em; }
section.cover strong { color: white; }
/* ============================================================
4. LAYOUT: SECTION HEADER (pembatas topik)
============================================================ */
section.section-header {
background: var(--accent);
color: white;
justify-content: center;
text-align: center;
}
section.section-header h1 {
color: white;
font-size: 2.5em;
border-bottom: none;
}
section.section-header h2 { color: rgba(255, 255, 255, 0.85); }
/* ============================================================
5. LAYOUT: INTEGRATIVE (Bab 8 — UTS Checkpoint)
============================================================ */
section.integrative {
background: linear-gradient(135deg, #1e3a5f 0%, #7c3aed 100%);
color: white;
justify-content: center;
text-align: center;
}
section.integrative::before {
content: '';
display: block;
width: 90px;
height: 90px;
background: white url('theme/logo-upb.png') center / contain no-repeat;
border-radius: 8px;
padding: 6px;
margin: 0 auto 14px;
box-sizing: border-box;
}
section.integrative h1 {
color: white;
font-size: 2.2em;
border-bottom: none;
}
section.integrative h2 { color: #ddd6fe; font-size: 1.1em; }
section.integrative p { color: #c4b5fd; font-size: 0.85em; }
section.integrative strong { color: white; }
/* ============================================================
6. LAYOUT: FULLCIRCLE (Bab 16 — Penutup)
============================================================ */
section.fullcircle {
background: linear-gradient(135deg, #1e293b 0%, #1e3a5f 50%, #1e293b 100%);
color: white;
justify-content: center;
text-align: center;
}
section.fullcircle h1 {
color: #ddd6fe;
font-size: 2.2em;
border-bottom: 3px solid #7c3aed;
}
section.fullcircle blockquote {
border-left: 5px solid #7c3aed;
background: rgba(255, 255, 255, 0.08);
color: #ddd6fe;
font-style: italic;
}
/* ============================================================
7. ELEMEN KONTEN — menggunakan CSS vars dari bagian
============================================================ */
h1 {
color: var(--accent);
border-bottom: 3px solid var(--accent);
padding-bottom: 8px;
}
h2 { color: var(--accent-dark); font-size: 1.3em; }
h3 { color: var(--accent); font-size: 1.05em; }
blockquote {
border-left: 5px solid var(--accent);
background: var(--accent-light);
padding: 12px 20px;
margin: 16px 0;
color: var(--accent-dark);
font-style: italic;
border-radius: 0 8px 8px 0;
}
table { font-size: 0.82em; width: 100%; border-collapse: collapse; }
th { background: var(--accent); color: white; padding: 8px 12px; }
td { padding: 6px 12px; border-bottom: 1px solid var(--accent-border); }
tr:nth-child(even) td { background: var(--accent-light); }
code {
background: var(--accent-light);
color: var(--accent-dark);
padding: 2px 6px;
border-radius: 4px;
font-size: 0.9em;
}
pre {
background: #f1f5f9;
color: #1e293b;
padding: 16px;
border-radius: 8px;
border-left: 4px solid var(--accent-border);
}
ul li, ol li { margin-bottom: 6px; line-height: 1.6; }
/* ============================================================
8. HELPER CLASSES
============================================================ */
/* Status / penekanan */
.warn { color: #d97706; font-weight: bold; }
.good { color: #059669; font-weight: bold; }
.bad { color: #dc2626; font-weight: bold; }
/* Kotak pernyataan akhir */
.final {
background: #fef3c7;
border-left: 5px solid #d97706;
padding: 14px 20px;
border-radius: 0 8px 8px 0;
font-size: 1.1em;
}
/* Kotak highlight */
.highlight-box {
background: var(--accent);
color: white;
padding: 16px 20px;
border-radius: 8px;
margin: 12px 0;
}
/* Kotak checkpoint bab 8 */
.checkpoint {
background: #f5f3ff;
border: 2px solid #7c3aed;
border-radius: 8px;
padding: 16px 24px;
margin: 16px 0;
}
/* ============================================================
9. PAGINATION & HEADER/FOOTER
============================================================ */
section::after {
font-size: 0.7em;
color: #94a3b8;
}
section[data-marpit-advanced-background] > div:last-child { padding: 40px 60px; }
</style>
<style>
/* UPB Theme (inline) */
/*
============================================================
UPB MARP THEME — Riset Teknologi Informasi
Universitas Putra Bangsa (UPB), Kebumen
Fak. Sains & Teknologi | Prodi Teknik Informatika
------------------------------------------------------------
Penggunaan di frontmatter slide:
class: bagian-ii ← opsional; ganti warna Bagian
Kelas per Bagian:
(kosong / default) = Bagian I — Biru #2563EB
bagian-ii = Bagian II — Hijau #059669
bagian-iii = Bagian III — Oranye #d97706
bagian-iv = Bagian IV — Ungu #7c3aed
Kelas layout khusus (gunakan via <!-- _class: ... -->):
cover = Cover / halaman judul
section-header = Pembatas antar-topik
integrative = Bab 8 (UTS — gradien biru-ungu)
fullcircle = Bab 16 penutup (gradien gelap)
============================================================
*/
/* ============================================================
1. CSS CUSTOM PROPERTIES — DEFAULT (Bagian I · Biru)
============================================================ */
section {
--accent: #2563EB;
--accent-dark: #1e3a5f;
--accent-light: #eff6ff;
--accent-border: #bfdbfe;
--cover-grad: linear-gradient(135deg, #1e3a5f 0%, #2563EB 100%);
--cover-sub: #bfdbfe;
--cover-meta: #93c5fd;
font-family: 'Segoe UI', Arial, sans-serif;
font-size: 1.1em;
color: #1e293b;
padding: 40px 60px;
}
/* ============================================================
2. VARIAN WARNA PER BAGIAN
============================================================ */
/* Bagian II — Hijau */
section.bagian-ii {
--accent: #059669;
--accent-dark: #064e3b;
--accent-light: #ecfdf5;
--accent-border: #a7f3d0;
--cover-grad: linear-gradient(135deg, #064e3b 0%, #059669 100%);
--cover-sub: #a7f3d0;
--cover-meta: #6ee7b7;
}
/* Bagian III — Oranye */
section.bagian-iii {
--accent: #d97706;
--accent-dark: #78350f;
--accent-light: #fffbeb;
--accent-border: #fde68a;
--cover-grad: linear-gradient(135deg, #78350f 0%, #d97706 100%);
--cover-sub: #fde68a;
--cover-meta: #fcd34d;
}
/* Bagian IV — Ungu */
section.bagian-iv {
--accent: #7c3aed;
--accent-dark: #3b0764;
--accent-light: #f5f3ff;
--accent-border: #ddd6fe;
--cover-grad: linear-gradient(135deg, #3b0764 0%, #7c3aed 100%);
--cover-sub: #ddd6fe;
--cover-meta: #c4b5fd;
}
/* ============================================================
3. LAYOUT: COVER
============================================================ */
section.cover {
background: var(--cover-grad);
color: white;
justify-content: center;
text-align: center;
}
/* Logo dimuat dari CSS — tidak perlu tag img di markdown */
section.cover::before {
content: '';
display: block;
width: 90px;
height: 90px;
background: white url('theme/logo-upb.png') center / contain no-repeat;
border-radius: 8px;
padding: 6px;
margin: 0 auto 14px;
box-sizing: border-box;
}
section.cover h1 {
color: white;
font-size: 2em;
margin-bottom: 8px;
border-bottom: none;
}
section.cover h2 {
color: var(--cover-sub);
font-size: 1.1em;
font-weight: normal;
}
section.cover p { color: var(--cover-meta); font-size: 0.85em; }
section.cover strong { color: white; }
/* ============================================================
4. LAYOUT: SECTION HEADER (pembatas topik)
============================================================ */
section.section-header {
background: var(--accent);
color: white;
justify-content: center;
text-align: center;
}
section.section-header h1 {
color: white;
font-size: 2.5em;
border-bottom: none;
}
section.section-header h2 { color: rgba(255, 255, 255, 0.85); }
/* ============================================================
5. LAYOUT: INTEGRATIVE (Bab 8 — UTS Checkpoint)
============================================================ */
section.integrative {
background: linear-gradient(135deg, #1e3a5f 0%, #7c3aed 100%);
color: white;
justify-content: center;
text-align: center;
}
section.integrative::before {
content: '';
display: block;
width: 90px;
height: 90px;
background: white url('theme/logo-upb.png') center / contain no-repeat;
border-radius: 8px;
padding: 6px;
margin: 0 auto 14px;
box-sizing: border-box;
}
section.integrative h1 {
color: white;
font-size: 2.2em;
border-bottom: none;
}
section.integrative h2 { color: #ddd6fe; font-size: 1.1em; }
section.integrative p { color: #c4b5fd; font-size: 0.85em; }
section.integrative strong { color: white; }
/* ============================================================
6. LAYOUT: FULLCIRCLE (Bab 16 — Penutup)
============================================================ */
section.fullcircle {
background: linear-gradient(135deg, #1e293b 0%, #1e3a5f 50%, #1e293b 100%);
color: white;
justify-content: center;
text-align: center;
}
section.fullcircle h1 {
color: #ddd6fe;
font-size: 2.2em;
border-bottom: 3px solid #7c3aed;
}
section.fullcircle blockquote {
border-left: 5px solid #7c3aed;
background: rgba(255, 255, 255, 0.08);
color: #ddd6fe;
font-style: italic;
}
/* ============================================================
7. ELEMEN KONTEN — menggunakan CSS vars dari bagian
============================================================ */
h1 {
color: var(--accent);
border-bottom: 3px solid var(--accent);
padding-bottom: 8px;
}
h2 { color: var(--accent-dark); font-size: 1.3em; }
h3 { color: var(--accent); font-size: 1.05em; }
blockquote {
border-left: 5px solid var(--accent);
background: var(--accent-light);
padding: 12px 20px;
margin: 16px 0;
color: var(--accent-dark);
font-style: italic;
border-radius: 0 8px 8px 0;
}
table { font-size: 0.82em; width: 100%; border-collapse: collapse; }
th { background: var(--accent); color: white; padding: 8px 12px; }
td { padding: 6px 12px; border-bottom: 1px solid var(--accent-border); }
tr:nth-child(even) td { background: var(--accent-light); }
code {
background: var(--accent-light);
color: var(--accent-dark);
padding: 2px 6px;
border-radius: 4px;
font-size: 0.9em;
}
pre {
background: #f1f5f9;
color: #1e293b;
padding: 16px;
border-radius: 8px;
border-left: 4px solid var(--accent-border);
}
ul li, ol li { margin-bottom: 6px; line-height: 1.6; }
/* ============================================================
8. HELPER CLASSES
============================================================ */
/* Status / penekanan */
.warn { color: #d97706; font-weight: bold; }
.good { color: #059669; font-weight: bold; }
.bad { color: #dc2626; font-weight: bold; }
/* Kotak pernyataan akhir */
.final {
background: #fef3c7;
border-left: 5px solid #d97706;
padding: 14px 20px;
border-radius: 0 8px 8px 0;
font-size: 1.1em;
}
/* Kotak highlight */
.highlight-box {
background: var(--accent);
color: white;
padding: 16px 20px;
border-radius: 8px;
margin: 12px 0;
}
/* Kotak checkpoint bab 8 */
.checkpoint {
background: #f5f3ff;
border: 2px solid #7c3aed;
border-radius: 8px;
padding: 16px 24px;
margin: 16px 0;
}
/* ============================================================
9. PAGINATION & HEADER/FOOTER
============================================================ */
section::after {
font-size: 0.7em;
color: #94a3b8;
}
section[data-marpit-advanced-background] > div:last-child { padding: 40px 60px; }
</style>
<!-- _class: cover bagian-iii -->
# Bab 11 — Data Validation & Integrity
## Memastikan Data yang Dikumpulkan Dapat Dipercaya
*Pertemuan 11 (M11) &nbsp;|&nbsp; Sub-CPMK 3.3 &nbsp;|&nbsp; CPMK03 &nbsp;|&nbsp; CPL06*
Fase: **Executing** (M9M11) &nbsp;·&nbsp; Bagian III: Execution
**Universitas Putra Bangsa** &nbsp;|&nbsp; Fak. Sains & Teknologi &nbsp;·&nbsp; Prodi Teknik Informatika
---
## Agenda Pertemuan 11
1. Mengapa validasi data itu urusan peneliti, bukan pre-processing
2. Data Trust Model — pipeline dari Raw ke Analysis Ready
3. Empat Pilar Kualitas Data
4. Proses validasi step-by-step
5. Anomaly detection — outlier, missing values, inkonsistensi
6. Alignment dataeksperimen
7. Cognitive Traps & Studi Kasus
8. Output Praktis: Dataset Tervalidasi + Catatan Anomali
---
## Capaian Pembelajaran
Setelah pertemuan ini, mahasiswa mampu:
- Menjelaskan perbedaan **validasi data** dan **preprocessing data**
- Menerapkan **4 pilar kualitas data** sebagai kriteria penerimaan dataset
- Melaksanakan proses validasi (format → range → consistency → logic)
- Mendokumentasikan **anomali** yang ditemukan dan keputusan yang diambil
- Memeriksa **alignment** antara data yang dikumpulkan dan desain eksperimen
> Sub-CPMK 3.3 → Memvalidasi integritas data eksperimen (CPL06)
---
## Data Trust Model
*Setiap langkah harus meningkatkan kepercayaan terhadap data*
<div class="highlight-box">
**Raw Data** (dari eksperimen) &darr; Data Cleaning (format, struktur) &darr; Consistency Check (antar-run, antar-skenario) &darr; Validation (range, logic, alignment) &darr; Trusted Data (dengan dokumentasi anomali) &darr; **Analysis Ready** (siap Bab 13)
</div>
> Validasi ≠ Preprocessing. Validasi memastikan data **benar**. Preprocessing mempersiapkan data untuk **analisis**. Urutannya tidak bisa dibalik.
---
## Empat Pilar Kualitas Data
*Standar yang harus dipenuhi oleh setiap dataset penelitian*
| Pilar | Definisi | Pertanyaan Kunci | Contoh Pelanggaran |
|-------|---------|-----------------|-------------------|
| **Accuracy** (Akurasi) | Data mencerminkan fenomena yang diukur | Apakah nilai ini masuk akal? | F1=1.02 (mustahil) |
| **Consistency** (Konsistensi) | Tidak ada kontradiksi dalam dataset | Apakah run yang sama menghasilkan format yang sama? | Skenario A: nilai 01, Skenario B: nilai 0100 |
| **Completeness** (Kelengkapan) | Semua yang seharusnya ada, ada | Adakah run yang hilang? | 10 run direncanakan, 8 di CSV |
| **Validity** (Validitas) | Data sesuai dengan definisi variabel dalam desain | Apakah yang diukur sesuai dengan RQ? | Mengukur accuracy padahal RQ butuh recall |
---
## Proses Validasi Data — 4 Tahap
### Tahap 1 — Format Validation
```python
# Cek struktur CSV
import pandas as pd
df = pd.read_csv('exp03_summary.csv')
print(df.dtypes) # Apakah kolom numerik dibaca sebagai float?
print(df.shape) # Apakah jumlah baris sesuai rencana?
print(df.isnull().sum()) # Apakah ada missing values?
```
### Tahap 2 — Range Validation
```python
# Validasi range metrik
assert (df['f1_micro'] >= 0).all() and (df['f1_micro'] <= 1).all(), "F1 out of range!"
assert (df['precision'] >= 0).all() and (df['precision'] <= 1).all(), "Precision out of range!"
assert (df['time_sec'] > 0).all(), "Training time harus positif!"
```
---
## Proses Validasi Data — Lanjutan
### Tahap 3 — Consistency Check
```python
# Cek jumlah run per skenario (harus 10 per skenario)
run_counts = df.groupby('scenario')['run_id'].count()
print(run_counts)
# Output yang diharapkan:
# scenario
# attention 10
# baseline 10
# no-attention 10
```
### Tahap 4 — Logic Validation (Alignment dengan Desain)
```
□ Semua skenario yang direncanakan ada di dataset?
□ Semua random seed yang dijadwalkan tereksekusi?
□ Metrik yang ada di dataset ← sesuai dengan RQ dan hipotesis?
□ Satuan metrik konsisten? (01 atau 0100%?)
```
---
## Anomaly Detection
*Tiga jenis anomali yang paling sering ditemukan:*
### 1. Outlier Statistik
```python
from scipy import stats
z_scores = stats.zscore(df['f1_micro'])
outliers = df[abs(z_scores) > 3]
print("Outliers:", outliers)
```
Jika ditemukan outlier → **jangan langsung dibuang**. Investigasi dulu:
- Apakah log menunjukkan sesuatu yang aneh pada run tersebut?
- Apakah hardware state berbeda?
- Dokumentasikan alasan, baru putuskan: retain atau exclude with justification.
### 2. Missing Values
Cek cross-referensi dengan execution log. Run hilang = re-run jika memungkinkan.
### 3. Inkonsistensi Format
Contoh: kolom `time_sec` yang seharusnya float, tertuliskan "N/A" di beberapa baris.
---
<!-- _class: section-header bagian-iii -->
# Cognitive Traps
## Bab 11 — Data Validation
---
## Cognitive Traps — Bab 11
**"Data dari eksperimen saya sendiri pasti sudah benar"**
Eksperimen yang dirancang baik pun bisa menghasilkan data yang cacat karena bug kecil, kondisi hardware, atau kesalahan konfigurasi. Validasi bukan soal ketidakpercayaan — tapi standar ilmiah.
**"Outlier dibuang karena pasti error"**
Outlier bisa menjadi temuan paling menarik dalam penelitian. Membuang outlier tanpa investigasi = kehilangan insight + manipulasi data. Selalu dokumentasikan outlier dan alasan keputusan.
**"Validasi data itu sama dengan preprocessing"**
Validasi = memastikan data benar (integritas). Preprocessing = mempersiapkan data untuk analisis (transformasi). Urutan wajib: validasi dulu, baru preprocessing. Tidak bisa dibalik.
**"Kalau run-nya banyak, satu yang error tidak apa-apa"**
Setiap run yang cacat mempengaruhi mean dan std. Dalam 10 run, 1 run error = 10% data rusak = seluruh analisis terdampak.
---
## Studi Kasus 1 — Data Inconsistency (Basic)
**Konteks:** Mahasiswa membandingkan Model A vs Model B, 10 run masing-masing.
**Masalah yang ditemukan saat validasi:**
- Model A: F1-score dalam skala 01 (0.872, 0.865, dst)
- Model B: F1-score dalam skala 0100 (87.5, 86.2, dst)
- Keduanya berasal dari library yang berbeda (sklearn vs torchmetrics)
**Dampak jika tidak divalidasi:**
- Model A mean = 0.869
- Model B mean = 86.8 → tampak 100x lebih buruk
- Analisis komparatif menjadi tidak valid
**Solusi:** Normalisasi ke skala yang sama **setelah validasi mengidentifikasi ini**, dan dokumentasikan dalam catatan preprocessing.
---
## Studi Kasus 2 — Missing Runs + Outlier (Advanced)
**Konteks:** 10 run direncanakan per skenario. Dataset hanya berisi 9 run. Run ke-7 juga tampak anomali (F1 = 0.342, jauh di bawah mean 0.87).
**Investigasi:**
1. **Missing run:** Cross-cek dengan execution log → run ke-6 gagal karena `CUDA OOM` dan tidak di-log dengan benar
2. **Outlier run-7:** Log menunjukkan GPU temperature spike 85°C selama run → thermal throttling aktif
**Keputusan yang didokumentasikan:**
```
Anomali 1 — Run ke-6: Eksekusi gagal (CUDA OOM).
Keputusan: Re-run dengan batch_size=16 (bukan 32).
Anomali 2 — Run ke-7: Thermal throttling aktif (85°C).
Keputusan: Exclude dari analisis. Alasan: kondisi hardware tidak normal.
Pengganti: Re-run dengan server di ruangan ber-AC.
```
---
## Dokumentasi Catatan Validasi
*Setiap keputusan tentang data harus terdokumentasi*
```
DATA VALIDATION REPORT — Eksperimen 3
Tanggal validasi: 2026-05-02
Peneliti: [Nama]
HASIL VALIDASI FORMAT : PASS — semua kolom sesuai tipe yang diharapkan
HASIL VALIDASI RANGE : PASS — semua nilai F1 dalam [0,1]
HASIL VALIDASI KONSISTENSI: FAIL → lihat anomali 1
HASIL VALIDASI ALIGNMENT : PASS — semua metrik sesuai RQ
ANOMALI YANG DITEMUKAN:
[ANO-01] Run exp03_s1_r6: Missing. Penyebab: CUDA OOM.
Keputusan: Re-run. Status: Selesai (exp03_s1_r6b).
[ANO-02] Run exp03_s1_r7: Outlier (F1=0.342). Penyebab: Thermal throttling.
Keputusan: Exclude + re-run (exp03_s1_r7b).
STATUS AKHIR: Dataset valid. Siap untuk preprocessing.
```
---
## Research vs Ad-Hoc — Data Handling
| Aspek | Ad-Hoc | Research |
|-------|--------|---------|
| Validasi data | Langsung analisis | Validasi dulu sebelum apapun |
| Outlier | Dibuang atau diabaikan | Investigasi + dokumentasi keputusan |
| Missing data | Di-impute langsung | Cari tahu penyebab, pertimbangkan re-run |
| Format inconsistency | "Nanti saja saat analisis" | Temukan saat validasi, perbaiki dengan dokumentasi |
| Laporan | Hanya hasil | Hasil + catatan anomali + audit trail |
---
## Ringkasan Pertemuan 11
| Konsep | Inti |
|--------|------|
| Data Trust Model | Raw → Cleaning → Consistency → Validation → Trusted → Analysis Ready |
| 4 Pilar | Accuracy, Consistency, Completeness, Validity |
| Proses Validasi | Format → Range → Consistency → Logic (4 tahap) |
| Anomaly Handling | Investigasi dulu → keputusan berbasis bukti → dokumentasi |
| Output Wajib | Dataset tervalidasi + Catatan anomali + Validation report |
---
## Final Statement & Output Praktis
<div class="final">
"Data yang divalidasi dengan buruk adalah fondasi yang retak — bangunan analisis di atasnya, sebagus apapun, tidak akan dapat dipercaya."
</div>
### Output Praktis M11
Kumpulkan dan lampirkan:
1. **Dataset tervalidasi** (`exp_summary_validated.csv`)
2. **Validation report** (format bebas, isi sesuai template catatan validasi)
3. **Catatan anomali** — setiap anomali yang ditemukan dan keputusan yang diambil
*Dataset ini menjadi input untuk Preprocessing (Bab 13) dan Presentasi Hasil (Bab 12).*
---
## Referensi Utama — Bab 11
- Pipino, L. L., Lee, Y. W., & Wang, R. Y. (2002). Data quality assessment. *Communications of the ACM, 45*(4), 211218.
- Strong, D. M., Lee, Y. W., & Wang, R. Y. (1997). Data quality in context. *Communications of the ACM, 40*(5), 103110.
- Rahm, E., & Do, H. H. (2000). Data cleaning: Problems and current approaches. *IEEE Data Engineering Bulletin, 23*(4), 313.
- Wohlin, C., Runeson, P., Höst, M., Ohlsson, M. C., Regnell, B., & Wesslén, A. (2012). *Experimentation in software engineering*. Springer.