algorust adalah proyek pembelajaran algoritma modern dengan Rust, mencakup:
- algoritma fundamental (sorting, searching, graph, dynamic programming),
- algoritma sistem P2P (gossip dissemination dan strategi pemilihan peer),
- dasar kriptografi (cipher klasik, key exchange, dan Merkle tree).
Seluruh materi ditulis dalam bahasa Indonesia, berorientasi praktik, dan siap dipakai untuk:
- belajar mandiri,
- kelas internal tim engineering,
- bootcamp/komunitas.
Setelah menyelesaikan materi ini, peserta diharapkan mampu:
- memahami kompleksitas waktu dan ruang untuk algoritma umum,
- mengimplementasikan algoritma dengan pendekatan idiomatik Rust,
- menjelaskan konsep jaringan P2P dan trade-off desainnya,
- menerapkan konsep kriptografi dasar untuk integritas dan pertukaran kunci,
- menyelesaikan exercise terstruktur dari tingkat dasar sampai menengah.
algorust/
├── src/
│ ├── algorithms/
│ │ ├── sorting.rs
│ │ ├── searching.rs
│ │ ├── graph.rs
│ │ └── dynamic_programming.rs
│ ├── p2p/
│ │ ├── gossip.rs
│ │ └── peer_selection.rs
│ ├── crypto/
│ │ ├── classical.rs
│ │ ├── diffie_hellman.rs
│ │ └── merkle.rs
│ ├── lib.rs
│ └── main.rs
├── examples/
├── exercises/
│ ├── README.md
│ ├── starter/
│ └── solutions/
└── docs/
Prasyarat:
- Rust stable (disarankan lewat
rustup).
Perintah utama:
cargo check
cargo testMenjalankan contoh:
cargo run --example 01_sorting_searching
cargo run --example 02_graph_dp
cargo run --example 10_p2p_gossip
cargo run --example 20_crypto_basics
cargo run --example 21_crypto_merkle_dh- Minggu 1: Dasar Rust (ownership, borrowing, enum, pattern matching).
- Minggu 2: Kompleksitas algoritma, Big-O, benchmarking sederhana.
- Minggu 3: Sorting (Bubble, Merge, Quick) dan analisis trade-off.
- Minggu 4: Searching (Linear, Binary), precondition data terurut.
- Minggu 5: Graph traversal (BFS), shortest path berbobot (Dijkstra).
- Minggu 6: Dynamic Programming (Fibonacci tabulation, Knapsack, LCS).
- Minggu 7: Konsep jaringan P2P dan desain overlay.
- Minggu 8: Gossip protocol dan simulasi penyebaran informasi.
- Minggu 9: Strategi pemilihan peer berbasis metrik jaringan.
- Minggu 10: Kriptografi dasar (Caesar, XOR stream) untuk pemahaman konsep.
- Minggu 11: Diffie-Hellman dan konsep pertukaran kunci.
- Minggu 12: Merkle tree, integritas data, mini capstone.
sorting.rs:bubble_sort,merge_sort,quick_sortsearching.rs:linear_search,binary_searchgraph.rs:bfs_shortest_hops,dijkstradynamic_programming.rs:fibonacci_tab,knapsack_01,lcs_length
gossip.rs: simulasi propagasi informasi per ronde.peer_selection.rs: ranking peer berdasarkan latency, reliability, bandwidth.
classical.rs: Caesar cipher, XOR stream cipher sederhana.diffie_hellman.rs: modular exponentiation dan shared secret.merkle.rs: konstruksi root hash untuk integritas data.
- Selalu validasi konsep dengan test (
cargo test) sebelum benchmarking. - Pisahkan kode edukasi dan kode produksi; modul crypto pada repo ini berfokus pada konsep.
- Dokumentasikan asumsi input/output saat membuat algoritma baru.
- Gunakan review checklist: correctness, complexity, edge case, readability.
- Beri prioritas pada keamanan memori dan error handling yang eksplisit.
Modul kriptografi di proyek ini dibuat untuk pembelajaran konsep algoritmik. Untuk kebutuhan produksi:
- gunakan library kriptografi terstandar dan teraudit,
- ikuti rekomendasi parameter keamanan terkini,
- lakukan security review independen.
Prioritas lanjutan yang disarankan:
- Menambah benchmark (
criterion) untuk membandingkan kompleksitas praktis. - Menambah simulasi churn node di P2P (node join/leave).
- Menambah contoh autentikasi message (MAC/signature).
- Menambah CI pipeline (fmt, clippy, test, doc test).
Kontribusi sangat terbuka:
- Fork dan buat branch fitur.
- Tambahkan test untuk setiap perubahan algoritma.
- Pastikan
cargo testlulus. - Buat PR dengan deskripsi teknis singkat dan terukur.