Pengalaman


Ujian kualifikasi berakhir minggu lalu. Terlepas dari hasilnya, banyak hal yang saya pelajari selama mempersiapkan ujian ini.

Secara singkat, ada dua subjek ujian kualifikasi yang harus saya lewati. Tiap subjek, ada empat topik yang diujikan (saya hanya perlu menyelesaikan tiga dari empat topik untuk masing-masing subjek). Kedua subjek itu adalah:

Foundations of Theoretical Computer Science (cs5201), yang meliputi:

  1. Algorithms
  2. Theory of Computation
  3. Principles of Programming Languages
  4. Logic and Artificial Intelligence

Foundations of Computer Systems (cs5202), yang meliputi:

  1. Database Systems
  2. Operating Systems
  3. Computer Networks
  4. Computer Architecture

Kedua subjek ini dinilai sebagai aspek dasar yang minimal sudah dipelajari oleh mahasiswa selama undergraduate study (pendidikan strata 1). Tujuan dari ujian ini adalah untuk menguji pengetahuan dasar, kreatifitas, kemampuan evaluasi, desain and analisa serta mengaplikasikan prinsip-prinsip dasar yang sudah pernah dipelajari. Detail informasi dan referensinya dapat dilihat langsung pada link yang cs5201 dan cs5202.

Beberapa pelajaran berharga yang saya peroleh dari persiapan ujian ini:

Foundation is important

Aspek-aspek dasar sangatlah penting. Seperti bangunan, tanpa pondasi yang kuat, sulit untuk membangun gedung yang tinggi. Masing-masing topik pada kedua subjek saling berkaitan satu sama lain, dan topik-topik ini juga yang menjadi dasar riset lebih lanjut di bidang komputer. Jadi, dasar dari satu topik dapat menyokong dasar yang lain.
Contohnya:

  • struktur data (algoritma) sangat erat kaitannya dengan banyak hal mulai dari index database, filesystem sampai format protokol jaringan
  • page replacement (sistem operasi) berkaitan dengan buffer replacement (database)
  • algoritma routing (jaringan komputer) menggunakan algoritma graph dan dynamic algorithm
  • teori bahasa dan automata (teori komputasi) berkaitan dengan konsep bahasa pemrograman dan analisa kompleksitas algoritma (Polynomial dan Non-deterministic Polynomial)
  • first order logic berkaitan dengan software verification.

Concept is more important than remembering things

Ada banyak algoritma di luar sana. Sangat sulit untuk mengetahui secara detail sebuah algoritma. Bahkan sangat mungkin orang yang mengembangkan algoritma tersebut juga lupa detail algoritma yang dia kembangkan (saya pernah bertanya tentang algoritma di sebuah paper pada penulis aslinya, dan berhubung algoritma tersebut sudah tua, si penulis sendiri juga tidak terlalu ingat detailnya). Pemahaman konsep jauh lebih penting daripada mengingat proses kerja algoritmanya. Dengan memahami konsepnya, kita bisa dengan leluasa mengaplikasikan sebuah algoritma.
Sebagai contoh sederhana,
index pada database pada umumnya diimplementasikan dengan menggunakan hashtable atau B+Tree. Hashtable sangat bagus untuk point query, tetapi sangat buruk untuk range query, sedangkan B+Tree bagus untuk range query, walaupun untuk point query sedikit kalah dibandingkan Hashtable. Database designer dapat mengaplikasikan konsep ini untuk menentukan index database berdasarkan workload query yang sering dilakukan pada database tersebut. Bagaimana dengan attribut yang akan diindex, jumlah buffer yang optimal untuk sebuah sistem? tentunya para database designer sangat akrab dengan hal ini (konsep struktur data, dan buffer replacement sangat berguna di sini).

Independent study

