---
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'
---
# Bab 9 — Implementation & Environment
## Reproducibility sebagai Standar Ilmiah
*Pertemuan 9 (M9) | Sub-CPMK 3.1 | CPMK03 | CPL06*
Fase: **Executing** (M9–M11) · Bagian III: Execution
**Universitas Putra Bangsa** | Fak. Sains & Teknologi · Prodi Teknik Informatika
---
## Agenda Pertemuan 9
1. Bridge dari Fase Designing — dari desain ke implementasi
2. Reproducible Implementation Model
3. Implementasi riset ≠ coding biasa
4. Kontrol lingkungan: hardware, OS, library, seed
5. Repeatability vs Reproducibility — perbedaan penting
6. Dokumentasi wajib: setup, parameter, dataset
7. Best practices: version control, config logging, isolation
8. Cognitive Traps & Studi Kasus
9. Output Praktis: Documentation Setup + README
---
## Capaian Pembelajaran
Setelah pertemuan ini, mahasiswa mampu:
- Menjelaskan perbedaan antara **repeatability** dan **reproducibility**
- Mengidentifikasi semua komponen **environment** yang harus dikontrol
- Mengimplementasikan **version control** dan **config logging** untuk eksperimen
- Membuat **dokumentasi setup** yang memungkinkan orang lain mereplikasi eksperimen
- Membuat **README eksperimen** yang standar
> Sub-CPMK 3.1 → Mengimplementasikan eksperimen dengan kontrol reproducibility (CPL06)
---
## Bridge dari Fase Designing
Di Fase Designing (Bab 5–7), Anda merancang:
- Variabel yang akan diukur (Bab 5)
- Arsitektur sistem yang terkontrol (Bab 6)
- Desain eksperimen lengkap dengan skenario (Bab 7)
**Sekarang: Fase Executing dimulai.**
> Kualitas implementasi menentukan apakah desain eksperimen yang sudah baik bisa menghasilkan data yang **valid dan reproducible**.
Implementasi yang buruk (tanpa dokumentasi, tanpa version control, tanpa environment isolation) bisa merusak eksperimen yang desainnya sempurna.
---
## Reproducible Implementation Model
*Dari desain eksperimen ke hasil yang bisa dipercaya*
**Experiment Design** ↓ Implementation ↓ Environment Setup (dikontrol & didokumentasikan) ↓ Execution Consistency (setiap run identik) ↓ Reproducibility (orang lain bisa mereplikasi) ↓ **Trustworthy Result**
> Jika eksperimen tidak bisa direplikasi oleh peneliti lain → hasilnya tidak bisa dipercaya secara ilmiah, terlepas dari seberapa bagus angkanya.
---
## Implementasi Riset ≠ Coding Biasa
| Aspek | Coding Biasa | Implementasi Riset |
|-------|-------------|-------------------|
| **Tujuan** | Sistem berfungsi | Eksperimen dapat direplikasi |
| **Konfigurasi** | Hardcoded dalam kode | Dipisah dalam config file (YAML/JSON) |
| **Random seed** | Diabaikan | Ditetapkan dan di-log |
| **Versi library** | "Yang terbaru" | Dikunci (requirements.txt/conda env) |
| **Hasil** | "Jalan, selesai" | Di-log lengkap, timestamped |
| **Dokumentasi** | Minimal | Wajib, cukup detail untuk replikasi |
**Prinsip:** Jika Anda menjalankan ulang kode Anda sendiri 6 bulan kemudian dan hasilnya berbeda → reproducibility gagal.
---
## Komponen Environment yang Harus Dikontrol
*Semuanya didokumentasikan, semuanya di-version control*
- **Hardware:** CPU/GPU (model, RAM, VRAM)
- **OS:** Ubuntu 20.04 / Windows 11 (versi spesifik)
- **Language:** Python 3.10.12 (bukan "Python 3")
- **Framework:** PyTorch 2.1.0 / TensorFlow 2.13.0
- **Libraries:** numpy 1.24.3, scikit-learn 1.3.0, transformers 4.35.0
- **Dataset:** nama, sumber URL, tanggal diunduh, checksum (MD5/SHA256)
- **Random Seed:** seed=42 — set di semua library
- **Config:** hyperparameter dalam config.yaml (tidak hardcoded)
**Tool:** `conda env export > environment.yml` atau `pip freeze > requirements.txt`
---
## Repeatability vs Reproducibility
| | Repeatability | Reproducibility |
|-|--------------|----------------|
| **Definisi** | Hasil sama oleh **peneliti yang sama** di kondisi yang sama | Hasil sama oleh **peneliti berbeda** dari deskripsi metode |
| **Standar** | Minimum — harus dicapai | Target — yang membuat sains berkembang |
| **Syarat** | Kode + environment + data tersedia | Kode + environment + data + dokumentasi terbuka |
| **Gagal karena** | Seed tidak di-set, library berbeda | Dokumentasi tidak cukup, data tidak publik |
**Dalam laporan riset:**
- Reportkan mean ± std dari multiple runs (minimal 5) → menunjukkan repeatability
- Sertakan kode + environment file → memungkinkan reproducibility
---
## Best Practices: Version Control untuk Eksperimen
### Git untuk Kode
```bash
# Setiap eksperimen = branch tersendiri
git checkout -b exp/03-attention-mechanism
git commit -m "Exp03: baseline BiLSTM+CRF untuk NER"
# Tag untuk eksperimen yang final
git tag exp-03-final
```
### Logging Eksperimen
Setiap run harus menghasilkan log yang berisi:
```
timestamp: 2026-04-13 09:15:32
experiment_id: exp-03
model: BiLSTM+CRF
config: config_03.yaml
dataset: CoNLL2003, split=42
random_seed: 42
result: {f1: 0.872, precision: 0.889, recall: 0.856}
duration: 1h23m
hardware: RTX 3090, 24GB VRAM
```
---
## Template README Eksperimen
```markdown
# Eksperimen [N]: [Nama Eksperimen]
## Tujuan
[Menguji hipotesis apa? Terkait RQ mana?]
## Environment
- Python 3.10.12
- PyTorch 2.1.0
- CUDA 11.8
- GPU: NVIDIA RTX 3090
## Setup
```bash
conda env create -f environment.yml
conda activate rti-exp
```
## Cara Menjalankan
```bash
python train.py --config configs/exp_03.yaml
```
## Hasil Terakhir
| Run | F1 | Precision | Recall |
|-----|-----|-----------|--------|
| 1 | 87.2% | 88.9% | 85.6% |
| ... | | | |
| Mean ± Std | 87.1 ± 0.3% | | |
## Catatan
[Anomali, variasi, observasi penting selama eksekusi]
```
---
# Cognitive Traps
## Bab 9 — Implementation & Environment
---
## Cognitive Traps — Bab 9
**"Kode sudah jalan, dokumentasi bisa dibuat nanti"**
Dokumentasi yang dibuat setelah eksperimen sering tidak lengkap — detail kecil yang kritis (versi library, seed, preprocessing decision) sudah terlupakan. Dokumentasi harus **bersamaan dengan implementasi**.
**"Environment = install library yang diperlukan"**
Environment yang tidak terdokumentasi berarti "pip install terbaru" — dan library berubah versi. Satu perbedaan versi library bisa mengubah hasil secara signifikan.
**"Satu run sudah cukup — hasilnya sudah bagus"**
Satu run tidak bisa membuktikan stabilitas. Variance antar run bisa besar. Minimal 5 run dengan fixed seed berbeda, laporkan mean ± std.
---
## Studi Kasus 1 — Implementasi Tidak Reproducible (Basic)
**Konteks:** Mahasiswa A mengirimkan kode ke dosen. Dosen menjalankan kode tersebut — hasilnya berbeda 12% dari yang dilaporkan.
**Penyebab:**
- Library tidak di-lock (transformers versi beda → tokenizer berubah)
- Random seed tidak di-set → augmentasi data berbeda setiap run
- Preprocessing ada operasi random (shuffle tanpa seed)
- Config disimpan di dalam fungsi, tidak di file terpisah
**Dampak:** Hasil tidak bisa diverifikasi → laporan tidak diterima.
**Checklist reproducibility:**
- [ ] `requirements.txt` / `environment.yml` tersedia
- [ ] Semua random seed ditetapkan
- [ ] Config dipisah dari kode
- [ ] README berisi langkah menjalankan dari awal
---
## Studi Kasus 2 — Library Version Mismatch (Advanced)
**Konteks:** Paper melaporkan F1 = 94.2% menggunakan `scikit-learn`. Peneliti lain mencoba mereplikasi: F1 = 91.8%.
**Investigasi:**
| Komponen | Paper | Replikasi |
|---------|-------|----------|
| scikit-learn | 0.24.2 | 1.3.0 |
| Implementasi `F1-score` | macro average | micro average (default berubah) |
| Preprocessing | StandardScaler | Sama |
**Penyebab:** Perubahan default parameter `average` di `sklearn.metrics.f1_score` antara versi 0.24 dan 1.x.
**Dampak:** 3 bulan upaya replikasi, hasilnya tetap tidak bisa dicocokkan.
**Pelajaran:** Lock versi library. Sebutkan versi dalam paper. Gunakan checksum dataset.
---
## Research vs Engineering — Implementation
| Aspek | Engineering | Research |
|-------|------------|---------|
| Kode | Fungsional | Fungsional + reproducible |
| Config | Bisa hardcoded | Harus dieksternalisasi |
| Versi library | "Yang terbaru" | Di-lock dalam environment file |
| Random seed | Opsional | Wajib, didokumentasikan |
| Logging | Debug logging | Experiment logging (ID, params, result, time) |
| Dokumentasi | README basic | README eksperimen (langkah-langkah detail) |
---
## Ringkasan Pertemuan 9
| Konsep | Inti |
|--------|------|
| Reproducible Implementation | Design → Implementation → Environment → Consistency → Reproducibility |
| Kontrol Environment | Hardware + OS + Python version + Library versions + Dataset checksum |
| Repeatability vs Reproducibility | Same researcher (min) vs different researcher (target) |
| Version Control | Branch per eksperimen, tag versi final |
| Logging | Setiap run: timestamp, config, result, hardware |
| README Eksperimen | Cukup detail untuk orang lain jalankan dari awal |
---
## Final Statement & Output Praktis
"Implementasi yang baik bukan yang paling cepat, tetapi yang menghasilkan hasil yang bisa dipercaya dan diverifikasi."
### Output Praktis M9
Buat **2 dokumen**:
1. **Documentation Setup** — environment.yml / requirements.txt + semua konfigurasi eksperimen
2. **README Eksperimen** — langkah setup sampai menjalankan, annotated dengan tujuan tiap langkah
*Dokumen ini menjadi Appendix "Experiment Reproducibility" dalam laporan riset.*
---
## Referensi Utama — Bab 9
- Pineau, J., Vincent-Lamarre, P., Sinha, K., Larivière, V., Beygelzimer, A., d'Alché-Buc, F., Fox, E., & Larochelle, H. (2021). Improving reproducibility in machine learning research. *Journal of Machine Learning Research, 22*(1), 7459–7478.
- Stodden, V., McNutt, M., Bailey, D. H., Deelman, E., Gil, Y., Hanson, B., Heroux, M. A., Ioannidis, J. P. A., & Taufer, M. (2016). Enhancing reproducibility for computational methods. *Science, 354*(6317), 1240–1241.
- Wohlin, C., Runeson, P., Höst, M., Ohlsson, M. C., Regnell, B., & Wesslén, A. (2012). *Experimentation in software engineering*. Springer.