Skip to content

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

StatsDroid: A Statistics Helper Native Android Application

Android Badge Kotlin Badge Jetpack Compose Badge License Badge

Task Seleksi Lab IRK 2026 created by Staryo40 (Aryo Wisanggeni)

Version: 1.0

Last updated: 15 July 2026


Latar Belakang

Satu tahun lalu terdapat tugas seleksi yang cukup menarik: IRK Library. Secara singkat, tugasnya meminta kita untuk membuat aplikasi Android Native untuk menjadi alat Swiss Army Knife yang dapat kalian gunakan sebagai asisten IRK. Aplikasinya berisi modul-modul yang membantu memahami dan mensimulasi konsep fundamental mata kuliah IRK, beberapa di antaranya modul Persamaan Linear dan Matriks (Algeo), kriptografi dan huffman coding (Matdis). Detail lebih tugas seleksi ini bisa dilihat di sini bagi yang penasaran.

Berhubung juga dengan obsesi gua juga dengan platform Android Mobile, tugas seleksi ini akan cukup similar dengan itu dengan fokus lebih ke materi Probstat, salah satu mata kuliah IRK yang paling underrated. Meskipun sering dipandang sebelah mata, Probabilita dan Statistika sebenarnya adalah fondasi vital yang menjembatani logika pemrograman deterministik dengan ketidakpastian. Lebih dari sekadar teori, mata kuliah ini menjadi fondasi bagi perkembangan Artificial Intelligence dan Machine Learning, sekaligus menjadi penentu efisiensi dalam Computer Optimization, sistem jaringan, hingga pemrosesan struktur data probabilistik. Dalam ranah teknis, prinsip-prinsipnya digunakan ke berbagai disiplin—mulai dari memecahkan masalah kompleks di Competitive Programming, mendesain grafis seperti Monte Carlo ray tracing, hingga memperkuat keamanan siber dan memperhitungkan dinamika sistem di dunia nyata. Tidak berhenti di situ, Probstat juga menjadi tulang punggung dalam dunia riset ilmiah untuk memvalidasi hipotesis, menganalisis signifikansi eksperimen, serta memodelkan fenomena kompleks yang tidak pasti agar dapat ditarik kesimpulan ilmiah yang sahih.

Karena ini merupakan lanjutan dari IRK Library, dinamakanlah tugas ini IRK Library II dengan variasi khusus Probstat, hence: StatsDroid

Thumbnail StatsDroid
Fig 1. StatsDroid

Tujuan tugas ini adalah eksplorasi lebih dan penerapan best practice yang unik pada platform Android dan Aplikasi Mobile dengan bumbu review kembali materi Probstat yang bakal berguna atau setidaknya bisa dipakai buat flexing di momen random.


Spesifikasi Wajib

Secara garis besar kalian akan membuat aplikasi Android standar dengan bottom navigation (yang biasanya terdapat minimal 3 page). Untuk konten dari masing-masing page tersebut dibebaskan ke calon berdasarkan spek di bawah.

1. Sistem Navigasi

Ini merupakan sistem bagaimana kalian pindah-pindah antara page di dalam aplikasi

  • Bottom Navigation: Navigasi utama aplikasi untuk mengubah page
  • Navigation Pattern: Menggunakan Bottom Navigation atau Navigation Drawer
  • Fragment/Composable: Setiap halaman dalam fragment/composable terpisah

Note

"Good design is obvious. Great design is transparent." - Joe Sparano


2. Page X: Probstat Table Lookup

Tabel Binomial Probability Sums
Binomial Probability Sums
Tabel Poisson Probability Sums
Poisson Probability Sums
Tabel Area Under Normal Curve
Area Under Normal Curve

Gunakan dropdown untuk bisa memilih antara

  • Binomial Probability Sums
  • Poisson Probability Sums
  • Area Under Normal Curve (Hanya Standar Z) -> Beri informasi khusus ini standar Z (rerata 0.0 dan std 1.0) di aplikasi