Ujian ini termasuk modul tanpa kuliah. Persiapannya dilakukan sendiri oleh mahasiswa. Kemampuan belajar secara independen merupakan hal yang sangat penting.
Banyaknya materi yang perlu dipersiapkan melatih saya untuk belajar memetakan framework, pengetahuan, dan konsep-konsep yang ada. Selain itu saya menjadi terbiasa untuk bertanya mengapa sesuatu harus didesain seperti itu, dan mengevaluasi pro dan kontra suatu konsep.
Pada dasarnya, semua informasi yang kita perlukan tersedia dan sangat mudah diakses di internet. Tidak ada masa yang lebih mudah dari saat, di mana kita bisa mendapat akses informasi dan pengetahuan secara mudah dan cepat di internet.

Banyak konsep dasar yang tidak pernah saya ketahui selama undergraduate study saya

Pelajaran berharga terakhir ini cukup ironis. Ternyata banyak hal yang merupakan konsep dasar, tidak pernah saya pelajari sebelumnya. Contohnya: query optimization, concurrency control dan recovery (database), konsep dasar P dan NP (algoritma), decidability dan semi-decidability (teori komputasi), hoare logic. Membuktikan kebenaran dan menganalisa kompleksitas (space and time) algoritma yang dikembangkan juga termasuk kebiasaan baru yang dibentuk dari persiapan ini. Believe me, this is very important if you are software developer.
Ada banyak hal yang sudah pernah saya pelajari sebelumnya, dan tidak sedikit juga yang belum pernah saya pelajari sebelumnya. Pada akhirnya, kembali lagi bahwa belajar adalah sebuah proses. Sudah pernah belajar sebelumnya bukan berarti benar-benar paham, dan semakin saya belajar pemahaman terhadap suatu hal akan semakin diperkuat (Remember, learning is an iterative process!!).

    Secara pribadi, saya merasa topik-topik  yang diujikan ini merupakan topik-topik mendasar. Walaupun saya lebih banyak mendalami data mining, machine learning dan artificial intelligence, saya merasa pemahaman terhadap konsep-konsep dasar sangat perlu terutama bagi orang-orang yang membangun sebuah sistem.

    Satu hal yang saya rasakan sangat berbeda dengan studi di Indonesia adalah seminar course. Saat kuliah di Indonesia, seminar tidak dilakukan secara rutin. Bisa satu dua bulan sekali.
    Di Taiwan, seminar merupakan salah satu course “wajib”, terutama untuk graduate student (master dan PhD), dan itu pasti ada di setiap semester. Mereka selalu mendatangkan pembicara tamu tiap minggunya, bisa prof dari universitas lain (mungkin dari luar negeri), para praktisi industri, atau para peneliti, dengan topik/area yang selalu berubah setiap minggunya. Jadi, terkadang menarik untuk diikuti jika sangat berkaitan dengan topik riset kita, namun bisa juga membosankan jika topiknya tidak berhubungan.
    Seminar course ini yang dilakukan secara rutin ini sangat baik sekali menurut saya. Selain menambah wawasan, mahasiswa dapat semakin mengenal kondisi dan keadaan real world dengan adanya pembicara dari praktisi industri atau para peneliti non-akademik. Dan, jika pembicaranya adalah prof dari universitas lain, mahasiswa dapat saling bertukar ilmu dengan pembicara. Karena dilakukan secara rutin, paling tidak setiap minggunya ada hal baru yang bisa diperoleh.
    Btw, pembicara seminar course saya minggu lalu adalah Prof. Chih-Jen Lin. Yang pernah bermain-main dengan SVM pasti tahu orang ini, orang ini sangat terkenal di Taiwan . Sangat menarik karena topiknya memang sesuai dengan interest saya, machine learning. Beliau berbicara tentang Machine Learning: Status & Challenge. Memang agak introduction level karena yang mendengarkan juga bukan cuma orang machine learning, namun sangat menarik melihat aplikasi dan permasalahan yang dihadapi machine learning saat ini.

    Akhirnya ada sedikit waktu untuk posting di blog lagi.
    Menyambung posting sebelumnya, kali ini saya akan sedikit share tentang ketertarikan saya dengan data mining.

    Terima kasih sebelumnya buat pak Gun yang telah menularkan sedikit ilmunya, dan Prof Jiawei Han untuk bukunya yang membuat saya sedikit addicted dengan bidang ini.

    Satu hal yang pasti bahwa saya belajar banyak hal, terutama berkaitan dengan jenis-jenis data dan karakteristiknya serta problem-problem yang dihadapi untuk mengolah jenis data tersebut. Selain itu, aplikasi data mining pada real-world problems membuat saya juga mengetahui perkembangan berbagai macam ilmu, misalnya: bioinformatika, kedokteran, literatur, web, genetika, dan lain-lain. Sangat menarik!!!
    Kemudian, salah satu hal yang cukup istimewa dari data mining adalah posisi disiplin ilmunya yang merupakan irisan banyak bidang ilmu lain seperti kecerdasan buatan, information retrieval, statistik, database, machine learning, visualisasi. Ini membuat saya juga mengenal banyak hal setiap kali membaca hal-hal yang berkaitan dengan data mining.
    Nah, kalo dikaitkan dengan penggunaannya. Data mining dapat diaplikasikan pada banyak bidang. Saya juga banyak mengenal orang di luar computer science yang mempelajari data mining.
    Sebagai salah satu bidang yang lagi hot saat ini di dunia computer science, saya merasa bahwa data mining akan menjadi sangat penting pada tahun-tahun mendatang. Saat semua data dapat dengan mudahnya disimpan dan dibuat, peranan data mining akan menjadi sangat penting untuk dapat mencari hal-hal penting yang tersembunyi di dalamnya. Yang jelas, saat ini kita mulai kebanjiran data, dan hingga saat ini belum ada yang dapat mengolah semuanya dengan sangat baik.

    Internet adalah gudang informasi yang sangat luas. Mencari informasi apapun hampir dipastikan dapat ditemukan di internet, apalagi jika berkaitan dengan topik-topik penelitian.
    Masalahnya banyak yang kesulitan menemukan informasi di internet.
    Artikel “Pencarian Resource di Internet” saya tulis berdasarkan pengalaman saya berburu informasi dan resource di internet. Semoga berguna bagi rekan-rekan yang berburu resource di internet. Artikel ini dapat didownload dari site softcomputing indonesia di bagian link repository (public).
    Ditunggu saran, kritik, dan komentarnya.

    Selamat tahun baru 2007…. 🙂
    Semoga di tahun yang baru ini segala harapan, impian, dan cita-cita kita semua dapat tercapai.
    Posting pertama tahun ini akan dimulai dengan pemikiran saya dan apa yang saya bayangkan tentang hal-hal yang menjadi akan menjadi tren di tahun 2007, terutama yang berkaitan dengan data mining tentunya.
    Banyak hal yang saya lihat dalam email, news, blog, dan rss feed saya di tahun 2006. Saya bisa melihat ada dua hal yang menjadi tren dan sangat diexplore tahun lalu akan menjadi semakin rame yaitu komunitas dan personalisasi. Dua hal ini yang semakin terlihat sejak tahun 2006. Di samping itu perkembangan data mining dari area biomedical, bioinformatics, dan brain informatics serta text mining juga akan semakin ramai diexplore.

    Komunitas
    Flickr, del.icio.us, mySpace, dan youTube merupakan nama-nama yang semakin beken di tahun 2006. Satu hal yang menghubungkan layanan-layanan tersebut adalah bahwa layanan-layanan tersebut sukses membentuk komunitas. Mengapa Yahoo! sangat tertarik membeli Flickr? yang jelas, faktor komunitas inilah yang menjadi daya tarik utama Flickr.
    Issue-iisue yang berhubungan dengan komunitas seperti Social Network Analysis sangat mungkin menjadi salah satu area yang akan berkembang. SIGKDD Exploration pertengahan tahun lalu mengangkat link mining sebagai special topic. Walaupun aplikasi link mining tidak hanya social network saja, namun salah satu aplikasi besar link mining adalah mining social network.
    Task-task link mining seperti group detection, link prediction, dan classification merupakan task-task penting terutama dalam bisnis yang berkaitan dengan komunitas seperti CRM, layanan-layanan iklan, sistem rekomendasi, dan sejenisnya.
    Pengetahuan yang diperoleh dari komunitas dapat dipakai untuk memberikan layanan-layanan secara personal. Ini sangat berkaitan juga dengan personalisasi.

    Personalisasi
    Hal ini berkaitan dengan perkembangan layanan-layanan di internet dan software-software yang saat ini berkembang.
    Menjadi semakin personal. Kira-kira seperti itulah tren perkembangan software dan layanan di internet.
    Browser firefox dengan aneka plug in semakin diminati, Google berusaha menyempurnakan layanan search personal yang akan meningkatkan keakuratan search berdasarkan search yang pernah dilakukan seseorang. Bahkan, isunya Microsoft juga sedang mengembangkan sistem operasi yang basisnya plug in.
    Bisa jadi PC masa depan semakin personal, tinggal memasang plug in sesuai kebutuhan dan keinginan. Atau, mungkin hanya perlu browser saja. Web 2.0 yang sedang dalam pengembangan memungkinkan aplikasi berjalan secara online via browser saja. Lihat saja Google Docs dan Spreadsheets. Walaupun masih terus dikembangkan, bisa jadi ini akan menggeser microsoft office.
    Berkaitan dengan personalisasi salah satu yang menjadi highlight di tahun 2006 lalu adalah Netflix challenge. Selain permasalahannya yang menantang, hadiahnya juga menjadi salah satu daya tarik utama.

    Biomedical, Bioinformatics, dan Brain Informatics
    Area ini merupakan area yang berkembang pesat beberapa tahun belakangan. Kebutuhan akan penemuan obat-obatan baru, dan terapi yang paling tepat untuk suatu penyakit. Algoritma-algoritma yang sangat efisien dan efektif sangat diperlukan dalam mencari pola-pola yang tersembunyi karena data medis dan biologis yang sangat besar. Apalagi datanya juga bervariasi, mulai dari data, teks, bahkan gambar dan multimedia.
    Brain informatics muncul setelah adanya fMRI di mana alat ini dapat mendeteksi aktifasi otak. Dengan menggunakan alat ini, para peneliti dapat mempelajari cara makhluk hidup berpikir, terutama manusia. Bagaimana mental state manusia dalam merespon sebuah rangsangan misalnya suara, atau gambar yang dilihat dapat dipelajari. Sangat mungkin jika, web intelligence mengadaptasi model pengetahuan yang diperoleh dari sini. Internet dapat memberikan respon sesuai dengan yang diharapkan manusia.

    Text Mining
    Jumlah dokumen yang semakin lama semakin banyak, terutama sejak boomingnya blog, menjadikan text mining sebagai area yang sangat aktif berkembang.
    Tidak hanya dokumen di internet, dokumen-dokumen di area biomedical dan bioinformatics juga sangat luar biasa besar.
    Karena itu text mining akan menjadi salah satu area data mining yang akan berkembang pesat.

    Satu hal lagi yang pasti, area yang dijangkau data mining semakin lama akan semakin luas.
    Juga, semakin banyak jenis pengetahuan yang diperoleh dari berbagai data sangat memungkinkan untuk pengembangan Data Mining secara terintegrasi. Holistic Data Mining diprediksikan oleh Nucleus Research dalam top ten prediction for 2007 sebagai salah satu tren 2007.

    Kesulitan mencari resource (atau sumber atau referensi)…..
    Hal itu sering saya dengar, umumnya teman-teman mahasiswa, terutama yang sedang menyelesaikan tugas akhir. Banyak dari mereka sangat sulit mendapatkan referensi tentang hal-hal yang mereka pelajari. Padahal mereka mendapatkan saran search pakai Google (atau search engine yang lain).
    Umumnya orang kesulitan mencari resource karena mereka memang tidak tahu apa yang mereka cari. Keyword adalah salah satu hal yang penting. Lewat kata-kata kunci tersebut hasil pencarian dengan menggunakan search engine akan memberikan hasil yang lebih spesifik, tentunya akan mempertajam lingkup pencarian. Selain kata kunci yang tepat, ada beberapa cara yang biasanya saya gunakan dalam pencarian resource.
    “Berguru pada ahlinya”, mungkin dapat dikatakan seperti itu. Salah satu cara yang baik untuk mencari resource adalah lebih dekat dengan para pakarnya. Search nama pakar tersebut untuk memperoleh homepage mereka. Cara ini sangat efektif, selain Anda dapat memperoleh resource dari orang tersebut, Anda juga sangat mungkin memperoleh resource-resource lain dari orang-orang yang pernah bekerjasama dengan orang tersebut. Dan, umumnya orang komputer selalu mempublikasikan karya-karya mereka pada homepage pribadinya. Dari sini kita juga dapat kontak orang tersebut, berdiskusi seputar penelitian mereka. Saya yakin orang-orang seperti mereka tidak pelit berbagi pengetahuan.
    Bagaimana kita bisa memperoleh nama-nama pakar tersebut??
    Anda bisa memperolehnya dari berbagai sumber. Yang paling sering saya gunakan adalah dari references survey paper (baca posting: Survey papers – eksplorasi awal sebuah topic) dan paper research. Dari sebuah paper kita bisa memperoleh banyak sumber, banyak nama. Tinggal jelajahi aja satu per satu.

    Terima kasih kepada Bapak Gunawan, dosen saya waktu kuliah atas tips yang membuat pencarian resource menjadi menyenangkan

    Saat saya browsing internet hari ini, secara tidak sengaja saya menemukan sebuah project PP-SVM. Setelah membaca overview PP-SVM, salah satu project IDIS (Iowa Data and Information System Group), saya baru benar-benar menyadari tentang perlunya privacy preserving. Jika sebelumnya saya hanya memahaminya secara sempit bahwa keperluan ini hanya untuk menjaga privacy data yang akan dimining, misalnya mining data finansial untuk keperluan fraud detection atau penentuan credit risk. Proses mining dilakukan dengan menjaga kerahasiaan (privacy) sehingga dapat diperoleh pengetahuan tanpa ada privacy yang bocor.
    Namun, pada overview project ini saya memperoleh gambaran yang lebih luas tentang perlunya privacy preserving yaitu mining data terdistribusi. Menggabungkan data dari berbagai sumber (repository) dapat meningkatkan kualitas pengetahuan yang diperoleh, misalnya pada klasifikasi data tingkat akurasinya akan lebih baik.
    Hal ini akan sangat berguna dalam berbagai aplikasi misalnya untuk mining data medis, dan fraud detection. Data Mining untuk menentukan treatment yang paling efektif pada suatu penyakit dengan berbagai gejala dan kondisi pasien akan lebih baik jika data yang dimining diperoleh dari sumber (apalagi jika diperoleh dari semua rumah sakit di dunia). Bisa dibayangkan juga mungkin, jika seluruh instansi perbankan mengabungkan datanya untuk mengatasi fraud detection.
    Hanya saja masalahnya adalah privacy dan security yang menghambat sharing data karena privacy data merupakan asset yang sangat berharga bagi masing-masing pemiliknya. Mereka tidak mungkin membocorkan asset mereka masing-masing. Nah, Privacy preserving data mining akan sangat berperan di sini. Dengan privacy preserving data mining, orang-orang dapat saling share data mereka untuk dimining tanpa perlu kehilangan asset mereka. Pengetahuan yang diperoleh juga dapat dipakai bersama, saling menguntungkan.
    Semakin banyak tahu, data mining ini kelihatan semakin luas. Rasanya yang saya tahu hanya secuil dari ilmu ini.

    Reference:
    1. PP-SVM. http://idis.hwanjoyu.org/ppsvm/ppsvm.html