February 2017
S M T W T F S
« Dec    
 1234
567891011
12131415161718
19202122232425
262728  
Ilkom
IPB Badge
Hapuskan komersialisasi perparkiran kampus IPB Baranangsiang

Dalam perjalanan menuju Solo, kota yang cukup lama tidak saya kunjungi, entah mengapa saya malah teringat akan buku dengan judul di atas, “Algorithms + Data Structures = Programs” yang ditulis tahun 1976 oleh Niklaus Wirth, Bapak Pascal dalam komunitas pemrograman. Sebuah buku yang sangat baik untuk memahami detil logika dari standard library dalam bahasa pemrograman modern. Mungkin otak saya sedang gegana (gelisah, galau, dan merana) saat memikirkan jadwal mengajar yang sering saya tinggalkan akhir-akhir ini. Mungkin juga kebingungan dalam merencanakan materi akhir dari pengajaran Dasar Pemrograman. Atau bisa jadi karena ke Solo mau bertemu dengan para pembina TOKI, yang pasti sangat memahami pengajaran pemrograman.

Dulu saya belajar pemrograman pertama kali adalah Fortran, yang langsung dosen saya saat itu memberi program sumber beberapa baris untuk dipelajari dan ditelusuri. Mungkin saat itu yang tersedia di komputer mini Perkin Elmer adalah pemrograman Fortran, sehingga menggunakan bahasa itu untuk belajar pemrograman. Namun saya menyadari, bukan belajar bahasa yang diinginkan oleh dosen saya saat itu, melainkan algoritme untuk memecahkan suatu persoalan, yang ternyata saat itu adalah mencari FPB, Faktor Persekutuan Terbesar dari 2 bilangan bulat. Dan saat banyak mempelajari algoritme dan pemrograman, akhirnya saya tahu bahwa itu adalah algoritme Euclid dalam mencari FPB 2 bilangan bulat. Padahal saat itu, saya tercatat sebagai mahasiswa Statistika, bukan Ilmu Komputer ataupun Informatika, yang harus mampu mencari solusi dari suatu persoalan dengan menggunakan bahasa pemrograman. Istilah populernya saat ini adalah Problem Solving.

Itu mengapa ACM memberi arahan bagaimana kurikulum pemrograman diberikan di suatu tingkat pendidikan. Ada yang disebut dengan Function First, dimana kurikulum ini mengarahkan mahasiswa dengan suatu problem yang besar dan sulit dipecahkan jika tidak memecah menjadi suatu persoalan-persoalan lebih kecil. Mahasiswa dilatih untuk menelusuri dan menelaah prosedur-prosedur yang dapat disusun dari persoalan tersebut, sehingga membutuhkan modularitas dari suatu routine. Paham ini yang memberikan bahasa pemrograman C atau Hazkell pada mahasiswa di tingkat awal.

Persoalan muncul jika menghadapi suatu problem yang sangat besar karena setiap data terpisahkan dari prosedurnya. Oleh karena itu, muncul paham Object First, yang selalu meng-enkapsulasi data dan fungsi atau prosedur ke dalam suatu obyek. Namun demikian, berdasarkan pengalaman, sangat sulit mengubah paradigma pemrograman mahasiswa yang sudah terbiasa dengan Function First. Jadi tidak heran mahasiswa dalam membuat obyek dalam pemrograman, semua variabel dibuat public. Mereka menghindari protected maupun private. Untuk problem yang besar, modus ini sangat merepotkan nantinya.

Ada lagi paham Scripting First. Ini yang paling nyaman bagi kebanyakan orang, yang tidak perlu detil dalam menyusun solusi. Paham ini sangat disukai karena kita hanya menggunakan library yang menjadi senjata utama dalam bahasa scripting. Python contohnya. Tentunya paham ini tidak sesuai untuk mahasiswa Computer Science/Informatics, karena mahasiswa akan sulit mencari solusi dari suatu persoalan yang umum dan kompleks. Sebagai contoh, suatu persoalan membutuhkan Balanced Search Tree, yang sulit dijawab dengan library tanpa tahu detil algoritme dari solusi persoalan tersebut. Yah, itu mengapa mahasiswa Computer Science atau Informatics harus belajar algoritme dan struktur data, untuk keperluan Problem Solving. Dan itu mengapa, diberikan bahasa pemrograman C atau Pascal di semester awal.

C atau Python untuk mahasiswa? Jawaban yang benar menurut saya adalah, “It depends on what you intend to do with the resulting skills.” Jika ingin membuat mahasiswa tidak memahami detil dari suatu algoritme, semua serba instant, tidak perlu peduli terhadap yang dilakukan oleh mesin dalam menjawab persoalan, dan juga tidak ingin berencana agar mahasiswa dapat memahami bagaimana perilaku setiap komponen dalam menjawab persoalan, misalnya tidak berencana mengarahkan mahasiswa dapat memahami pengembangan OS, embedded system, sistem cerdas, dan sebagainya …. Python pilihannya. Dan tentunya, ini sangat tidak sesuai bagi mahasiswa CS/Informatics.

Jadi, wahai mahasiswa saya, seriuslah belajar program C/C++ di semester awal ini. Jangan lupa, kerjalan tugas dengan baik dan tidak nyontek, heheee …. 😉

Leave a Reply