Berdasarkan pilihan dropdown, inputnya

  1. Binomial Probability Sums
    • Number of trials ($n$): $n \ge 1$, maksimum 20
    • Success Threshold ($r$): $0 \le r \le n$
    • Probability of success ($p$): nilai 0.1, 0.2, 0.3, ..., 0.9
  2. Poisson Probability Sums
    • Average rate ($\mu$): $\mu > 0$ (float), maksimum 100
    • Success Threshold ($r$): $r \ge 0$, nilai maksimum bebas (minimal hingga 30)
  3. Area Under Normal Curve
    • Slider value: -5.0 hingga 5.0
    • Input nilai manual (sinkron dengan slider)

Output

  1. Binomial Probability Sums: Berupa value (nilai probabilitas kumulatif).
  2. Poisson Probability Sums: Berupa value (nilai probabilitas kumulatif).
  3. Area Under Normal Curve:
    • Visualisasi bell curve yang terarsir areanya.
    • Nilai area yang diarsir.

3. Page Y: Visual Hypothesis Tester

Hypothesis test interface>

Pengujian Hipotesis (Hypothesis Testing) adalah metode statistik inferensial yang digunakan untuk menguji apakah suatu klaim atau hipotesis mengenai parameter populasi (seperti rata-rata $\mu$) dapat diterima berdasarkan bukti yang diperoleh dari data sampel.

Modul ini dirancang untuk memvisualisasikan bagaimana Nilai Statistik Hitung ($Z$ atau $t$) dibandingkan dengan Daerah Penolakan (Rejection Region) dan bagaimana $p$-value menentukan keputusan akhir uji hipotesis secara eksplisit tanpa perlu membaca tabel fisik.

Gunakan radio button/toggle untuk memilih jenis uji statistik:

  • Z-Test
  • t-Test

Input:

  1. Z-Test

    • Hypothesized Mean ($\mu_0$): Input manual / slider (-100.0 hingga 100.0)
    • Sample Mean ($\bar{x}$): Input manual / slider (-100.0 hingga 100.0)
    • Population Std Dev ($\sigma$): $\sigma > 0$, maksimum 50.0
    • Sample Size ($n$): $n \ge 1$, maksimum 500
    • Significance Level ($\alpha$): Pilihan 0.01, 0.05, 0.10
    • Tail Type ($H_a$): Two-tailed ($\neq$), Right-tailed ($>$), Left-tailed ($<$)
  2. t-Test

    • Hypothesized Mean ($\mu_0$): Input manual / slider (-100.0 hingga 100.0)
    • Sample Mean ($\bar{x}$): Input manual / slider (-100.0 hingga 100.0)
    • Sample Std Dev ($s$): $s > 0$, maksimum 50.0
    • Sample Size ($n$): $n \ge 2$, maksimum 500 (Degrees of freedom $df = n - 1$)
    • Significance Level ($\alpha$): Pilihan 0.01, 0.05, 0.10
    • Tail Type ($H_a$): Two-tailed ($\neq$), Right-tailed ($>$), Left-tailed ($<$)

Output:

  1. Visualisasi Kurva:
    • Visualisasi bell curve distribusi sampel $H_0$.
    • Area penolakan (Rejection Region / Critical Region) terarsir warna merah berdasarkan nilai $\alpha$.
    • Pin posisi sampel ($\bar{x}$) beserta shading area $p$-value.
  2. Hasil Kalkulasi:
    • Nilai $Z$-score / $t$-score hitung.
    • Nilai $p$-value.
    • Keputusan akhir secara otomatis: Reject $H_0$ atau Fail to Reject $H_0$.

4. Modern Android Application Best Practices

  • Gunakan Jetpack Compose. Ini merupakan toolkit paling modern dan sering dipakai sekarang dalam Android development yang berbasis Declarative UI. Tolong jangan gunakan cara outdated XML 🙏
  • Pengaturan lifecycle UI object agar tidak reset akibat perubahan konfigurasi, seperti perubahan orientasi, theme, light/dark mode (state management).
  • Dependency Injection (DI) dengan Hilt / Koin. Memisahkan dependensi antar kelas untuk meningkatkan modularitas, mengurangi coupling, serta mempermudah pembuatan mocking saat pengujian (testing).
  • Arsitektur MVVM (Model-View-ViewModel). Menerapkan pemisahan tampilan, logika, dan data:
    • View (Jetpack Compose): Hanya mengurus tampilan visual dan mengamati (observe) data dari ViewModel.
    • ViewModel: Mengelola state UI, memproses logika tampilan, serta bertahan (survive) dari perubahan konfigurasi.
    • Model (Repository & Data Source): Mengelola logika data bisnis dan komunikasi sumber data.

