IN1037 . CODE INITIATION

Sesi 15: Proyek Mini (Revisi & Konsultasi)

Penyatuan Konsep: Menerapkan semua modul yang telah dipelajari untuk memecahkan masalah komputasi saintifik yang dipilih dan menyempurnakan kualitas kode sebelum presentasi.

I. Ulasan: Tujuan dan Struktur Proyek Akhir

Proyek Mini adalah kesempatan bagi mahasiswa untuk mendemonstrasikan kemampuan mereka dalam merancang, mengimplementasikan, dan menguji solusi komputasi untuk masalah di bidang Matematika atau Fisika.

Kriteria Wajib Proyek:

  • **Modularitas (Sesi 9):** Program harus menggunakan **minimal 3 fungsi** yang jelas dan berulang (*reusable*).
  • **Komputasi Saintifik (Sesi 11/12):** Wajib menggunakan pustaka **NumPy** untuk operasi vektor/matriks dan **Matplotlib** untuk visualisasi hasil.
  • **Struktur Kontrol (Sesi 4/5):** Harus menggunakan kombinasi perulangan (for atau while) dan kondisional.
  • **Ketahanan (Robustness) (Sesi 14):** Harus menyertakan **Error Handling** (try-except) untuk input pengguna atau *File Handling*.

Studi Kasus Proyek yang Direkomendasikan:

  • **Model Pertumbuhan Logistik:** Simulasi populasi dengan batasan kapasitas, menggunakan perulangan dan visualisasi.
  • **Analisis Regresi Eksperimen:** Memuat data dari berkas CSV, menghitung garis regresi menggunakan NumPy (linalg), dan memplot hasilnya.
  • **Kalkulator Mekanika Kuantum Sederhana:** Menyelesaikan matriks Hamiltonian ($2\times2$) menggunakan NumPy.

II. Contoh Manual: Logika Pemisahan Tugas (Modularitas)

Pemisahan tugas membuat kode proyek Anda mudah dipelihara dan di-debug. Jangan gabungkan I/O dan kalkulasi dalam satu fungsi.

2.1. Alur Logis Proyek (Regresi Linear):

Modul 1 (I/O): baca_data_csv(nama_file) -> Mengembalikan List of Floats.
Modul 2 (Kalkulasi): hitung_koefisien_regresi(X, Y) -> Menggunakan NumPy untuk menghasilkan koefisien (m, c).
Modul 3 (Visualisasi): plot_hasil(X, Y, m, c) -> Menggunakan Matplotlib untuk memplot data mentah dan garis hasil regresi.

III. Kode Praktik: Prinsip Kode Bersih (*Clean Code*)

3.1. Penamaan yang Jelas (Hindari singkatan ambigu)

Gunakan nama yang menjelaskan tujuannya, bahkan jika nama tersebut panjang. Ini menghemat waktu debugging.

Bad Code: python
def calc(a, b): # Tidak jelas fungsi dan parameternya
    return a + b 

# Lebih baik:
def hitung_penjumlahan(angka_1, angka_2):
    return angka_1 + angka_2
Good Code: python
def hitung_rata_rata_error(data_array):
    # docstring: Menjelaskan apa yang dilakukan fungsi
    """Menghitung rata-rata deviasi absolut dari array data."""
    return np.mean(np.abs(data_array)) 

3.2. Menggunakan List Comprehension (Pythonic)

Untuk konversi data atau pemfilteran sederhana, List Comprehension lebih ringkas dan efisien daripada *for loop* tradisional.

Old Way (Verbose): python
data_f = []
for d in data_str:
    data_f.append(float(d))
Pythonic Way: python
# Konversi List String ke List Float dalam 1 baris
data_float = [float(d) for d in data_str]
print(data_float) # [1.0, 2.0, 3.0]

3.3. Pengecekan Kualitas Kode (Self-Review Checklist)

  • PEP 8: Apakah nama variabel dan fungsi menggunakan huruf kecil dan garis bawah (snake_case)?
  • Komentar: Apakah setiap fungsi memiliki docstring yang menjelaskan input, output, dan tujuannya?
  • Global Variable: Apakah penggunaan variabel global telah diminimalisir? (Sebaiknya gunakan parameter fungsi).
  • Uji Error: Apakah program crash jika saya memasukkan teks pada input angka? (Harusnya ditangkap try-except).

IV. Penugasan / PR Sesi 15: Finalisasi Proyek

Tugas Anda adalah menyelesaikan 100% implementasi fungsional Proyek Mini Anda. Fokus minggu ini:

  1. Implementasi: Pastikan semua modul (NumPy, Matplotlib, I/O) terintegrasi dan berfungsi sesuai rencana awal.
  2. Debugging: Uji batas (Boundary Testing) dan pastikan tidak ada Logical Error yang tersembunyi.
  3. Review Kode: Lakukan self-review terhadap Clean Code Checklist di atas, terutama penamaan variabel dan penggunaan docstrings pada setiap fungsi.