Selasa, 05 Juni 2012

Matematika Dasar untuk Software Engineers

[Tulisan ini saya buat untuk setiap calon mahasiswa yang ingin melanjutkan studi ke jurusan informatika (atau Ilmu Komputer). Juga bagi setiap mahasiswa program studi Informatika atau Ilmu Komputer. Dan tentu saja, khalayak umum yang ingin mengetahui dapat membaca tulisan ini.]

Pada umumnya, saya menduga, masyarakat awam tidak memahami dengan tepat, tentang Software Engineers (atau Sarjana Teknik Perangkat Lunak), Teknik Informatika, Ilmu Komputer ataupun Sistem Informasi. Kebanyakan hanya memahami bahwa seorang sarjana teknik komputer adalah mereka yang berhubungan dengan komputer, internet dan seperangkat mobile phone.

Gambar dibawah ini saya ambil dari Grup Facebook Only an Engineering Student can understand the value of Last Night Study


Sebuah Gambar yang menjelaskan secara "tajam", kekeliruan yang ada pada masyarakat awam (atau bahkan pada mahasiswa jurusan Teknik Informatika di seluruh dunia???) terkait pengertian seorang ENGINEERS tersebut. Sudah jelas bahwa, seorang engineers itu adalah seorang yang "good in math"; seperti yang dilukiskan oleh figur gambar kanan bawah (seorang anak yang sedang berpikir, dilatarbelakangi papan tulis yang bertuliskan rumus matematika dasar). Sehingga jika dihubungkan dengan Software Engineers, maka sudah dapat dipastikan bahwa seorang software engineers itu adalah engineers (dgn skill matematika) perangkat lunak.

Sebelum saya lanjutkan, maka perlu juga saya menjelaskan mengenai Informatika dan Ilmu Komputer. Pengertian kedua kata ini sebenarnya adalah sama maknanya, hanya berbeda dalam penggunaannya. Di dataran Eropa, lebih cenderung menggunakan kata "Informatics" (yang diterjemahkan menjadi informatika dalam bahasa Indonesia), sedangkan di dataran Amerika dan Kanada, lebih cenderung menggunakan kata "Computer Science" (atau Ilmu Komputer). Esensinya, yang dimaksud dengan informatics dan computer science ini adalah disiplin ilmu yang sama.

Seorang SOFTWARE ENGINEERS, adalah seorang yang "terampil dengan matematika" dalam hubungannya dengan membuat program atau perangkat lunak. Mengapa? Dalam pengertian yang paling mendasar, maka seseorang dapat membuat program jika memahami dan mengikuti suatu kaidah tertentu, suatu logika yang teratur. Dalam konteks inilah, suatu skill matematika dibutuhkan oleh software engineers; yakni matematika membantu memberikan dasar fondasi untuk memahami kaidah logika teratur ini sedemikian, sehingga akhirnya logika teratur ini dapat diterjemahkan menjadi sebuah bahasa pemrograman tertentu. Esensi matematika untuk seorang software engineers sangat terkait dengan "logic and reasoning".
Menurut IEEE Software Engineering Book of Knowledge (SWEBOK), dikatakan bahwa seseorang dapat membuat program yang menyelesaikan permasalahan tertentu hanya dengan mengikuti alur logis tertentu. Tujuan kemampuan dasar matematika adalah untuk mengidentifikasi dan memahami "alur logis tertentu" tersebut, dengan penekanan pada pemahaman konsep-konsep dasar matematis, dan bukan pada kemampuan aritmatika.
Sebagai suatu disiplin ilmu, maka Matematika sangat terkait dengan studi tentang formal system. Kata formal disini adalah PRECISENESS (atau ketepatan), dimana tidak boleh terdapat ambiguitas ataupun kesalahan dalam menginterpretasi suatu data (atau fakta). Seorang software engineers harus berurusan dengan proses abstraksi fakta; dimana ketepatan abstraksi adalah mandatory (diharuskan). Disinilah peran matematika dasar bagi seorang software engineers.

Mengikuti SWEBOK IEEE, maka berikut ini adalah daftar kemampuan dasar matematis yang harus dimiliki oleh seorang Software Engineers:
  1. Himpunan, Relasi dan Fungsi
  2. Logika Dasar, seperti Logika Proporsional dan Logika Predikat
  3. Teknik Pembuktian Matematika seperti Metode Pembuktian Teorema dengan Pembuktian Langsung dan Pembuktidan dengan Kontradiksi
  4. Dasar dasar Perhitungan, seperti Aturan Penjumlahan, Aturan Perkalian, Prinsip Inclusive-Exclusive, Fungsi Rekursive, Permutasi dan Kombinasi.
  5. Teori Graph dan Trees
  6. Probabilitas Diskrit; seperti model probabilitas, random variable, diskret dan kontinyu random variabel, distribusi probabilitas (mean dan variance).
  7. Finite State Machines
  8. Teori Formal Language
  9. Presisi Numerik (atau Metode Numerik)
  10. Teori Angka (Number Theory); misalnya bilangan natural, bilangan Real, bilangan integer, bilangan rational, bilangan prima dan bilangan kompleks.
  11. Struktur Aljabar
Jadi, dapat kita simpulkan bahwa kemampuan matematika dasar inilah yang akan menjadi PONDASI bagi seorang software engineers dalam melakukan analisis, abstraksi dan proses logis.


Tidak ada komentar:

Posting Komentar