5. Readibility, Modularity, and Extensibility

Cantumkan di README bagaimana aplikasi kalian readable (mudah dibaca), modular (terpisah untuk kepentingan berbeda) dan juga extendable (bisa ditambah fitur). Ini adalah tempat kalian berkreativitas secara arsitektur Perangkat Lunak, pastikan saja bagaimana cara terbaik berdasarkan spek di atas bagaimana membagikan modul/kode sedemikian sehingga mudah dibaca, terstruktur, dan mudah untuk ditambah.

Hal yang dinilai adalah

  • Readability: Memastikan kode bersih (clean code) dan mudah dipahami oleh pengembang lain, seperti naming convention yang jelas, strict separation antar string parsing dan pemrosesan, dan self documented code (beri comment jika diperlukan)
  • Modularity: Pemisahan antar komponen pada struktur file dan direktori, idealnya setiap kompenen independen dan tidak terlalu bergantung satu sama lain kecuali di tempat integrasi (main)
  • Extensibility: seandainya mau menambah modul baru (seperti modul Persamaan Linear dan Matriks, kriptografi, dan huffman coding dari IRK Library pertama) seberapa susah mengintegrasinya? semakin mudah semakin baik.

Note

A good developer is a developer that considers the maintainability of their work even after their passing (they switched companies :v)

Important

Implementasi akan dicek apakah sesuai dengan apa yang di-klaim pada deskripsi README


6. Production-ready README

Buatlah README dalam Bahasa Inggris yang seminimalnya berisi

  1. Deskripsi singkat aplikasi
  2. Daftar fitur
  3. Teknologi yang digunakan
  4. Struktur program (Secara arsitektur dan file structure)
  5. Cara menjalankan program
  6. Modularity and Extensibility (Spek wajib ke-5 di atas)
  7. Deskripsi dan screenshot dari masing-masing fitur
  8. Creator

Spesifikasi Bonus

1. Page Z: Central Limit Theorem Interactive Visualizer

Halaman ini adalah visualizer interaktif untuk membuktikan secara visual Central Limit Theorem (CLT): bahwa distribusi dari rata-rata sampel ($\bar{x}$) akan selalu mendekati Distribusi Normal (Bell Curve) seiring bertambahnya ukuran sampel ($n$), tidak peduli seberapa miring atau tidak teraturnya bentuk distribusi populasi aslinya.

Input & Kontrol

Semua input menggunakan slider dan dropdown interaktif untuk kemudahan manipulasi data secara real-time tanpa pengetikan manual:

  1. Population Shape (Bentuk Populasi Awal)
    • Pilihan Dropdown:
      • Uniform (Rata / Semua nilai punya peluang sama)
      • Exponential / Skewed (Miring ekstrem ke kanan)
      • Bimodal (Memiliki dua puncak)
  2. Sample Size ($n$)
    • Slider value: $1$ hingga $100$ (Default: $30$)
    • Fungsi: Menentukan berapa banyak elemen yang diambil dalam 1 kali pengambilan sampel.
  3. Number of Samples ($M$)
    • Slider: $100$, $500$, $1.000$, $5.000$ (Default: $1.000$)
    • Fungsi: Menentukan berapa kali percobaan pengambilan sampel dilakukan untuk menghitung rata-rata ($\bar{x}$).
  4. Action Button
    • "Simulate / Draw Samples" (Tombol untuk menjalankan atau mereset ulang simulasi).

Output

Halaman ini menampilkan 2 grafik terpisah secara vertikal untuk memperlihatkan proses transformasi:

  1. Grafik 1: Original Population Distribution (Histogram Populasiasli)

    • Visualisasi bentuk asli populasi sesuai pilihan dropdown (misal: bentuk kotak rata untuk Uniform, atau miring untuk Exponential).
    • Menampilkan nilai Rerata Populasi ($\mu$) dan Standard Deviasi Populasi ($\sigma$).
  2. Grafik 2: Sampling Distribution of Sample Means (Histogram Rata-Rata Sampel $\bar{x}$)

    • Histogram interaktif dari $M$ nilai rata-rata sampel ($\bar{x}$) yang terkumpul.
    • Overlaid Theoretical Normal Curve: Garis kurva Bell Curve teoretis yang di-fit di atas histogram berdasarkan nilai rata-rata $\mu_{\bar{x}} = \mu$ dan Standard Error $SE = \frac{\sigma}{\sqrt{n}}$.
    • As $n$ bertambah besar, histogram Grafik 2 akan makin menyempit dan makin presisi mengikuti bentuk Bell Curve.
  3. Live Summary Metrics Card

    • Theoretical Mean ($\mu$) vs Empirical Mean ($\bar{x}_{\text{avg}}$)
    • Standard Error ($SE = \frac{\sigma}{\sqrt{n}}$)

