Home Experiences Projects Awards Blogs
Back

IRK Library

Kotlin Material Design 3

Description

IRK Library adalah aplikasi berbasis Android yang menggabungkan beberapa konsep fundamental pada mata kuliah IRK (Ilmu dan Rekayasa Komputasi). Aplikasi ini dirancang sebagai learning platform yang membantu mahasiswa memahami konsep pada matkul-matkul IRK!.

Aplikasi ini hadir dengan 5 fitur utama:

  • Sistem Persamaan Linear & Operasi Matrix - Implementasi algoritma Gauss-Jordan, Cramer, dan berbagai operasi matrix
  • Kriptografi - Caesar Cipher dan RSA Algorithm dengan step-by-step explanation
  • Huffman Coding - Visualisasi tree construction dan proses encoding/decoding
  • References - Kumpulan slide perkuliahan dari mata kuliah IRK dengan fitur pencarian menggunakan algoritma KMP
  • About - Info tentang pembuat aplikasi dan motivasi pengembangan

Logo aplikasi ini berupa buku dengan tulisan "A" yang merepresentasikan harapan agar aplikasi ini dapat membantu mahasiswa meraih indeks A!

Tech Stack

  • Language: Kotlin
  • Platform: Android (API 24+)
  • Architecture: MVVM (Model-View-ViewModel)
  • UI Framework:
    • Navigation Drawer dengan Fragment-based architecture
    • Material Design 3 components
    • Custom views untuk visualisasi tree
  • Libraries:
    • Navigation Component untuk navigasi antar fragment
    • ViewBinding untuk binding layout
    • RecyclerView untuk list tampilan
    • Custom Canvas untuk drawing Huffman tree
  • Algorithm Implementation:
    • Divide and Conquer untuk perkalian dan eksponensiasi matrix
    • Brute Force untuk operasi matrix dasar
    • KMP (Knuth-Morris-Pratt) untuk string matching di fitur references

Features Overview

1. SPL & Matrix Operations

Fitur ini mengimplementasikan berbagai algoritma untuk menyelesaikan Sistem Persamaan Linear dan operasi matrix. Terdapat implementasi berbagai strategi algoritma seperti Brute Force dan Divide & Conquer pada operasi matrix.

Sistem Persamaan Linear

Cramer Cramer
Metode Cramer
GJ GJ
Eliminasi Gauss-Jordan

Operasi Matrix

Penjumlahan dan Pengurangan Matrix
Perkalian Matrix Brute Force dan Divide & Conquer

Matrix Inverse

Determinan Matrix

2. Cryptography

Implementasi algoritma kriptografi Caesar Cipher dan RSA dengan step-by-step explanation yang mengikuti materi PPT Pak Rinaldi. Mendukung input untuk 256 karakter ASCII.


Caesar Cipher

RSA Algorithm

3. Huffman Coding

Implementasi lengkap algoritma Huffman Coding dengan visualisasi tree yang interaktif. Fitur ini dilengkapi dengan auto-solve untuk kemudahan penggunaan.


Visualisasi Pohon Huffman

Step-by-step Construction

Encoding Process

Decoding Process

4. References

Kumpulan lengkap slide perkuliahan dari mata kuliah IRK dengan fitur pencarian menggunakan algoritma KMP (Knuth-Morris-Pratt) untuk string matching.


Pencarian Slide

Hasil Filter KMP
References dengan KMP Search

Mata Kuliah yang Tersedia:

  • Matematika Diskrit
  • Aljabar Linear dan Geometri
  • Strategi Algoritma

5. About

Halaman personal yang berisi informasi tentang developer, motivasi pengembangan aplikasi, dan visi sebagai calon asisten IRK.


About Developer

Architecture Overview

Aplikasi ini dibangun menggunakan arsitektur MVVM (Model-View-ViewModel) untuk memisahkan logic bisnis dari UI dan memudahkan testing serta maintenance.

Struktur MVVM:

  • Model: Diimplementasikan dalam folder data yang berisi models dan repositories untuk mengelola data aplikasi
  • View: UI components berupa Fragment yang menampilkan data dan menerima user interaction
  • ViewModel: Mengelola state UI dan berkomunikasi dengan repository untuk data processing

Project Structure:

IRK-Library-Android/
├── app/
│   ├── src/main/java/com/irklibrary/app/
│   │   ├── data/                          # Data Layer
│   │   │   ├── models/                    # Data models
│   │   │   │   ├── CryptographyModel.kt
│   │   │   │   ├── HuffmanModel.kt
│   │   │   │   ├── MatrixSPLModel.kt
│   │   │   │   └── SlideModel.kt
│   │   │   └── repositories/              # Data repositories  
│   │   │       ├── CryptographyRepository.kt
│   │   │       ├── HuffmanRepository.kt
│   │   │       ├── MatrixSPLRepository.kt
│   │   │       └── SlideRepository.kt
│   │   └── ui/                            # Presentation Layer
│   │       ├── main/                      # Main Activity
│   │       ├── page1/                     # SPL & Matrix Fragment
│   │       │   ├── MatrixSPLFragment.kt
│   │       │   ├── MatrixSPLViewModel.kt
│   │       │   └── StepsAdapter.kt
│   │       ├── page2/                     # Cryptography Fragment  
│   │       ├── page3/                     # Huffman Coding Fragment
│   │       │   ├── HuffmanTreeView.kt     # Custom tree view
│   │       │   └── ...
│   │       ├── page4/                     # References Fragment
│   │       └── page5/                     # About Fragment
│   └── res/                               # Resources
│       ├── layout/                        # XML layouts
│       ├── drawable/                      # Icons & graphics
│       └── values/                        # Colors, strings, themes
├── screenshots/                           # App screenshots
├── irk-library.apk                       # Signed APK
└── README.md                             # This file

Algorithm Implementation

Aplikasi ini mengimplementasikan berbagai strategi algoritma untuk menyelesaikan masalah komputasi dengan efisien:

1. Brute Force - Perkalian Matrix

Implementasi algoritma Brute Force untuk perkalian matrix menggunakan triple nested loop standar untuk menghitung setiap elemen hasil matrix. Kompleksitas waktu: O(n³) untuk matrix n×n.

2. Divide and Conquer - Perkalian Matrix

Implementasi algoritma Divide and Conquer untuk perkalian matrix dengan membagi matrix menjadi 4 sub-matrix yang lebih kecil dengan menerapkan perkalian secara rekursif pada setiap sub-matrix. Kompleksitas waktu: O(n³).

3. Divide and Conquer - Eksponensiasi Matrix

Implementasi fast matrix exponentiation menggunakan binary exponenentiation, dengan membagi masalah menjadi sub-masalah yang lebih kecil. Kompleksitas waktu: O(n³ log k) untuk matrix n×n pangkat k.

4. KMP (Knuth-Morris-Pratt) - String Matching

Implementasi algoritma KMP untuk fitur pencarian di halaman References. Menggunakan failure function untuk menghindari pengulangan pencocokan dan Preprocessing pattern untuk membuat LPS (Longest Proper Prefix Suffix) array. Kompleksitas waktu: O(n + m), dimana n = panjang text, m = panjang pattern.