Algorithms and Data Structure : Perkenalan

Jujur, ngoding adalah hal yang saya tidak sukai. Tapi ntah mengapa akhir-akhir ini saya ter’chemistry’ untuk ngoding. Padahal saya berpikir ngoding tidak terlalu produktif, karena selain menghabiskan waktu dan tidak menghasilkan sebuah aplikasi yang benar-benar dapat langsung dipakai. Satu hal yang membuat membuat saya berpikir ulang adalah membuat sebuah produk IT, seperti hardware (robotik, gadget, komputer, dll) dan software (OS, utility, dll) tidak lepas dari apa yang disebut source code. Saya beranggapan bahwa semua orang dengan modal otak dan jari, bisa membuat sebuah aplikasi dengan mudah, bahkan melalui belajar otodidak. Itulah yang kini dipertanyakan oleh kebanyakan mahasiswa baru ilmu komputer, mengapa kami perlu kuliah kalau hanya untuk pintar ngetik dan ngoding ? Orang-orang yang hanya dengan bermodalkan bimbingan dan pelatihan komputer bisa membuat aplikasi .

Jadi, pada suatu ketika, saya bertemu dengan seonggok makhluk halus bernama S.D.A, yang cukup dipanggil saja dengan Esdea. Dengan wajah yang sok seram, dia berkata, “Aku akan menghantuimu dalam mimpi yang membuatmu insomnia.”……….. Lebai dah, intermezo.

Singkat kata, saya saat ini berhadapan dengan sebuah mata kuliah Struktur Data Algoritma. Awalnya tidak ada impression sama sekali dengan mata kuliah ini. Tetapi matkul ini memang sangat melegenda, bahkan banyak senior yang pada stress dengan makhluk yang satu ini. Lantas, maba pada banyak yang histeris : “Kenapa SDA? Aku tak mau jadi orang gila” *gila ngoding maksudnya.

SDA memperkenalkan sebuah metodologi programming yang fleksibel dan kualitatif. Bisa saya singkat, bahwa SDA membuat kita berpikir bahwa programming bukanlah bukan sembarang aktifitas. Kita perlu membuat sesuatu yang bernilai seni. Dan seni itu dituangkan ke dalam sebuah karya yang disebut algoritma. Kategori algoritma yang berseni tak jauh dari esensi seni itu sendiri, yaitu enak dipandang, mudah dicerna maksudnya, dan menarik. Dan begitulah algoritma berseni, cukup beberapa baris seminimal mungkin, tidak amburadul, terdokumentasi dengan baik, mengikuti standar, dan kalau perlu dibuat seperti alur puisi.

Pertama-tama, kita mulai dari istilah programming. Programming, menurut saya dengan bahasa kasarnya memerintahkan komputer untuk membuat sebuah perhitungan. Komputer hanya bisa memproses jika ada suruhan. Hasilnya tergantung kita bagaimana mengolah perintah yang kita berikan. Kesalahan perintah, mengakibatkan kesalahan dalam hasil. Banyak perintah yang dimasukkan, semakin meningkat waktu prosesnya, dan semakin meningkat juga waktu untuk mendapat hasilnya. Pertanyaannya, sejauh apakah peningkatan waktu tersebut.

Coba bayangkan jika kita adalah mandor dari sejumlah buruh, jika kita menyuruh untuk mengantar batu bata yang sangat banyak dari satu tempat ke tempat. Perintah pertama adalah kita menyuruh satu per satu mereka berpindah dari satu tempat ke tempat lain membawa setiap batu. Sedangkan perintah kedua adalah menyuruh mereka berbaris sehingga dari satu tempat ke tempat lainnya dihubungkan oleh sejajaran manusia, akhirnya kita boleh menyuruh mereka mengantar batu itu secara estafet. Pertanyaannya, yang manakah lebih efisien ? Yang mana membuat buruh menderita ? Nah, ragam perintah itulah yang kita anggap algoritma dalam source code hasil kegiatan programming.

Dengan SDA, kita mampu memprediksi waktu yang dibutuhkan sebuah aplikasi untuk memproses sejumlah input tertentu. Tidak peduli apakah seseorang menjalankan aplikasi di komputer yang sehebat apa pun. Sebuah aplikasi yang buruk dalam algoritmanya dan dijalankan di komputer secepat apa pun, jika diberikan input sekian akan memproses hasil yang lumayan memakan waktu lebih, jika sangat buruk bisa-bisa memakan waktu berhari-hari. Dibandingkan dengan aplikasi yang sama tapi algoritmanya yang sangat baik, cukup dengan komputer yang tidak seberapa, mampu memproses lebih cepat. Contoh tersebut tak hanya berlaku di komputer, tetapi juga pada hardware lainnya yang menggunakan processor. Itulah kasus yang cukup mendapatkan perhatian dari para programmer di dunia.

Untuk itu, kuliah SDA tidaklah sembarang. Ilmu yang perlu kita miliki adalah matematika. Kenapa ? Jawabannya : ya begitulah. Perlu diketahui bahwa ilmu komputer adalah matematika modern yang dikembangkan atas dasar teori matematika kuno. Sama halnya seperti ilmu nuklir yang merupakan fisika modern. Di SDA, kita akan belajar istilah Big-Oh, Theta, small-oh, diagram Venn, tree, vektor, dan lain-lain, dan itu termaktub dalam sebuah mata kuliah khusus, yaitu Discrete Mathematics. Selain itu, kita akan berhadapan dengan istilah n^2, n^3, logN, NlogN, grafik pertumbuhan, dan lain-lain yang termaktub dalam mata kuliah Calculus.

Akhir kata, SDA itu menarik dan sangat berguna bagi anda. Bagi mahasiswa ilmu komputer dan teknik informatika, ini adalah mata kuliah yang sangat friendly dan tidak perlu disegani. Mempelajari SDA harus penuh kesabaran agar mendapatkan hasil yang baik. Percayalah, belum ada mahasiswa yang tewas akibat SDA, apalagi akibat ketagihan ngoding :p

Sekian intermezo dari saya. Jika ada yang salah dalam penulisan ini, masukan dan kritik yang membangun sangat saya terima dengan baik. Terima kasih.

Posted on Sunday, 6 March 2011, in Komputer, Programming and tagged , , , . Bookmark the permalink. 6 Comments.

  1. “mengapa kami perlu kuliah kalau hanya untuk pintar ngetik dan ngoding ? Orang-orang yang hanya dengan bermodalkan bimbingan dan pelatihan komputer bisa membuat aplikasi.”
    Karena spt yg Rizki bilang juga “…bahwa programming bukanlah bukan sembarang aktifitas.” Masih SDA, nanti kalau sudah dapat DAA dan RPL akan semakin kelihatan bahwa programming bukanlah bukan sembarang aktifitas sehingga butuh kuliah/belajar banyak utk membuat program yg berkualitas tinggi. Yang belajar otodidak mungkin tdk terpikir [atau berpikir terlalu menghabiskan wkt] mempelajari SDA, DAA, RPL dsb. Namun kualitas program yg dibuat otodidak & yg belajar Software Engineering pasti beda. Ditambah lg dgn kuliah kita jg tdk hanya belajar SE 🙂

  2. perspektif yang positif sekali 😀
    Makasih Ki 🙂

  3. Ini sangat bermanfaat
    thanks ya

  4. Postingan ama komentarnya agak buat mantep buat ngambil ilmu komputer 😀

  5. Blogwalking, Kak
    artikelnya keren2
    mantap, saya belum kepikiran sejauh itu, padahal udah mau tahun ketiga 😀
    #berharap cepat sadar, hehe

Leave a comment