2. Referensi Page

  • Buat pustaka untuk lihat PDF in-app (bukan literally buat library (program) untuk lihat PDF-nya ya, silakan gunakan library yang sudah ada)
  • Kontennya berupa materi ppt Probstat
  • Boleh ditambah juga dengan materi ppt Pak Rinaldi Munir
  • Bonus tambahan: buat automatic scraper web Pak Rinaldi untuk mengambil ppt terbaru (dari tahun ajaran terbaru)

3. About Me Page

  • Pembuat aplikasi: Informasi tentang developer
  • Motivasi: Alasan pembuatan aplikasi
  • Harapan sebagai asisten IRK: Visi dan misi sebagai asisten
  • Contact information: Email atau media sosial

4. Licensing

Buatlah LICENSE pada repository dan deskripsikan mengapa menggunakan license tersebut (dari sisi legal dan hal-hal yang diizinkan ke orang lain ke karya kalian).

Gunakan guideline ini sebagai bacaan dalam membuat lisensi. TLDR license bisa di-copas dari https://choosealicense.com/ juga.


5. Follow socials

Beri tahu di line jika sudah ketika pengumpulan tugas

Penilaian

Tipe Aspek Nilai Maksimum
Spesifikasi Wajib
Page X: Probstat Table Lookup 1200
Page Y: Visual Hypothesis Tester 1500
Modern Android Application Best Practices 300
Readibility, Modularity, and Extensibility 300
Production-ready README 500
Spesifikasi Bonus Page Z: Central Limit Theorem Interactive Visualizer 700
Referensi Page: 300 view only, 300 tambahan untuk scraper 600
About Me Page 300
Licensing 150
Follow socials 50
Total Maksimum 5600

Pengerjaan dan Pengumpulan

  1. Buatlah repositori private pada github masing-masing dan invite Staryo40 dalam repositori tersebut.
  2. Berkas yang dikumpulkan berupa link rilis tag ke repositori github yang telah dibuat dengan ketentuan sebagai berikut.
    • Memberikan tag vn pada commit terakhir Anda setiap kali ingin melakukan submisi dengan n adalah jumlah submisi yang telah dilakukan. (contoh: v1 untuk submisi pertama).
    • Tidak menggunakan url shortener (bit.ly, shortlink, atau yang lain) saat melakukan pengumpulan task.
    • Anda dapat melakukan rilis dengan panduan berikut.
  3. Lakukan submisi pada website seleksi IRK dengan menggunakan akun std.stei.itb.ac.id, lakukan konfirmasi ke LINE @sstaryo dan jadwalkan demo jika ada dengan cara yang sama.
  4. Submisi hanya dapat dilakukan sekali saja, tetapi bisa ditarik kembali submisinya sebelum dikunci asisten atau nilai akhir dirilis. Di lain sisi, calon bisa koordinasi lebih dengan LINE @sstaryo jika perlu menghapuskan submisi untuk menggantikan submisi yang salah atau semacamnya.
  5. Jika terdapat pertanyaan (atau memerlukan hint) dapat menghubungi LINE @sstaryo.

Referensi

Final Note: Jangan lupa have fun! Developing aplikasi itu supposed to be enjoyable. Di era dominasi AI ini yang sangat tempting untuk vibe-coding suatu tugas end-to-end, sangat buat pressure ke kita untuk punya mindset yang penting cepat kelar/yang penting jadi hingga kita lupa enjoy prosesnya. Pastiin kalian bisa enjoy bagian kreatifnya setidaknya seperti membuat arsitektur dan perancangan.

Good Luck!

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors