RSS Feed

Minggu, 31 Januari 2010

Kamis, 28 Januari 2010

RESEP SUKSES BANGSA JEPANG

10 Resep Sukses Bangsa Jepang


musashi.jpgSetelah Hiroshima dan Nagasaki luluh lantak terkena bom atom sekutu (Amerika), Jepang pelan tapi pasti berhasil bangkit. Mau tidak mau harus diakui saat ini Jepang bersama China dan Korea Selatan sudah menjelma menjadi macan Asia dalam bidang teknologi dan ekonomi. Alhamdulillah saya mendapat kesempatan 10 tahun tinggal di Jepang untuk menempuh studi saya. Dalam artikel sebelumnya saya mencoba memotret Jepang dari satu sisi. Kali ini, saya mencoba merumuskan 10 resep yang membuat bangsa Jepang bisa sukses seperti sekarang. Tentu rumusan ini di beberapa sisi agak subyektif, hanya dari pengalaman hidup, studi, bisnis dan bergaul dengan orang Jepang di sekitar perfecture Saitama, Tokyo, Chiba, Yokohama. Intinya kita mencoba belajar sisi Jepang yang baik yang bisa diambil untuk membangun republik ini. Kalau ditanya apakah semua sisi bangsa Jepang selalu baik, tentu jawabannya tidak. Banyak juga budaya negatif yang tidak harus kita contoh ;)

1. KERJA KERAS

Sudah menjadi rahasia umum bahwa bangsa Jepang adalah pekerja keras. Rata-rata jam kerja pegawai di Jepang adalah 2450 jam/tahun, sangat tinggi dibandingkan dengan Amerika (1957 jam/tahun), Inggris (1911 jam/tahun), Jerman (1870 jam/tahun), dan Perancis (1680 jam/tahun). Seorang pegawai di Jepang bisa menghasilkan sebuah mobil dalam 9 hari, sedangkan pegawai di negara lain memerlukan 47 hari untuk membuat mobil yang bernilai sama. Seorang pekerja Jepang boleh dikatakan bisa melakukan pekerjaan yang biasanya dikerjakan oleh 5-6 orang. Pulang cepat adalah sesuatu yang boleh dikatakan “agak memalukan” di Jepang, dan menandakan bahwa pegawai tersebut termasuk “yang tidak dibutuhkan” oleh perusahaan. Di kampus, professor juga biasa pulang malam (tepatnya pagi ;) ), membuat mahasiswa nggak enak pulang duluan. Fenomena Karoshi (mati karena kerja keras) mungkin hanya ada di Jepang. Sebagian besar literatur menyebutkan bahwa dengan kerja keras inilah sebenarnya kebangkitan dan kemakmuran Jepang bisa tercapai.

2. MALU

Malu adalah budaya leluhur dan turun temurun bangsa Jepang. Harakiri (bunuh diri dengan menusukkan pisau ke perut) menjadi ritual sejak era samurai, yaitu ketika mereka kalah dan pertempuran. Masuk ke dunia modern, wacananya sedikit berubah ke fenomena “mengundurkan diri” bagi para pejabat (mentri, politikus, dsb) yang terlibat masalah korupsi atau merasa gagal menjalankan tugasnya. Efek negatifnya mungkin adalah anak-anak SD, SMP yang kadang bunuh diri, karena nilainya jelek atau tidak naik kelas. Karena malu jugalah, orang Jepang lebih senang memilih jalan memutar daripada mengganggu pengemudi di belakangnya dengan memotong jalur di tengah jalan. Bagaimana mereka secara otomatis langsung membentuk antrian dalam setiap keadaan yang membutuhkan, pembelian ticket kereta, masuk ke stadion untuk nonton sepak bola, di halte bus, bahkan untuk memakai toilet umum di stasiun-stasiun, mereka berjajar rapi menunggu giliran. Mereka malu terhadap lingkungannya apabila mereka melanggar peraturan ataupun norma yang sudah menjadi kesepakatan umum.

3. HIDUP HEMAT

Orang Jepang memiliki semangat hidup hemat dalam keseharian. Sikap anti konsumerisme berlebihan ini nampak dalam berbagai bidang kehidupan. Di masa awal mulai kehidupan di Jepang, saya sempat terheran-heran dengan banyaknya orang Jepang ramai belanja di supermarket pada sekitar jam 19:30. Selidik punya selidik, ternyata sudah menjadi hal yang biasa bahwa supermarket di Jepang akan memotong harga sampai separuhnya pada waktu sekitar setengah jam sebelum tutup. Seperti diketahui bahwa Supermarket di Jepang rata-rata tutup pada pukul 20:00. Contoh lain adalah para ibu rumah tangga yang rela naik sepeda menuju toko sayur agak jauh dari rumah, hanya karena lebih murah 20 atau 30 yen. Banyak keluarga Jepang yang tidak memiliki mobil, bukan karena tidak mampu, tapi karena lebih hemat menggunakan bus dan kereta untuk bepergian. Termasuk saya dulu sempat berpikir kenapa pemanas ruangan menggunakan minyak tanah yang merepotkan masih digandrungi, padahal sudah cukup dengan AC yang ada mode dingin dan panas. Alasannya ternyata satu, minyak tanah lebih murah daripada listrik. Professor Jepang juga terbiasa naik sepeda tua ke kampus, bareng dengan mahasiswa-mahasiswanya.

4. LOYALITAS

Loyalitas membuat sistem karir di sebuah perusahaan berjalan dan tertata dengan rapi. Sedikit berbeda dengan sistem di Amerika dan Eropa, sangat jarang orang Jepang yang berpindah-pindah pekerjaan. Mereka biasanya bertahan di satu atau dua perusahaan sampai pensiun. Ini mungkin implikasi dari Industri di Jepang yang kebanyakan hanya mau menerima fresh graduate, yang kemudian mereka latih dan didik sendiri sesuai dengan bidang garapan (core business) perusahaan. Kota Hofu mungkin sebuah contoh nyata. Hofu dulunya adalah kota industri yang sangat tertinggal dengan penduduk yang terlalu padat. Loyalitas penduduk untuk tetap bertahan (tidak pergi ke luar kota) dan punya komitmen bersama untuk bekerja keras siang dan malam akhirnya mengubah Hofu menjadi kota makmur dan modern. Bahkan saat ini kota industri terbaik dengan produksi kendaraan mencapai 160.000 per tahun.

5. INOVASI

Jepang bukan bangsa penemu, tapi orang Jepang mempunyai kelebihan dalam meracik temuan orang dan kemudian memasarkannya dalam bentuk yang diminati oleh masyarakat. Menarik membaca kisah Akio Morita yang mengembangkan Sony Walkman yang melegenda itu. Cassete Tape tidak ditemukan oleh Sony, patennya dimiliki oleh perusahaan Phillip Electronics. Tapi yang berhasil mengembangkan dan membundling model portable sebagai sebuah produk yang booming selama puluhan tahun adalah Akio Morita, founder dan CEO Sony pada masa itu. Sampai tahun 1995, tercatat lebih dari 300 model walkman lahir dan jumlah total produksi mencapai 150 juta produk. Teknik perakitan kendaraan roda empat juga bukan diciptakan orang Jepang, patennya dimiliki orang Amerika. Tapi ternyata Jepang dengan inovasinya bisa mengembangkan industri perakitan kendaraan yang lebih cepat dan murah. Mobil yang dihasilkan juga relatif lebih murah, ringan, mudah dikendarai, mudah dirawat dan lebih hemat bahan bakar. Perusahaan Matsushita Electric yang dulu terkenal dengan sebutan “maneshita” (peniru) punya legenda sendiri dengan mesin pembuat rotinya. Inovasi dan ide dari seorang engineernya bernama Ikuko Tanaka yang berinisiatif untuk meniru teknik pembuatan roti dari sheef di Osaka International Hotel, menghasilkan karya mesin pembuat roti (home bakery) bermerk Matsushita yang terkenal itu.

6. PANTANG MENYERAH

Sejarah membuktikan bahwa Jepang termasuk bangsa yang tahan banting dan pantang menyerah. Puluhan tahun dibawah kekaisaran Tokugawa yang menutup semua akses ke luar negeri, Jepang sangat tertinggal dalam teknologi. Ketika restorasi Meiji (meiji ishin) datang, bangsa Jepang cepat beradaptasi dan menjadi fast-learner. Kemiskinan sumber daya alam juga tidak membuat Jepang menyerah. Tidak hanya menjadi pengimpor minyak bumi, batubara, biji besi dan kayu, bahkan 85% sumber energi Jepang berasal dari negara lain termasuk Indonesia. Kabarnya kalau Indonesia menghentikan pasokan minyak bumi, maka 30% wilayah Jepang akan gelap gulita :) Rentetan bencana terjadi di tahun 1945, dimulai dari bom atom di Hiroshima dan Nagasaki, disusul dengan kalah perangnya Jepang, dan ditambahi dengan adanya gempa bumi besar di Tokyo. Ternyata Jepang tidak habis. Dalam beberapa tahun berikutnya Jepang sudah berhasil membangun industri otomotif dan bahkan juga kereta cepat (shinkansen). Mungkin cukup menakjubkan bagaimana Matsushita Konosuke yang usahanya hancur dan hampir tersingkir dari bisnis peralatan elektronik di tahun 1945 masih mampu merangkak, mulai dari nol untuk membangun industri sehingga menjadi kerajaan bisnis di era kekinian. Akio Morita juga awalnya menjadi tertawaan orang ketika menawarkan produk Cassete Tapenya yang mungil ke berbagai negara lain. Tapi akhirnya melegenda dengan Sony Walkman-nya. Yang juga cukup unik bahwa ilmu dan teori dimana orang harus belajar dari kegagalan ini mulai diformulasikan di Jepang dengan nama shippaigaku (ilmu kegagalan). Kapan-kapan saya akan kupas lebih jauh tentang ini :)

7. BUDAYA BACA

Jangan kaget kalau anda datang ke Jepang dan masuk ke densha (kereta listrik), sebagian besar penumpangnya baik anak-anak maupun dewasa sedang membaca buku atau koran. Tidak peduli duduk atau berdiri, banyak yang memanfaatkan waktu di densha untuk membaca. Banyak penerbit yang mulai membuat man-ga (komik bergambar) untuk materi-materi kurikulum sekolah baik SD, SMP maupun SMA. Pelajaran Sejarah, Biologi, Bahasa, dsb disajikan dengan menarik yang membuat minat baca masyarakat semakin tinggi. Saya pernah membahas masalah komik pendidikan di blog ini. Budaya baca orang Jepang juga didukung oleh kecepatan dalam proses penerjemahan buku-buku asing (bahasa inggris, perancis, jerman, dsb). Konon kabarnya legenda penerjemahan buku-buku asing sudah dimulai pada tahun 1684, seiring dibangunnya institut penerjemahan dan terus berkembang sampai jaman modern. Biasanya terjemahan buku bahasa Jepang sudah tersedia dalam beberapa minggu sejak buku asingnya diterbitkan. Saya biasa membeli buku literatur terjemahan bahasa Jepang karena harganya lebih murah daripada buku asli (bahasa inggris).

8. KERJASAMA KELOMPOK

Budaya di Jepang tidak terlalu mengakomodasi kerja-kerja yang terlalu bersifat individualistik. Termasuk klaim hasil pekerjaan, biasanya ditujukan untuk tim atau kelompok tersebut. Fenomena ini tidak hanya di dunia kerja, kondisi kampus dengan lab penelitiannya juga seperti itu, mengerjakan tugas mata kuliah biasanya juga dalam bentuk kelompok. Kerja dalam kelompok mungkin salah satu kekuatan terbesar orang Jepang. Ada anekdot bahwa “1 orang professor Jepang akan kalah dengan satu orang professor Amerika, hanya 10 orang professor Amerika tidak akan bisa mengalahkan 10 orang professor Jepang yang berkelompok”. Musyawarah mufakat atau sering disebut dengan “rin-gi” adalah ritual dalam kelompok. Keputusan strategis harus dibicarakan dalam “rin-gi”.

9. MANDIRI

Sejak usia dini anak-anak dilatih untuk mandiri. Irsyad, anak saya yang paling gede sempat merasakan masuk TK (Yochien) di Jepang. Dia harus membawa 3 tas besar berisi pakaian ganti, bento (bungkusan makan siang), sepatu ganti, buku-buku, handuk dan sebotol besar minuman yang menggantung di lehernya. Di Yochien setiap anak dilatih untuk membawa perlengkapan sendiri, dan bertanggung jawab terhadap barang miliknya sendiri. Lepas SMA dan masuk bangku kuliah hampir sebagian besar tidak meminta biaya kepada orang tua. Teman-temen seangkatan saya dulu di Saitama University mengandalkan kerja part time untuk biaya sekolah dan kehidupan sehari-hari. Kalaupun kehabisan uang, mereka “meminjam” uang ke orang tua yang itu nanti mereka kembalikan di bulan berikutnya.

10. JAGA TRADISI

Perkembangan teknologi dan ekonomi, tidak membuat bangsa Jepang kehilangan tradisi dan budayanya. Budaya perempuan yang sudah menikah untuk tidak bekerja masih ada dan hidup sampai saat ini. Budaya minta maaf masih menjadi reflek orang Jepang. Kalau suatu hari anda naik sepeda di Jepang dan menabrak pejalan kaki , maka jangan kaget kalau yang kita tabrak malah yang minta maaf duluan. Sampai saat ini orang Jepang relatif menghindari berkata “tidak” untuk apabila mendapat tawaran dari orang lain. Jadi kita harus hati-hati dalam pergaulan dengan orang Jepang karena ”hai” belum tentu “ya” bagi orang Jepang ;) Pertanian merupakan tradisi leluhur dan aset penting di Jepang. Persaingan keras karena masuknya beras Thailand dan Amerika yang murah, tidak menyurutkan langkah pemerintah Jepang untuk melindungi para petaninya. Kabarnya tanah yang dijadikan lahan pertanian mendapatkan pengurangan pajak yang signifikan, termasuk beberapa insentif lain untuk orang-orang yang masih bertahan di dunia pertanian. Pertanian Jepang merupakan salah satu yang tertinggi di dunia.

Mungkin seperti itu 10 resep sukses yang bisa saya rangkumkan. Bangsa Indonesia punya hampir semua resep orang Jepang diatas, hanya mungkin kita belum mengasahnya dengan baik. Di Jepang mahasiswa Indonesia termasuk yang unggul dan bahkan mengalahkan mahasiswa Jepang. Orang Indonesia juga memenangkan berbagai award berlevel internasional. Saya yakin ada faktor “non-teknis” yang membuat Indonesia agak terpuruk dalam teknologi dan ekonomi. Mari kita bersama mencari solusi untuk berbagai permasalahan republik ini. Dan terakhir kita harus tetap mau belajar dan menerima kebaikan dari siapapun juga.

Tetap dalam perdjoeangan !


Bagaimana Mahasiswa Ilmu Komputer Belajar: Mengkritisi Kurikulum dan Gaya Pendidikan Kita

by Romi Satria Wahono

Sepulang dari study di Jepang tahun 2004, saya banyak mengajar di beberapa Universitas di Jakarta, terutama di fakultas atau jurusan yang berhubungan dengan ilmu komputer dan teknik informatika. Saya mengajar mata kuliah yang memang saya kuasai, dan terkait langsung dengan tema penelitian saya. Diantaranya adalah mata kuliah Software Engineering (Rekayasa Perangkat Lunak), Algoritma dan Bahasa Pemrograman (Algorithm and Programming Language), dan Basis Data (Database). Kebanyakan mata kuliah tersebut diajarkan setelah semester 5 (tingkat 3 atau 4). Dalam interaksi belajar mengajar di kelas, saya menemukan beberapa fenomena menarik berhubungan pengetahuan mahasiswa dan kurikulum yang diajarkan di universitas.

Saya menemukan tipe mahasiswa yang ketika saya terangkan dia kesulitan menangkap beberapa konsep yang seharusnya sudah dia dapat di semester sebelumnya. Katanya, itu tidak diajarkan di universitas tersebut. Fenomena ini terjadi dalam universitas yang memotong (mengubah) beberapa kurikulum yang seharusnya diajarkan, karena tidak ada SDM pengajar (dosen). Di lain pihak, saya menemukan fenomena lain dimana mahasiswa mengatakan bahwa dia mengenal beberapa konsep yang saya singgung, hanya dia lupa mata kuliah yang mengajarkannya. Fenomena ini terjadi di universitas yang mencekoki mahasiswanya dengan mata kuliah berlebih, dengan argumentasi bahwa supaya mahasiswa mendapat pengetahuan secara lengkap. Sering dosen mengajar bukan pada bidang yang dikuasai, hal itu terpaksa dilakukan oleh universitas untuk mengejar mata kuliah yang harus jalan. Dua-duanya ternyata membuat mahasiswa jadi linglung, yang satu linglung karena memang tidak pernah diajarkan, dan yang lain linglung karena terlalu banyak yang diajarkan. Intinya sih kedua-duanya sama-sama nggak ngerti ;) .

Fenomena aneh lain tentunya masih banyak, misalnya mahasiswa tingkat 3 jurusan teknik informatika (atau ilmu komputer) yang tidak kenal siapa Dennis Ritchie ;) , tidak bisa membuat program meskipun hanya untuk sebuah fungsi untuk memunculkan Hello World (apalagi mengkompilenya), tidak paham tentang paradigma pemrograman, juga tidak paham apa itu kompiler, shell, pointer, fungsi, array, dan tentu semakin mual-mual kalau saya sebut algoritma atau struktur data :( .

Bagaimana seorang mahasiswa Ilmu Komputer belajar? Saya mencoba memberi gambaran umum dengan mengambil studi kasus bagaimana jurusan ilmu komputer di Saitama University mengatur kurikulumnya. Saitama University bukan termasuk universitas yang terbaik untuk ilmu komputer, umurnya masih sangat muda dengan SDM pengajar (professor) yang juga terbatas, bahkan beberapa professor diambil dari jurusan elektro untuk beberapa mata kuliah tertentu. Ini tidak mengurangi keseriusan universitas untuk menyajikan pendidikan dan kurikulum terbaik untuk mahasiswa-mahasiswanya.

Saya mulai program undergraduate (S1) di Department of Information and Computer Sciences, Saitama Univesity tahun 1995. Tingkat I (semester 1 dan 2), mata kuliah dasar (kiso kamoku) sangat dominan. Kalkulus, statistik, probabilitas, fisika dasar, kimia dasar, discrete mathematics, dan mata kuliah dasar lain banyak diajarkan. Semester 2 sudah ada beberapa mata kuliah jurusan (senmon kamoku) yang diajarkan, diantaranya adalah bahasa pemrograman, bahasa C (prosedural), HTML, dengan praktek lab untuk mengenal Unix, shell, text editor (emacs), laTeX (TeX), gnuplot, kompiler, teknik typing 10 jari, dsb. Pada saat masuk tingkat II (semester 3), saya menyadari bahwa mata kuliah tingkat I membekali saya dengan beberapa tool dan konsep dasar, sehingga saya bisa survive mengikuti proses belajar mengajar di tingkat selanjutnya. Lab komputer hanya berisi Unix terminal. Seluruh laporan dan tugas harus ditulis dengan laTeX dengan text editor emacs, apabila memerlukan bahasa pemrograman harus dibuat dalam bahasa C dan dikompilasi dengan GCC. Apabila ada data yang harus ditampilkan dalam bentuk grafik, bisa menggunakan Gnuplot. Setiap mahasiswa harus mempunyai situs web (homepage), dimana selain berisi aktifitas pribadi, juga berisi seluruh laporan dan tugas yang dikerjakan. Selain lewat situs web, laporan harus dikirim dengan menggunakan email ke professor pengajar, dalam format PS atau PDF dengan source dari laTeX.

Yang menarik, bahwa gaya pendidikan yang ditempuh menganut konsep korelasi, berhubungan, saling mendukung dan terarah dari semester 1 sampai akhir. Skill terhadap komputer dan bahasa pemrograman juga cukup dalam, karena ada kewajiban menguasai bahasa C, HTML, Unix, Linux, Shell, dsb yang bukan untuk ritualitas mata kuliah semata, tapi untuk bekal sang mahasiswa supaya bisa survive di jenjang semester berikutnya. Apakah tidak diajarkan paradigma dan bahasa pemrograman lain? jawabannya adalah diajarkan, tetapi untuk konsumsi mahasiswa tingkat 3 (semester 5 dan 6). Pemrograman berorientasi objek (Java), functional programming (LISP dan Scheme), dan Prolog diajarkan pada semester 5 dan 6 untuk membidik supaya sang murid “nyantol” ketika mengikuti mata kuliah Kecerdasan Buatan (Artificial Intelligence) dan Rekayasa Perangkat Lunak (Software Engineering). Dan dengan sebelumnya menguasai bahasa prosedural seperti C, kita semakin “ngeh” tentang pentingnya paradigma berorientasi objek ketika mendalami mata kuliah tentang pemrograman berorientasi objek.

Korelasi mata kuliah ini nampak juga dari deretan gaya pengajaran, setelah mahir berbahasa C, kita diminta ngoprek Minix yang terbuat dari bahasa CÂ (sistem operasi buatan Andrew S. Tanenbaum, yang menginspirasi Linus Torvald membuat Linux) pada mata kuliah Operating System (Sistem Operasi), membuat sendiri shell (dengan fungsi yang mendekati bash dan cshell) diatas sistem operasi yang sudah kita oprek, dan diminta mendesain dan mengembangkan bahasa pemrograman sendiri di mata kuliah Compiler Engineering (teknik kompilasi). Berurutan, berhubungan, tetap fokus dan mendalam, itu mungkin resep desain kurikulum yang diajarkan.

Pada saat tingkat 2 dan 3 itulah sang mahasiswa diarahkan untuk menuju arah kompetensi sesuai dengan yang diinginkan. Dan yang pasti, hampir seluruh mahasiswa mendapatkan “bekal” dan “skill” yang relatif sepadan untuk bergerak. Mahasiswa yang ingin melanjutkan karier menjadi seorang Programmer, disiapkan mata kuliah Struktur Data, Algorithm, Programming Language, Compiler Engineering, Automaton dan Formal Language. Yang ingin jadi Software Engineer, harus fokus mengikuti mata kuliah Software Engineering, Industrial Software Engineering, System Development Engineering, Software Project Management, dsb. Yang ingin berkarier di perusahaan animasi dan grafis, harus serius mengikuti mata kuliah Computer Graphics, Image Processing, CAD Enginering, Pattern Recognition, dsb. Yang siap bergelut di perusahaan Telekomunikasi, harus melahap mata kuliah Information Theory, Communication System, Signal Processing, Speech Processing, dsb. Yang ingin ke arah Hardware, harus menguasai mata kuliah Electronic Circuits, Electronic Devices, Computer Architecture, Quantum Mechanics, Logic Circuits, dsb. Bagaimana dengan yang tertarik dengan Kecerdasan Buatan? harus mau berpusing-pusing ria di mata kuliah Artificial Intelligence, Expert System, Knowledge Engineering, Neural Network, dsb.

Rencana pengembangan karier ini semakin matang dan tertata ketika masuk ke tingkat 4, seluruh mahasiswa harus menjalani 1 tahun terakhir di grup penelitian yang dipimpin oleh seorang professor. Penelitian dan thesis (tugas akhir) sifatnya wajib dilakukan, untuk memperdalam dan memahami implementasi riil dari bidang ilmu peminatan yang direncanakan dan dicita-citakan sang mahasiswa. Apa itu bidang ilmu peminatan? Ya bidang yang sudah saya sebut diatas tadi. Programming, Software Engineering, Communication System, Computer Graphics, Artificial Intelligence, Computer Hardware, Networking, dsb. Masing-masing professor dengan grup penelitian biasanya fokus di satu atau dua bidang ilmu peminatan, termasuk didalamnya penelitian yang dilakukan dan mata kuliah yang diajar. Tidak ada seorang professor Software Engineering yang mendapat jatah mengajar mata kuliah Computer Graphics, karena memang bukan bidangnya. Kalaupun bisa memberikan, tentu tidak menguasai the root problem (akar permasalahan) yang ada di bidang tersebut, ini yang membuat mata kuliah jadi hambar, tidak mendalam dan mahasiswa jadi bingung memahami apa hakekat dari mata kuliah tersebut.

Jadi masing-masing mata kuliah ada arah, ada desain yang ingin dicapai, dan ini yang dijelaskan di awal perkuliahan. Tidak ada kegiatan OSPEK yang berisi penyiksaan dan penghinaan, tidak ada hura-hura pesta masuk perguruan tinggi, yang ada adalah penjelasan tentang kurikulum secara komprehensif. Sang mahasiswa ingin menjadi apa, tertarik di bidang apa, itu yang dibidik dan diarahkan oleh universitas dengan penjelasan desain kurikulum beserta dengan mata kuliah apa yang sebaiknya diambil oleh sang mahasiswa. Jumlah kredit untuk syarat kelulusan S1 juga tidak sepadat Indonesia, hanya sekitar 118, sudah termasuk didalamnya penelitian dan tugas akhir yang dihitung sekitar 10-12 kredit. Jadi total kredit dari mata kuliah hanya sekitar 106. Kelonggaran waktu yang ada dapat kita gunakan untuk kerja parttime di perusahaan-perusahaan IT, mengasah kemampuan jadi programmer, network engineer, admin, software designer, dsb. Mahasiswa mendapatkan konsep di kelas, dan mematangkan diri di lapangan, tempat kita menggarap project maupun tempat kerja. Itu adalah strategi penting dalam mengkader para computer scientist.Â

Universitas di Indonesia yang membuka fakultas/jurusan Ilmu Komputer dan Teknik Informatika harus berbenah. Tidak hanya berambisi mengejar jumlah murid karena konsep aji mumpung (mumpung TI sedang booming, terima mahasiswa sebanyak banyaknya :( ), tapi juga harus bertanggungjawab terhadap figur dan karakter hasil didikan dan lulusan universitasnya. Untuk para calon mahasiswa, pilihlah Universitas yang memiliki kurikulum dan dosen pengajar yang baik. Jangan memilih jurusan karena trend, ikut-ikutan teman, atau alasan tidak logis lainnya. Pilihlah karena memang kita berminat untuk berkarier di bidang tersebut.

Kiat Meningkatkan Nilai IPK

by Romi Satria Wahono

ipk.jpgMas Romi, bagaimana ya teknik meningkatkan nilai IPK saya. Selama ini nilai IPK saya di bawah 3 terus nih. Tolong saya mas. (Nanang, Padang)

Haaareee geenee IPK masih rendah? ;) Ok untuk siswa atau mahasiswa yang bermasalah dengan nilai raport dan IPK, sepertinya perlu mengikuti kiat yang selama ini saya lakukan. Kiat yang saya lakukan adalah best practice, terbukti bin manjur bisa meraup dolar eh maksud saya nilai yang memuaskan, sudah saya buktikan sejak saya bersekolah di SMA dan 10 tahun di jurusan computer science di Saitama University. Kiatnya pasti banyak ya? Oh tidak, justru sangat sedikit, cuman ada dua. Kiatnya pasti nyontek ulangan atau copy paste tugas mandiri? Tidak sama sekali. Kiat saya halal dan toyib, jauh dari unsur kemaksiatan dan perbuatan tidak terpuji lain. Tertarik? Ikuti terus artikel ini.

Nah kiat mendapatkan nilai raport dan IPK tinggi itu hanya ada dua:

  1. Kejar nilai untuk mata pelajaran atau mata kuliah yang secara umum tidak terlalu disenangi siswa/mahasiswa. Apa itu? Oh banyak, contohnya geografi, agama, kesenian, dsb atau untuk yang kuliah di jurusan computing, ada fisika dasar, teknik kompilasi, automaton/formal language, dsb. Lakukan survey kecil-kecilan ke temen seangkatan atau kakak angkatan, saya yakin banyak sekali mata kuliah yang tidak digemari mahasiswa. Intinya di mata kuliah yang diemohi mahasiswa itu, mereka biasanya down nilainya. Nah ini dia kesempatan kita, di saat nilai mereka “pasti rendah”, kita berdjoeang untuk nilai “pasti tinggi” … hehehe. Nah hasil dari tahap satu yaitu kalau ada IPK khusus untuk “mata kuliah tidak populer” kita pasti nomor satu :)

  2. Sudah mantab dengan langkah satu? Langkah dua adalah jangan berhenti, lanjutkan mengejar nilai untuk mata pelajaran atau mata kuliah yang secara umum disenangi siswa/mahasiswa … hehehe. Belajar keras, kerjakan semua tugas, kalau perlu kejar terus dosen kalau ada yang masih nggak ngerti di mata kuliah “populer” itu. Kalaupun kita tidak bisa mendapatkan nilai sempurna alias sedang-sedang saja ya nggak apa-apa, asal sudah berusaha. Yang pasti karena IPK adalah nilai kumulatif dari mata kuliah “tidak populer” dan “populer”, total nilai kita akan tetap tinggi tho. Lha kan kita sudah jadi the first rank untuk mata kuliah “tidak populer” … hihihi.

Akhir semester silakan dilihat nilai IPK atau raportnya, saya yakin nilai anda akan meningkat. Kalau masih belum naik, lanjutkan tahap 1 dan 2 di semester berikutnya. Kalaupun sampai akhir kuliah tidak naik-naik juga, ya apa boleh buat, memang level kekuatan anda seperti itu. Mungkin anda kurang berdoa, kurang sholat malam atau kurang puasa senin-kamis, sehingga ridha dan “lucky” dari yang Diatas tidak menyertai anda. Tapi jangan khawatir, IPK bukan segalanya, masih banyak cara lain dan perlu juga dicatat banyak orang sukses yang IPKnya hancur kok. Untuk yang sudah ber-IPK bagus, jangan cepat puas apalagi sombong dan takabur, karena faktor-faktor itulah yang membuat orang seperti anda tidak sukses ketika masuk ke dunia kerja.

Terakhir, sekali lagi, IPK nggak penting karena hanya masalah dasar saja. Makanya, kalau IPK yang dasar saja sudah jatuh duluan, gimana yang lain … hehehe

ttd-small.jpg

TIPS AGAR MENJADI MAHASISWA SUKSES

Tips Menjadi Mahasiswa Sukses

by Romi Satria Wahono

mahasiswasukses.gifAnda mahasiswa yang luntang-luntung kurang kerjaan? Sudah mulai mual ndengerin kuliah pak dosen? Mulai bete dengan suasana kos-kosan? Apalagi teman dekat sudah mulai pindah kos karena nggak tahan anda utangin terus hehehe. Pingin teriak sekeras-kerasnya tapi takut ditimpukin tetangga? Atau dulu punya mimpi pingin ikut mbangun republik tercinta, tapi jangankan itu, mbangun diri sendiri saja susah bo :) Apa salah jurusan yah? Padahal dulu dah baca-baca tulisan tips dan trik memilih jurusan. Bingung karena nggak dapat apa-apa di universitas. Jadi makin terseok-seok dan tanpa ruh kalau baca tulisan tentang jenis mahasiswa. Hmmm … coba deh ikuti tulisan ini, siapa tahu ada tips yang cocok dan bisa bikin semangat bangkit.

  1. Bangun tidur, berdiri di depan kaca, ucapkan bahwa andalah yang terbaik di kos-kosan ini (Ya soalnya anda sendirian sekarang :D ) Kalau anda merasa itu kurang, ucapkan bahwa andalah yang terbaik di kelas anda atau terganteng di kampus anda. Yakinilah bahwa anda adalah manusia pilihan, paling tidak terpilih sebagai wakil desa anda yang bisa kuliah di universitas ini. Atau kalau lebih pede lagi, bilang bahwa andalah makhluk terbaik di muka bumi, ya memang benar, paling tidak dibandingkan dengan hewan dan tumbuhan :P

  2. Mandi yang bersih, sisir dan rapikan rambut anda. Ambil handphone, bikin senyuman paling manis, foto wajah anda. Ulangi lagi kalau masih kurang enak dilihat. Kalau sampai 10 kali jepretan masih juga kurang enak di lihat, ambil secara acak saja. Mungkin wajah anda memang tidak terlalu enak dilihat :)

  3. Nyalakan komputer, akses internet, nggak usah ke mana-mana, langsung saja buka http://wordpress.com. Buat account blog di sana.

  4. Renungi hidup anda, ingat-ingat lagi perjalanan hidup dari kecil sampai sekarang dan apa yang telah anda lakukan. Masuk ke menu administrasi http://wordpress.com, klik Write->Page. Buat tulisan dengan judul About Me, tuliskan resume, kisah hidup dan Curriculum Vitae (CV) anda. Tuliskan “apa saja” seluruh kegiatan anda di sana. Dari lahir, SD, SMP, SMA dan kuliah. Pernah jadi ketua OSIS, sekretaris, bendahara atau pesuruh OSIS? Atau pernah ikutan nyembelih kambing kurban, pernah jadi penjaga masjid, pernah bikin workshop komputer, pernah menang lomba balap karung, cerdas cermat atau lomba gambar di kampung. Tulis semuanya. Kerahkan seluruh ingatan anda, anggap saja nostalgia. Sekali lagi, tulis semua, apapun yang anda lalui di “Page” berjudul About Me tadi. Sudah puas? Klik “Publish“. Kalau ada yang kurang tambahi lagi, kalau merasa halaman itu nggak cukup dan harus tulis dalam OO Writer atau MS Word, copy and paste saja draft tadi. Jangan lupa convert ke PDF dan upload di halaman About Me. Perbaiki terus CV anda setiap ada kegiatan yang anda lakukan, sekecil apapun. Beri juga skrinsyuut kalau diperlukan. Oh ya, foto manis anda tadi jangan lupa dipasang di halaman About Me, kalau pingin contoh, termasuk gimana nempatan CV versi PDF cek di sini deh :)

  5. Sekarang ayok berdiri, jalan ke meja belajar anda. Kenangi kehidupan kampus anda, senangnya ketika diterima di universitas ini, semangatnya ikutan ospek (atau apa ya namanya sekarang?), dosen-dosen anda yang baik dan menyenangkan, nilai mata kuliah anda yang naik turun (yang pasti lebih banyak turunnya ;) ), dan mungkin juga teman-teman mahasiswi anda yang sudah menolak cinta anda :) Kenang semua. Olala, ada kenangan manis disaat anda berjaya dengan satu mata kuliah yang anda senangi, dosennya juga maknyus kalau ngajar, dan anda akhirnya anda mendapatkan berkah nilai A diantara tumpukan nilai C, D dan E.

  6. Mata kuliah apa itu ya, yang dulu anda senangi? Cari buku catatan anda, obrak abrik meja belajar untuk nyari buku textbook mata kuliah itu. Ketemu? Oalah anda ternyata jagoan Rekayasa Perangkat Lunak. Ok sekarang lihat lagi tulisan di buku catatan anda yang sudah lusuh. Cocokan dengan buku textbook. Sekarang tulis kenangan anda tentang mata kuliah Rekayasa Perangkat Lunak itu. Jangan tulis yang lain, konsentrasi saja ke satu mata kuliah itu. Tulisan apapun asal berhubungan dengan Rekayasa Perangkat Lunak. Satu topik tulisan cukup 4-6 paragraf saja, jangan kepanjangan. Kalau belum puas, buat lagi topik lain, batasi juga 4-6 paragraf. Nulisnya di Write->Post lho ya, jangan lupa.

  7. Kurang bahan? Dulu kayaknya pernah pinjem buku bagus tentang Rekayasa Perangkat Lunak di perpustakaan? Ok, kebetulan dah masuk waktu dhuhur dan makan siang. Jangan lupa mampir dulu untuk sholat dhuhur di masjid samping kos-kosan, dan makan siang di warteg andalan. Ok, genjot sepeda ke kampus, langsung ke perpus. Cari buku kenangan anda tadi. Juga cari banyak berita dan tulisan populer tentang software dan metode pengembangan. Kalau perpus ada internet, balik lagi ke http://wordpress.com anda. Lanjutkan tulisan-tulisan anda.

  8. Ops nggak terasa sampai maghrib di perpus. Sholat, makan malam dan pulang. Ingat-ingat deh dulu kayaknya pernah ngerjain Tugas Mandiri berhubungan dengan software? Ok kumpulin file-filenya yuk. Dari mata kuliah apa saja lah, bisa Rekayasa Perangkat Lunak, Dasar Pemrograman, Pemrograman berorientasi Obyek, atau apapun. Kalau ada program yang dulu dibuat juga kumpulin. Dibahas saja program yang pernah dibuat, sekaligus dibagi gratis tuh codenya. Walah bisa jadi satu kategori baru tuh di blog :)

  9. Sebelum tidur, baca bismillah, dan ucapkan syukur hari ini anda sudah melakukan kegiatan yang sangat baik dan produktif, kegiatan yang bisa membanggakan orang tua, teman, tetangga, dan dosen anda. Dan Insya Allah bisa menjadi bekal kontribusi anda ke republik tercinta ini.

  10. Bangun pagi, nggak usah kebanyakan tidur, anda bukan bayi lagi :) Sholat shubuh dan lanjutkan petualangan hidup anda.

  11. Sebelum masuk kuliah baca-baca buku dulu deh, hari ini pak dosen mau ngajari apa, siapa tahu bisa jadi bahan tulisan. Kalau ada waktu pagi bikin resume atau rangkuman bab yang pak dosen akan ajar. Insya Allah saya jamin anda akan masuk ke kelas dengan suasana yang berbeda. Anda tidak lagi tidur. Horeeee! Lho kok bisa, ya soalnya anda jadi pingin konfirmasi ke pak dosen, yang anda pahami dari rangkuman tadi bener nggak. Dan anda akan nyimak karena anda berharap bisa jadi bahan tulisan. Ada kemungkinan anda akan lebih pinter dari pak dosen, karena kadang saking sibuknya ngerjain proyek, pak dosen kadang lupa belajar … hihihi. Kalau ada pertanyaan yang nggak bisa dijawab pak dosen, anda angkat tangan saja, bilang bahwa pernah mengupas tuntas masalah itu, sebutkan URL blog anda. Bantu dosen anda jawablah, siapa tahu malah nanti diminta bantu dosen ngerjain proyek atau malah jadi asisten dosen. Cuman jangan galak-galak sama adik kelas yah, jaman dosen bangga karena nggak ngelulusin mahasiswa sudah kuno. Yang trend sekarang dosen gaul, kayak si broer sang dosen flamboyan (ngajar di semua kampus di jakarta bo) dan mbah IMW dari gundar :)

  12. Lanjutkan perdjoeangan. Mudah-mudahan semester ini tumpukan nilai A anda semakin banyak. Dan Insya Allah saya jamin, anda tidak akan kesulitan ngerjain skripsi atau TA di semester akhir. Kok bisa? Ya, anda sudah terbiasa banyak baca dan nulis, ini modal penting bikin skripsi. Logikanya kalau anda banyak nulis, pasti banyak baca tho :) Jangan lupa untuk submit artikel-artikel anda di IlmuKomputer.Com, prosedurnya ada di sini nih. Ini penting karena kabarnya numpang nampang di IlmuKomputer.Com bisa bawa hoki, bisa dapat jodoh, pekerjaan, project atau ketularan gemuk dari foundernya. Yang pasti bisa bantu ningkatin traffic blog anda :)

  13. Kalau kebiasaan 1-12 anda lakukan sampai anda lulus, Insya Allah anda tidak akan kesulitan mencari pekerjaan. Justru pekerjaan yang akan mencari anda. Tulisan-tulisan anda di blog sudah di-indeks oleh banyak mesin mencari. Bahkan mungkin kalau orang googling dengan keyword “Rekayasa Perangkat Lunak Indonesia“, yang muncul nomor satu adalah blog anda. Anda nggak perlu bawa CV ke mana-mana karena anda sudah tulis di blog anda. Tentu anda akan semakin surprise kalau ada penerbit yang nawarin membukukan tulisan-tulisan Rekayasa Perangkat Lunak yang anda telateni selama ini. Kesempatan jadi dosen bukan mimpi lagi, lha wong yang nulis bukunya anda je. Wajar tho sekalian ngajar ;) Malah anda mungkin sudah ditokohkan oleh masyarakat Indonesia di bidang Rekayasa Perangkat Lunak? Amiiin. Cuman jangan sombong, sombong itu temannya setan :)

  14. Akhirnya, alhamdulillah anda telah sukses melewati kehidupan mahasiswa anda dengan baik. Bukan karena siapa-siapa, tapi karena perdjoeangan anda sendiri, karena tangan anda sendiri, dan tentu saja pertolongan dari yang DIATAS. Jangan lupa, tetap lanjutkan perdjoeangan di kehidupan baru.

ttd-small.jpg

TEKNIK PENCARIAN EFEKTIF MELALUI GOOGLE



Meskipun Google menyediakan banyak fitur pencarian, saya yakin tidak banyak dari kita yang menggunakannya pada saat melakukan pencarian informasi. Akhirnya kita kena badai tsunami informasi dari Google yang akhirnya membuat kita bingung sendiri. Kita bahas yuk, teknik pencarian yang efektif itu sebaiknya seperti apa sih.

Secara umum, jenis pencarian di Google ada dua: Basic Search dan Advanced Search. Basic Search adalah fitur pencarian yang sudah biasa kita gunakan yaitu ketika mengakses langsung google.com.

basicsearch.gif

Sedangkan Advanced Search menyediakan berbagai pilihan fitur pencarian baik untuk operator dasar, file format yang ingin kita cari, bahasa, region, dsb.

advancedsearch.gif

Sebenarnya masih sangat banyak fitur pencarian yang bisa kita gunakan, tapi tidak terdapat di menu pilihan Advanced Search. Dengan kata lain kita harus memasukannya query di form pencarian di Basic Search langsung. Nah permainan query dan operator pencarian ini yang sebenarnya akan kita bahas di artikel ini.

FITUR PENCARIAN DASAR

  1. AND: Mencari informasi yang mengandung kedua kata yang dicari. Bisa menggunakan salah satu dari tiga alternatif berikut:
    ukiran jepara
    ukiran AND jepara
    ukiran+jepara

  2. OR: Mencari informasi yang mengandung salah satu dari kedua kata. Bisa menggunakan salah satu dari dua alternatif berikut:
    tahu OR tempe
    tahu | tempe

  3. FRASE: Mencari informasi yang mengandung frase yang dicari dengan menggunakan tanda “”. Contoh:
    “perangkat lunak”

  4. NOT: Hasil pencarian mengandung kata yang di depan, tapi tidak yang dibelakang minus (-). Contoh di bawah akan mencari informasi yang mengandung kata ikan tapi bukan bandeng.
    ikan -bandeng

  5. SINONIM (~): Mencari kata beserta sinonim-sinonimnya. Contoh di bawah akan membawa hasil pencarian: kendaraan (car) dan sinonim-sinonimnya.
    ~car

  6. ASTERIK (*): Karakter pengganti kata. Dari contoh di bawah, hasil yang didapat bisa: ayam bakar pedas, ayam goreng pedas, ayam masak pedas, dsb
    ayam * pedas

  7. TANDA TITIK (.): Karakter pengganti huruf, angka dan karakter tunggal. Dari contoh di bawah, hasil yang didapat bisa: kopi, koki, kodi, dsb
    ko.i

  8. CASE INSENSITIVE: Pencarian di Google menganggap kapital dan bukan kapital sebagai sesuatu yang sama. Jadi, romi satria wahono, Romi Satria Wahono, atau RoMi SaTrIA waHoNo akan membawa hasil pencarian yang sama

  9. PENGABAIAN KATA: Google mengabaikan keyword berupa karakter tunggal dan kata-kata berikut: a, about, an, and, are, as, at, b, by, from, how, i , in, is, it, of, on, or, that, the, this, to, we, what, when, where, which, with. Apabila kita masih tetap menginginkan pencarian kata tersebut, bisa dengan menggunakan karakter + di depan kata yang dicari (contoh: Star Wars Episode +I), atau bisa juga dengan menganggapnya sebagai frase (contoh: “Star Wars Episode I”)

  10. I’M FEELING LUCKY: Akan membawa kita langsung menuju ke hasil pencarian pertama dari query kita

FITUR PENCARIAN LANJUT

  1. DEFINE: Mencari definisi dari sebuah terminologi. Dari contoh di bawah, hasil yang didapat adalah berbagai definisi tentang e-learning dari berbagai sumber
    define:e-learning

  2. CACHE: Menampilkan situs web yang telah diindeks oleh Google meskipun sudah tidak aktif lagi. Contoh di bawah akan menghasilkan pencarian kata php pada situs ilmukomputer.com yang ada di indeks Google.
    cache:ilmukomputer.com php

  3. LINK: Menampilkan daftar link yang mengarah ke sebuah situs. Contoh di bawah akan menampilkan daftar link yang mengarah ke situs ilmukomputer.com
    link:ilmukomputer.com

  4. RELATED: Menampilkan daftar situs yang serupa, mirip atau memiliki hubungan dengan suatu situs
    related:romisatriawahono.net

  5. INFO: Menampilkan informasi yang Google ketahui tentang sebuah situs
    info:romisatriawahono.net

  6. SITE: Menampilkan pencarian khusus di suatu situs yang ditunjuk
    java site:ilmukomputer.com

  7. FILETYPE: Menampilkan hasil pencarian berupa suatu jenis (ekstensi) file tertentu. Jenis file yang bisa dicari adalah: doc, xls, rtf, swf, ps, lwp, wri, ppt, pdf, mdb, txt, dsb. Contoh di bawah akan menampilkan hasil pencarian berupa file PDF yang mengandung keyword software engineering
    software engineering filetype:pdf

  8. ALLINTITLE: Menampilkan seluruh kata yang dicari dalam TITLE halaman. Contoh di bawah akan menghasilkan halaman yang memiliki title java programming. allintitle ini tidak dapat digabungkan dengan operator (sintaks) lain. Gunakan intitle untuk keperluan itu.
    allintitle:java programming

  9. INTITLE: Menampilkan satu kata yang dicari dalam TITLE halaman. Contoh di bawah akan menghasilkan halaman yang memiliki title java dan isi halaman yang mengandung kata enterprise
    intitle:java enterprise

  10. ALLINURL: Menampilkan seluruh kata yang dicari di dalam URL. Contoh di bawah akan menghasilkan daftar URL yang mengandung kata java dan programming. allinurl ini tidak dapat digabungkan dengan operator (sintaks) lain. Gunakan inurl untuk keperluan itu.
    allinurl:java programming

  11. INURL: Menampilkan satu kata yang dicari di dalam URL. Contoh di bawah akan menghasilkan daftar URL yang mengandung kata java dan isi halaman yang mengandung kata enterprise
    inurl:java enterprise

Pencarian yang kita lakukan akan semakin efektif apabila kita mencoba menggabungkan beberapa operator baik yang ada di fitur pencarian dasar maupun lanjut. Misalnya, kita ingin mencari file-file PDF yang ada di situs www.pdii.lipi.go.id. Maka kita gabungkan dua operator menjadi:
filetype:pdf site:www.pdii.lipi.go.id

caripdfdilipi.gif


Dewasa ini permainan query pencarian Google banyak digunakan para hacker dan cracker untuk mencari berbagai informasi, file, dan konfigurasi yang memiliki lubang keamanan. Aktifitas ini terkenal dengan sebutan Google Hacking. Kapan-kapan kita bahas tentang yang satu ini, setelah kita mahir bermain-main dengan berbagai operator pencarian Google.

Selasa, 26 Januari 2010

WAJIB DIBACA

5 Langkah Menjadi Programmer Entrepreneur

by Romi Satria Wahono

programmerlegend Hari Kamis, 19 Pebruari 2009, saya diminta mengisi satu sesi tentang entrepreneurship di PHP Developers Day 2009 yang diadakan di PDII LIPI Jl Gatot Subroto 10, Jakarta. Supaya unik, presentasi saya beri judul Programmer Entrepreneur. Inti dari presentasi saya adalah uraian tentang kiat dan langkah menjadi programmer yang berkarakter entrepreneur. Wacana ini perlu saya berikan karena saya pikir trend programmer di Indonesia, relatif lebih memilih bekerja di sebuah perusahaan yang established, daripada menempuh jalur wirausaha. Saya berharap para programmer berkarakter kuli, mulai pelan-pelan berubah menjadi programmer yang berjiwa entrepreneur dan memiliki kemampuan bisnis yang memadai. Materi saya kembangkan dan sesuaikan dengan judul posting ini, yaitu 5 Langkah Menjadi Programmer Entrepreneur. Tertarik? Klik dan lanjutkan bacanya :)

1. FIGHT FOR CODELINE FREEDOM!

Programming adalah kemampuan dasar yang wajib dimiliki oleh seorang programmer dan mahasiswa computing. Dalam IEEE Computing 2005, kemampuan coding dan mengembangkan software menjadi titik sentral, yang disentuh semua jurusan computing, baik itu Computer Science (CS), Software Engineering (SE), Information System (IS), Information Technology (IT) ataupun Computer Engineering (CE). Mahasiswa computing tanpa bisa coding, bagaikan garam tanpa asinnya :) Perdjoeangan untuk mencapai kebebasan baris kode, membawa arti bahwa kita tidak stress melihat 1000 baris kode suatu program. Dan juga, tidak boleh masuk rumah sakit kena tipus, kalau harus melototin 10000 baris kode :) Pertanyaan yang sangat sering datang ke saya dari mahasiswa jurusan computing adalah, bagaimana supaya bisa mahir coding? Jawaban saya, kiatnya cuma ada 5, yaitu: latihan, latihan, latihan, latihan dan latihan :D

Yakinlah bahwa bangku kuliah tidak cukup. Dan janganlah pernah mengeluh wahai para mahasiswa, karena tidak hanya di Indonesia, mahasiswa di luar negeripun tetap tidak akan bisa mahir coding, kalau hanya mengandalkan jam mata kuliah pemrograman. Saya juga dulu harus keluar masuk berbagai software house di Jepang dan bahkan sempat 6 tahun part time di perusahaan game Activision, supaya bisa menebarkan dan menyematkan berbagai teori dan konsep pemrograman ke ujung-ujung jari, kulit dan otak saya.

2. BROWSING FOR LEARNING AND RESEARCHING

Lakukan shift-paradigm pada perilaku kita. Tancapkan ke dalam benak kita yang paling dalam, bahwa kegiatan web browsing bukan hanya ajang klik URL asal-asalan, kegiatan selingan, iseng atau aktifitas di kala senggang. Mengakses Internet adalah sebuah investasi. Detik demi detik waktu yang kita pakai untuk nginternet, akan dikonversi dalam bentuk rupiah pada saat kita keluar warnet atau menutup koneksi internet kita. Manfaatkan kegiatan browsing untuk banyak belajar dan meneliti. Ketika mengunjungi Alexa.Com, jangan hanya terperangah dengan posisi rangking kaskus.us, friendster.com, facebook.com atau detik.com, tapi usahakan untuk sambil mengumpulkan data kunjungan Internet Indonesia. Rangkumkan datanya dalam bentuk tabel, kategorisasikan, olah dan analisa dengan berbagai teknik statistik. Manfaatkan berbagai forum yang betebaran di dunia maya untuk belajar, bagaimana mengembangkan software dan game yang bisa kita jual, ataupun berbisnis di Internet. Ketika kita menggunakan aplikasi facebook dan friendster, arahkan strum otak kita untuk memikirkan genre aplikasi dan game apa yang saat ini nge-trend di facebook atau friendster. Pelajari kelebihan dan kelemahannya.

3. CREATE A “KREATIFITAS MAYA”!

Gunakan berbagai data dan hasil analisa yang kita dapatkan pada saat browsing untuk mulai sedikit demi sedikit membangun kreatifitas maya. Ingatlah bahwa produk-produk legendaris tidak langsung menjadi besar, perlu proses yang lama. Matt Mullenweg sang founder Wordpress, juga mengawali jalan legendanya dengan sesuatu yang sangat dasar, karena ingin belajar PHP. Jerry Yang, akhirnya menseriusi bisnis mesin pencarinya, mesekipun diawali dengan aktifitas mengumpulkan link URL. Demikian juga dengan Blake Ross dengan Mozilla Firefoxnya, Mark Zuckerberg dengan Facebook-nya, Steve Chen dan Chad Hurley dengan Youtube-nya, Pierre Omidyar dengan eBay-nya, dan Tom Anderson dengan MySpace-nya. Kemampuan coding akan mempercepat proses implementasi ide, yang kita rumuskan dari hasil analisa dan penelitian kita tentang trend layanan web. Saya membangun IlmuKomputer.Com juga sebenarnya tidak asal bangun, tapi mulai dari learning dan researching tentang layanan untuk mahasiswa yang benar-benar bisa menjadi solusi bagi mahasiswa. Saya mulai dari survey ke ratusan mailing list dan forum. Termasuk mencari data yang valid, siapa sebenarnya pengguna Internet yang populasinya besar saat itu.

4. BLOGGING FOR PERSONAL BRANDING

Kreatifitas maya yang dahsyat dan menggunakan teknologi canggih, tidak ada artinya apabila tidak diperkenalkan ke publik. Karena itu kita perlu latih kemampuan menulis kita, yang bisa kita mulai dengan menggunakan blog. Para programmer yang notabene adalah seorang spesialis, dituntut kedepannya berkemampuan versatilist, yang bisa menawarkan diri dan menjual kemampuannya dengan baik. Ngeblog alias blogging sekaligus jadi cara yang maknyus untuk personal branding lewat dunia maya. Saat ini personal branding lewat blogging adalah jalan yang sangat cepat dan efektif, bahkan melebihi personal branding lewat koran dan media cetak. Pengguna Internet Indonesia yang mencapai 25 juta, mungkin hanya kalah oleh TV. Dan saya yakin, tidak semua dari kita punya kelebihan uang untuk melakukan aktifitas narsistik lewat 30 detik iklan di TV yang mencapai nilai ratusan juta rupiah. Sekali lagi, personal branding lewat blogging adalah jalan yang lebih efektif, efisien, nyata alias tidak ngoyoworo bin aya aya wae :) . Sayapun menempuh jalan ini untuk memperkenalkan diri, IlmuKomputer.Com dan juga bisnis yang saya buat seperti Brainmatics.Com.

5. BE AN ENTREPRENEUR!

Ketika kondisi sudah mapan, dan sudah mulai banyak yang menghubungi kita untuk kerjasama mengembangkan berbagai proyek dan kegiatan. Mulai pikirkan untuk masuk jalur entrepreneur formal lewat bisnis dalam bentuk yang lebih nyata. Dirikan PT atau CV, sewa kantor, ajak anak-anak muda yang cerdas nan militan untuk bergabung dengan kita. Jangan lupa didik mereka dengan baik dan bijak. Beri mereka kesempatan untuk mengembangkan diri dan mengembangkan ilmu. Beri beasiswa untuk melanjutkan sekolah apabila dirasa memang sang pegawai berprestasi. Beri mereka kepercayaan, mulai delegasikan wewenang dan tugas, dan jangan pernah beranggapan bahwa semua harus kita kerjakan sendiri.

Saya juga dibantu para pedjoeang-pedjoeang muda dalam melakukan aktifitas di dunia maya dan bisnis. Menarik kalau kapan-kapan coba mampir ke markas IlmuKomputer.com, yang sekaligus sebagai kantor Brainmatics.Com di Menara Bidakara. Ada Mansyur, Training Manager kita yang gesit dan jaim. Mansyur alias Acun ini sebenarnya baru berumur 20 tahun dan duduk di semester 3 bangku kuliah S1. Tapi menakjubkan, karena miliaran omzet perusahaan dihasilkan dari tangan dinginnya. Ada mulyana, sang Technical Manager yang cerdas tapi dingin, plus cenderung psikopat. Saat ini baru berumur 19 tahun, bahkan belum lulus SMA dan harus ujian bulan April ini. Ada lagi Eman, sang Financial Manager kita, pemilik IPK 3.8 yang selalu tampil keren dan harum meskipun sedikit agak jablai ini, juga baru berumur 20 tahun. Adalagi Tanto, yang jadi PJ project eLearning kita di Merpati Airlines, laki-laki setia yang jago makan ini juga belum menikah :)

Sapalah para pedjoeangku ini, dan ajaklah mereka berdiskusi. Aku yakin tidak ada yang bisa mengalahkan laskar pelangiku ini dalam kuantitas dan kualitas kerja. Mereka bangun sebelum orang lain bangun, dan tidur setelah orang lain tidur. Dan cintapun tak akan bisa membunuh mereka, paling cuman bikin diem ajah 3 hari 3 malam hihihi. Mereka sangat paham bahwa mendapatkan pendidikan adalah sebuah perdjoeangan, dan hidup dari keringat sendiri adalah suatu kebanggaan. Para pedjoeangku ini masih terlalu muda dan mungkin miskin ilmu, karena itu ajarilah mereka ilmu pengetahuan. Tapi belajarlah dari mereka hakekat perdjoeangan dan mintalah sebuah peta harta harun kepada mereka … yaitu peta jalan cinta para legenda.

Wahai para pemuda, janganlah pernah mau jadi pecundang, berebutlah untuk menjadi legenda. Kuingin kau tahu, jalan legenda terbuka lebar, bagi siapa saja yang mau berusaha dan berdjoeang. Dan tidak semua orang yang punya kemampuan bisa menjadi legenda, karena menjadi legenda adalah sebuah pilihan, bukan karena kemampuan.

Sambutlah pagi hari dengan riang dan tataplah mentari pagi dengan lantang. Jangan lupa ucapkan, “I am legend!” … believe me you will be legend :)

Tetap dalam perdjoeangan!

TIMNAS INDONESIA

Minggu, 24 Januari 2010

dasar-dasar algoritma&pemograman




ALGORITMA & PEMROGRAMAN:
BAB I PENGANTAR ALGORITMA DAN PROGRAM
1.1. Apakah Itu Algoritma
Ditinjau dari asal-usul katanya, kata Algoritma sendiri mempunyai sejarah
yang aneh. Orang hanya menemukan kata algorism yang berarti proses
menghitung dengan angka arab. Anda dikatakan algorist jika Anda
menghitung menggunakan angka arab. Para ahli bahasa berusaha
menemukan asal kata ini namun hasilnya kurang memuaskan. Akhirnya
para ahli sejarah matematika menemukan asal kata tersebut yang berasal
dari nama penulis buku arab yang terkenal yaitu Abu Ja’far Muhammad
Ibnu Musa Al-Khuwarizmi. Al-Khuwarizmi dibaca orang barat menjadi
Algorism. Al-Khuwarizmi menulis buku yang berjudul Kitab Al Jabar Wal-
Muqabala yang artinya “Buku pemugaran dan pengurangan” (The book of
restoration and reduction). Dari judul buku itu kita juga memperoleh akar
kata “Aljabar” (Algebra). Perubahan kata dari algorism menjadi algorithm
muncul karena kata algorism sering dikelirukan dengan arithmetic,
sehingga akhiran –sm berubah menjadi –thm. Karena perhitungan dengan
angka Arab sudah menjadi hal yang biasa, maka lambat laun kata algorithm
berangsur-angsur dipakai sebagai metode perhitungan (komputasi) secara
umum, sehingga kehilangan makna kata aslinya. Dalam bahasa Indonesia,
kata algorithm diserap menjadi algoritma.
1.1.1. Definisi Algoritma
“Algoritma adalah urutan langkah-langkah logis penyelesaian masalah
yang disusun secara sistematis dan logis”. Kata logis merupakan kata kunci
dalam algoritma. Langkah-langkah dalam algoritma harus logis dan harus
dapat ditentukan bernilai salah atau benar.
Dalam beberapa konteks, algoritma adalah spesifikasi urutan langkah untuk
melakukan pekerjaan tertentu. Pertimbangan dalam pemilihan algoritma
adalah, pertama, algoritma haruslah benar. Artinya algoritma akan memberikan
keluaran yang dikehendaki dari sejumlah masukan yang diberikan. Tidak
peduli sebagus apapun algoritma, kalau memberikan keluaran yang salah,
pastilah algoritma tersebut bukanlah algoritma yang baik.
Bab I: Pengantar Algoritma dan Program
2
Pertimbangan kedua yang harus diperhatikan adalah kita harus mengetahui
seberapa baik hasil yang dicapai oleh algoritma tersebut. Hal ini penting
terutama pada algoritma untuk menyelesaikan masalah yang memerlukan
aproksimasi hasil (hasil yang hanya berupa pendekatan). Algoritma yang
baik harus mampu memberikan hasil yang sedekat mungkin dengan nilai
yang sebenarnya.
Ketiga adalah efisiensi algoritma. Efisiensi algoritma dapat ditinjau dari 2
hal yaitu efisiensi waktu dan memori. Meskipun algoritma memberikan
keluaran yang benar (paling mendekati), tetapi jika kita harus menunggu
berjam-jam untuk mendapatkan keluarannya, algoritma tersebut biasanya
tidak akan dipakai, setiap orang menginginkan keluaran yang cepat. Begitu
juga dengan memori, semakin besar memori yang terpakai maka semakin
buruklah algoritma tersebut.
Dalam kenyataannya, setiap orang bisa membuat algoritma yang berbeda
untuk menyelesaikan suatu permasalahan, walaupun terjadi perbedaan
dalam menyusun algoritma, tentunya kita mengharapkan keluaran yang
sama. Jika terjadi demikian, carilah algoritma yang paling efisien dan cepat.

1.1.2. Beda Algoritma dan Program
Program adalah kumpulan pernyataan komputer, sedangkan metode dan
tahapan sistematis dalam program adalah algoritma. Program ditulis dengan
menggunakan bahasa pemrograman. Jadi bisa disebut bahwa program
adalah suatu implementasi dari bahasa pemrograman.
Beberapa pakar memberi formula bahwa:
Program = Algoritma + Bahasa (Struktur Data)
Bagaimanapun juga struktur data dan algoritma berhubungan sangat erat
pada sebuah program. Algoritma yang baik tanpa pemilihan struktur data
yang tepat akan membuat program menjadi kurang baik, demikian juga
sebaliknya.

Pembuatan algoritma mempunyai banyak keuntungan di antaranya:
1. Pembuatan atau penulisan algoritma tidak tergantung pada bahasa pemrograman manapun, artinya penulisan algoritma independen dari bahasa pemrograman dan komputer yang melaksanakannya. 2. Notasi algoritma dapat diterjemahkan ke dalam berbagai bahasa pemrograman. 3. Apapun bahasa pemrogramannya, output yang akan dikeluarkan sama karena algoritmanya sama.

Beberapa hal yang perlu diperhatikan dalam membuat algoritma:
1. Teks algoritma berisi deskripsi langkah-langkah penyelesaian masalah. Deskripsi tersebut dapat ditulis dalam notasi apapun asalkan mudah dimengerti dan dipahami. 2. Tidak ada notasi yang baku dalam penulisan teks algoritma seperti notasi bahasa pemrograman. Notasi yang digunakan dalam menulis algoritma disebut notasi algoritmik. 3. Setiap orang dapat membuat aturan penulisan dan notasi algoritmik sendiri. Hal ini dikarenakan teks algoritma tidak sama dengan teks program. Namun, supaya notasi algoritmik mudah ditranslasikan ke dalam notasi bahasa pemrograman tertentu, maka sebaiknya notasi algoritmik tersebut berkorespondensi dengan notasi bahasa pemrograman secara umum. 4. Notasi algoritmik bukan notasi bahasa pemrograman, karena itu pseudocode dalam notasi algoritmik tidak dapat dijalankan oleh komputer. Agar dapat dijalankan oleh komputer, pseudocode dalam notasi algoritmik harus ditranslasikan atau diterjemahkan ke dalam notasi bahasa pemrograman yang dipilih. Perlu diingat bahwa orang yang menulis program sangat terikat dalam aturan tata bahasanya dan spesifikasi mesin yang menjalannya. 5. Algoritma sebenarnya digunakan untuk membantu kita dalam mengkonversikan suatu permasalahan ke dalam bahasa pemrograman. 6. Algoritma merupakan hasil pemikiran konseptual, supaya dapat dilaksanakan oleh komputer, algoritma harus ditranslasikan ke dalam notasi bahasa pemrograman. Ada beberapa hal yang harus diperhatikan pada translasi tersebut, yaitu: a. Pendeklarasian variabel Untuk mengetahui dibutuhkannya pendeklarasian variabel dalam penggunaan bahasa pemrograman apabila tidak semua bahasa pemrograman membutuhkannya. Bab I: Pengantar Algoritma dan Program 4 b. Pemilihan tipe data Apabila bahasa pemrograman yang akan digunakan membutuhkan pendeklarasian variabel maka perlu hal ini dipertimbangkan pada saat pemilihan tipe data. c. Pemakaian instruksi-instruksi Beberapa instruksi mempunyai kegunaan yang sama tetapi masingmasing memiliki kelebihan dan kekurangan yang berbeda. d. Aturan sintaksis Pada saat menuliskan program kita terikat dengan aturan sintaksis dalam bahasa pemrograman yang akan digunakan. e. Tampilan hasil Pada saat membuat algoritma kita tidak memikirkan tampilan hasil yang akan disajikan. Hal-hal teknis ini diperhatikan ketika mengkonversikannya menjadi program. f. Cara pengoperasian compiler atau interpreter. Bahasa pemrograman yang digunakan termasuk dalam kelompok compiler atau interpreter.

1.1.3. Algoritma Merupakan Jantung Ilmu Informatika
Algoritma adalah jantung ilmu komputer atau informatika. Banyak cabang
ilmu komputer yang mengarah ke dalam terminologi algoritma. Namun,
jangan beranggapan algoritma selalu identik dengan ilmu komputer saja.
Dalam kehidupan sehari-hari pun banyak terdapat proses yang dinyatakan
dalam suatu algoritma. Cara-cara membuat kue atau masakan yang
dinyatakan dalam suatu resep juga dapat disebut sebagai algoritma. Pada
setiap resep selalu ada urutan langkah-langkah membuat masakan. Bila
langkah-langkahnya tidak logis, tidak dapat dihasilkan masakan yang
diinginkan. Ibu-ibu yang mencoba suatu resep masakan akan membaca satu
per satu langkah-langkah pembuatannya lalu ia mengerjakan proses sesuai
yang ia baca. Secara umum, pihak (benda) yang mengerjakan proses disebut
pemroses (processor). Pemroses tersebut dapat berupa manusia, komputer,
robot atau alat-alat elektronik lainnya. Pemroses melakukan suatu proses
dengan melaksanakan atau “mengeksekusi” algoritma yang menjabarkan
proses tersebut.
Algoritma adalah deskripsi dari suatu pola tingkah laku yang dinyatakan
secara primitif yaitu aksi-aksi yang didefenisikan sebelumnya dan diberi
nama, dan diasumsikan sebelumnya bahwa aksi-aksi tersebut dapat kerjakan
sehingga dapat menyebabkan kejadian.

Melaksanakan algoritma berarti mengerjakan langkah-langkah di dalam
algoritma tersebut. Pemroses mengerjakan proses sesuai dengan algoritma
yang diberikan kepadanya. Juru masak membuat kue berdasarkan resep
yang diberikan kepadanya, pianis memainkan lagu berdasarkan papan not
balok. Karena itu suatu algoritma harus dinyatakan dalam bentuk yang
dapat dimengerti oleh pemroses. Jadi suatu pemroses harus:
1. Mengerti setiap langkah dalam algoritma.
2. Mengerjakan operasi yang bersesuaian dengan langkah tersebut.
Tabel 1.1. Contoh-Contoh Algoritma dalam Kehidupan Sehari-hari
No. Proses Algoritma Contoh Langkah dalam
Algoritma
1 Membuat kue Resep kue Masukkan telur ke dalam
wajan, kocok sampai
mengembang
2 Membuat pakaian Pola pakaian Gunting kain dari pinggir
kiri bawah ke arah kanan
sejauh 5 cm
3 Merakit mobil Panduan
merakit
Sambungkan komponen
A dengan komponen B
4 Kegiatan seharihari
Jadwal harian Pukul 06.00: mandi pagi,
pukul 07.00: berangkat
kuliah
5 Mengisi voucer HP Panduan
pengisian
Tekan 888, masukkan
nomor voucer

1.1.4. Mekanisme Pelaksanaan Algoritma oleh Pemroses
Komputer hanyalah salah satu pemroses. Agar dapat dilaksanakan oleh
komputer, algoritma harus ditulis dalam notasi bahasa pemrograman
sehingga dinamakan program. Jadi program adalah perwujudan atau
implementasi teknis algoritma yang ditulis dalam bahasa pemrograman
tertentu sehingga dapat dilaksanakan oleh komputer.
Kata “algoritma” dan “program” seringkali dipertukarkan dalam
penggunaannya. Misalnya ada orang yang berkata seperti ini: “program
pengurutan data menggunakan algoritma selection sort”. Atau pertanyaan
seperti ini: “bagaimana algoritma dan program menggambarkan grafik
tersebut?”. Jika Anda sudah memahami pengertian algoritma yang sudah


1.1.5. Belajar Memprogram dan Belajar Bahasa Pemrograman
Belajar memprogram tidak sama dengan belajar bahasa pemrograman.
Belajar memprogram adalah belajar tentang metodologi pemecahan
masalah, kemudian menuangkannya dalam suatu notasi tertentu yang
mudah dibaca dan dipahami. Sedangkan belajar bahasa pemrograman
berarti belajar memakai suatu bahasa aturan-aturan tata bahasanya,
pernyataan-pernyataannya, tata cara pengoperasian compiler-nya, dan
memanfaatkan pernyataan-pernyataan tersebut untuk membuat program
yang ditulis hanya dalam bahasa itu saja. Sampai saat ini terdapat puluhan
bahasa pemrogram, antara lain bahasa rakitan (assembly), Fortran, Cobol,
Ada, PL/I, Algol, Pascal, C, C++, Basic, Prolog, LISP, PRG, bahasabahasa
simulasi seperti CSMP, Simscript, GPSS, Dinamo. Berdasarkan
terapannya, bahasa pemrograman dapat digolongkan atas dua kelompok
besar:
1. Bahasa pemrograman bertujuan khusus. Yang termasuk kelompok
ini adalah Cobol (untuk terapan bisnis dan administrasi). Fortran
(terapan komputasi ilmiah), bahasa rakitan (terapan pemrograman
mesin), Prolog (terapan kecerdasan buatan), bahasa-bahasa
simulasi, dan sebagainya.
2. Bahasa perograman bertujuan umum, yang dapat digunakan untuk
berbagai aplikasi. Yang termasuk kelompok ini adalah bahasa
Pascal, Basic dan C. Tentu saja pembagian ini tidak kaku. Bahasabahasa
bertujuan khusus tidak berarti tidak bisa digunakan untuk
aplikasi lain. Cobol misalnya, dapat juga digunakan untuk terapan
ilmiah, hanya saja kemampuannya terbatas. Yang jelas, bahasabahasa
pemrograman yang berbeda dikembangkan untuk
bermacam-macam terapan yang berbeda pula.
Berdasarkan pada apakah notasi bahasa pemrograman lebih “dekat” ke
mesin atau ke bahasa manusia, maka bahasa pemrograman dikelompokkan
atas dua macam:
Bab I: Pengantar Algoritma dan Program
8
1. Bahasa tingkat rendah. Bahasa jenis ini dirancang agar setiap
instruksinya langsung dikerjakan oleh komputer, tanpa harus
melalui penerjemah (translator). Contohnya adalah bahasa mesin.
CPU mengambil instruksi dari memori, langsung mengerti dan
langsung mengerjakan operasinya. Bahasa tingkat rendah bersifat
primitif, sangat sederhana, orientasinya lebih dekat ke mesin, dan
sulit dipahami manusia. Sedangkan bahasa rakitan dimasukkan ke
dalam kelompok ini karena alasan notasi yang dipakai dalam bahasa
ini lebih dekat ke mesin, meskipun untuk melaksanakan
instruksinya masih perlu penerjemahan ke dalam bahasa mesin.
2. Bahasa tingkat tinggi, yang membuat pemrograman lebih mudah
dipahami, lebih “manusiawi”, dan berorientasi ke bahasa manusia
(bahasa Inggris). Hanya saja, program dalam bahasa tingkat tinggi
tidak dapat langsung dilaksanakan oleh komputer. Ia perlu
diterjemahkan terlebih dahulu oleh sebuah translator bahasa (yang
disebut kompilator atau compiler) ke dalam bahasa mesin sebelum
akhirnya dieksekusi oleh CPU. Contoh bahasa tingkat tinggi adalah
Pascal, PL/I, Ada, Cobol, Basic, Fortran, C, C++, dan sebagainya.
Bahasa pemrograman bisa juga dikelompokkan berdasarkan pada tujuan
dan fungsinya. Di antaranya adalah:
Gambar 1.2 Pembagian Bahasa Pemrograman
Secara sistematis berikut diberikan kiat-kiat untuk belajar memprogram dan
belajar bahasa pemrograman serta produk yang dapat dihasilkan:
a. Belajar Memprogram
• Belajar memprogram: belajar bahasa pemrograman.

• Belajar memprogram: belajar tentang strategi pemecahan masalah,
metodologi dan sistematika pemecahan masalah kemudian
menuliskannya dalam notasi yang disepakati bersama.
• Belajar memprogram: bersifat pemahaman persoalan, analisis dan
sintesis.
• Belajar memprogram, titik berat: designer program.
b. Belajar Bahasa Pemrograman
• Belajar bahasa pemrograman: belajar memakai suatu bahasa
pemrograman, aturan sintaks, tatacara untuk memanfaatkan pernyataan
yang spesifik untuk setiap bahasa.
• Belajar bahasa pemrograman, titik berat: coder.
c. Produk yang Dihasilkan Pemrogram
• Program dengan rancangan yang baik (metodologis, sistematis).
• Dapat dieksekusi oleh mesin.
• Berfungsi dengan benar.
• Sanggup melayani segala kemungkinan masukan.
• Disertai dokumentasi.
• Belajar memprogram, titik berat: designer program.
1.2. Menilai Sebuah Algoritma
Ketika manusia berusaha memecahkan masalah, metode atau teknik yang
digunakan untuk memecahkan masalah itu ada kemungkinan bisa banyak
(tidak hanya satu). Dan kita memilih mana yang terbaik di antara teknikteknik
itu. Hal ini sama juga dengan algoritma, yang memungkinkan suatu
permasalahan dipecahkan dengan metode dan logika yang berlainan. Yang
menjadi pertanyaan adalah bagaimana mengukur mana algoritma yang
terbaik?
Beberapa persyaratan untuk menjadi algoritma yang baik adalah:
• Tingkat kepercayaannya tinggi (realibility). Hasil yang diperoleh dari
proses harus berakurasi tinggi dan benar.
• Pemrosesan yang efisien (cost rendah). Proses harus diselesaikan
secepat mungkin dan frekuensi kalkulasi yang sependek mungkin.
Bab I: Pengantar Algoritma dan Program
10
• Sifatnya general. Bukan sesuatu yang hanya untuk menyelesaikan satu
kasus saja, tapi juga untuk kasus lain yang lebih general.
• Bisa dikembangkan (expandable). Haruslah sesuatu yang dapat kita
kembangkan lebih jauh berdasarkan perubahan requirement yang ada.
• Mudah dimengerti. Siapapun yang melihat, dia akan bisa memahami
algoritma Anda. Susah dimengertinya suatu program akan membuat
susah di-maintenance (kelola).
• Portabilitas yang tinggi (portability). Bisa dengan mudah
diimplementasikan di berbagai platform komputer.
• Precise (tepat, betul, teliti). Setiap instruksi harus ditulis dengan
seksama dan tidak ada keragu-raguan, dengan demikian setiap instruksi
harus dinyatakan secara eksplisit dan tidak ada bagian yang dihilangkan
karena pemroses dianggap sudah mengerti. Setiap langkah harus jelas
dan pasti.
Contoh: Tambahkan 1 atau 2 pada x.
Instruksi di atas terdapat keraguan.
• Jumlah langkah atau instruksi berhingga dan tertentu. Artinya, untuk
kasus yang sama banyaknya, langkah harus tetap dan tertentu meskipun
datanya berbeda.
• Efektif. Tidak boleh ada instruksi yang tidak mungkin dikerjakan oleh
pemroses yang akan menjalankannya.
Contoh: Hitung akar 2 dengan presisi sempurna.
Instruksi di atas tidak efektif, agar efektif instruksi tersebut diubah.
Misal: Hitung akar 2 sampai lima digit di belakang koma.
• Harus terminate. Jalannya algoritma harus ada kriteria berhenti.
Pertanyaannya adalah apakah bila jumlah instruksinya berhingga maka
pasti terminate?
• Output yang dihasilkan tepat. Jika langkah-langkah algoritmanya logis
dan diikuti dengan seksama maka dihasilkan output yang diinginkan.
1.3. Penyajian Algoritma
Penyajian algoritma secara garis besar bisa dalam 2 bentuk penyajian yaitu
tulisan dan gambar. Algoritma yang disajikan dengan tulisan yaitu dengan
struktur bahasa tertentu (misalnya bahasa Indonesia atau bahasa Inggris)
dan pseudocode. Pseudocode adalah kode yang mirip dengan kode
pemrograman yang sebenarnya seperti Pascal, atau C, sehingga lebih tepat
digunakan untuk menggambarkan algoritma yang akan dikomunikasikan
kepada pemrogram. Sedangkan algoritma disajikan dengan gambar,

misalnya dengan flowchart. Secara umum, pseudocode mengekspresikan
ide-ide secara informal dalam proses penyusunan algoritma. Salah satu cara
untuk menghasilkan kode pseudo adalah dengan meregangkan aturan-aturan
bahasa formal yang dengannya versi akhir dari algoritma akan
diekspresikan. Pendekatan ini umumnya digunakan ketika bahasa
pemrograman yang akan digunakan telah diketahui sejak awal.
Flowchart merupakan gambar atau bagan yang memperlihatkan urutan dan hubungan antar proses beserta pernyataannya. Gambaran ini dinyatakan
dengan simbol. Dengan demikian setiap simbol menggambarkan proses
tertentu. Sedangkan antara proses digambarkan dengan garis penghubung.
Dengan menggunakan flowchart akan memudahkan kita untuk melakukan
pengecekan bagian-bagian yang terlupakan dalam analisis masalah. Di
samping itu flowchart juga berguna sebagai fasilitas untuk berkomunikasi
antara pemrogram yang bekerja dalam tim suatu proyek.
Ada dua macam flowchart yang menggambarkan proses dengan komputer,
yaitu:
1. Flowchart sistem yaitu bagan dengan simbol-simbol tertentu yang menggambarkan urutan prosedur dan proses suatu file dalam suatu media menjadi file di dalam media lain, dalam suatu sistem pengolahan data.
Beberapa contoh Flowchart sistem:
Dokumen Pengurutan Offline
Kegiatan Manual Hard Disk
2. Flowchart program yaitu bagan dengan simbol-simbol tertentu yang menggambarkan urutan proses dan hubungan antar proses secara mendetail di dalam suatu program.
Kaidah-Kaidah Umum Pembuatan Flowchart Program
Dalam pembuatan flowchart Program tidak ada rumus atau patokan yang
bersifat mutlak. Karena flowchart merupakan gambaran hasil pemikiran
dalam menganalisis suatu masalah dengan komputer. Sehingga flowchart

Input
(Bahan mentah)
Proses Output
(Bahan Jadi)
yang dihasilkan dapat bervariasi antara satu pemrogram dengan yang
lainnya.
Namun secara garis besar setiap pengolahan selalu terdiri atas 3 bagian
utama, yaitu:
�� Input,
�� Proses pengolahan dan
�� Output
Untuk pengolahan data dengan komputer, urutan dasar pemecahan suatu
masalah:
�� START, berisi pernyataan untuk persiapan peralatan yang
diperlukan sebelum menangani pemecahan persoalan.
�� READ, berisi pernyataan kegiatan untuk membaca data dari suatu
peralatan input.
�� PROSES, berisi kegiatan yang berkaitan dengan pemecahan
persoalan sesuai dengan data yang dibaca.
�� WRITE, berisi pernyataan untuk merekam hasil kegiatan ke
peralatan output.
�� END, mengakhiri kegiatan pengolahan.
Walaupun tidak ada kaidah-kaidah yang baku dalam penyusunan flowchart,
namun ada beberapa anjuran:
�� Hindari pengulangan proses yang tidak perlu dan logika yang
berbelit sehingga jalannya proses menjadi singkat.
�� Jalannya proses digambarkan dari atas ke bawah dan diberikan
tanda panah untuk memperjelas.
�� Sebuah flowchart diawali dari satu titik START dan diakhiri dengan
END.



Keterangan 1:

1.4. Struktur Dasar Algoritma
Algoritma berisi langkah-langkah penyelesaian suatu masalah. Langkahlangkah
tersebut dapat berupa runtunan aksi (sequence), pemilihan aksi
(selection), pengulangan aksi (iteration) atau kombinasi dari ketiganya. Jadi
struktur dasar pembangunan algoritma ada tiga, yaitu:
1. Struktur Runtunan
Digunakan untuk program yang pernyataannya sequential atau urutan.
2. Struktur Pemilihan
Digunakan untuk program yang menggunakan pemilihan atau
penyeleksian kondisi.
3. Struktur Perulangan
Digunakan untuk program yang pernyataannya akan dieksekusi
berulang-ulang.

1.5. Tahapan dalam Pemrograman
Langkah-langkah yang dilakukan dalam menyelesaikan masalah dalam
pemrograman dengan komputer adalah:
1. Definisikan Masalah
Berikut adalah hal-hal yang harus diketahui dalam analisis masalah
supaya kita mengetahui bagaimana permasalahan tersebut:
a. Kondisi awal, yaitu input yang tersedia.
b. Kondisi akhir, yaitu output yang diinginkan.
c. Data lain yang tersedia.
d. Operator yang tersedia.
e. Syarat atau kendala yang harus dipenuhi.
Contoh kasus:
Menghitung biaya percakapan telepon di wartel. Proses yang perlu
diperhatikan adalah:
a. Input yang tersedia adalah jam mulai bicara dan jam selesai bicara.
b. Output yang diinginkan adalah biaya percakapan.
c. Data lain yang tersedia adalah besarnya pulsa yang digunakan dan
biaya per pulsa.
d. Operator yang tersedia adalah pengurangan (-), penambahan (+),
dan perkalian (*).
e. Syarat kendala yang harus dipenuhi adalah aturan jarak dan aturan
waktu.
2. Buat Algoritma dan Struktur Cara Penyelesaian
Jika masalahnya kompleks, maka dibagi ke dalam modul-modul. Tahap
penyusunan algoritma seringkali dimulai dari langkah yang global
terlebih dahulu. Langkah global ini diperhalus sampai menjadi langkah
yang lebih rinci atau detail. Cara pendekatan ini sangat bermanfaat
dalam pembuatan algoritma untuk masalah yang kompleks. Penghalusan
langkah dengan cara memecah langkah menjadi beberapa langkah.
Setiap langkah diuraikan lagi menjadi beberapa langkah yang lebih
sederhana. Penghalusan langkah ini akan terus berlanjut sampai setiap
langkah sudah cukup rinci dan tepat untuk dilaksanakan oleh pemroses.
3. Menulis Program
Algoritma yang telah dibuat, diterjemahkan dalam bahasa komputer
menjadi sebuah program. Perlu diperhatikan bahwa pemilihan algoritma
yang salah akan menyebabkan program memiliki untuk kerja yang
kurang baik. Program yang baik memiliki standar penilaian:
Bab I: Pengantar Algoritma dan Program
16
a. Standar teknik pemecahan masalah
- Teknik Top-Down
Teknik pemecahan masalah yang paling umum digunakan.
Prinsipnya adalah suatu masalah yang kompleks dibagi-bagi ke
dalam beberapa kelompok masalah yang lebih kecil. Dari
masalah yang kecil tersebut dilakukan analisis. Jika dimungkinkan
maka masalah tersebut akan dipilah lagi menjadi subbagiansubbagian
dan setelah itu mulai disusun langkah-langkah
penyelesaian yang lebih detail.
- Teknik Bottom-Up
Prinsip teknik bottom up adalah pemecahan masalah yang
kompleks dilakukan dengan menggabungkan prosedur-prosedur
yang ada menjadi satu kesatuan program sebagai penyelesaian
masalah tersebut.
b. Standar penyusunan program
- Kebenaran logika dan penulisan.
- Waktu minimum untuk penulisan program.
- Kecepatan maksimum eksekusi program.
- Ekspresi penggunaan memori.
- Kemudahan merawat dan mengembangkan program.
- User Friendly.
- Portability.
- Pemrograman modular.
4. Mencari Kesalahan
a. Kesalahan sintaks (penulisan program).
b. Kesalahan pelaksanaan: semantik, logika, dan ketelitian.
5. Uji dan Verifikasi Program
Pertama kali harus diuji apakah program dapat dijalankan. Apabila
program tidak dapat dijalankan maka perlu diperbaiki penulisan
sintaksisnya tetapi bila program dapat dijalankan, maka harus diuji
dengan menggunakan data-data yang biasa yaitu data yang diharapkan
oleh sistem. Contoh data ekstrem, misalnya, program menghendaki
masukan jumlah data tetapi user mengisikan bilangan negatif. Program
sebaiknya diuji menggunakan data yang relatif banyak.

6. Dokumentasi Program
Dokumentasi program ada dua macam yaitu dokumentasi internal dan
dokumentasi eksternal. Dokumentasi internal adalah dokumentasi yang
dibuat di dalam program yaitu setiap kita menuliskan baris program
sebaiknya diberi komentar atau keterangan supaya mempermudah kita
untuk mengingat logika yang terdapat di dalam instruksi tersebut, hal
ini sangat bermanfaat ketika suatu saat program tersebut akan
dikembangkan. Dokumentasi eksternal adalah dokumentasi yang
dilakukan dari luar program yaitu membuat user guide atau buku
petunjuk aturan atau cara menjalankan program tersebut.
7. Pemeliharaan Program
a. Memperbaiki kekurangan yang ditemukan kemudian.
b. Memodifikasi, karena perubahan spesifikasi.
Pemrograman Prosedural
Algoritma berisi urutan langkah-langkah penyelesaian masalah. Ini berarti
algoritma adalah proses yang prosedural. Pada program prosedural, program
dibedakan antara bagian data dengan bagian instruksi. Bagian instruksi
terdiri dari atas runtunan (sequence) instruksi yang dilaksanakan satu per
satu secara berurutan oleh sebuah pemroses. Alur pelaksanaan instruksi
dapat berubah karena adanya pencabangan kondisional. Data yang disimpan
di dalam memori dimanipulasi oleh instruksi secara beruntun. Kita katakan
bahwa tahapan pelaksanaan program mengikuti pola beruntun atau prosedural.
Paradigma pemrograman seperti ini dinamakan pemrograman prosedural.
Bahasa-bahasa tingkat tinggi seperti Cobol, Basic, Pascal, Fortran, dan
C/C++ mendukung kegiatan pemrograman prosedural, karena itu mereka
dinamakan juga bahasa prosedural. Selain paradigma pemrograman
prosedural, ada lagi paradigma yang lain yaitu pemrograman berorientasi
objek (Object Oriented Programming atau OOP). Paradigma pemrograman
ini merupakan trend baru dan sangat popular akhir-akhir ini. Pada
paradigma OOP, data dan instruksi dibungkus (encapsulation) menjadi satu.
Kesatuan ini disebut kelas (class) dan instansiasi kelas pada saat run-time
disebut objek (object). Data di dalam objek hanya dapat diakses oleh
instruksi yang ada di dalam objek itu saja.
Paradigma pemrograman yang lain adalah pemrograman fungsional,
pemrograman deklaratif, dan pemrograman konkuren. Buku ini hanya

menyajikan paradigma pemrograman presedural saja. Paradigma
pemrograman yang lain di luar cakupan buku ini.
Contoh Kasus dan Penyelesaian
1. Menghitung luas dan keliling lingkaran
Proses kerjanya sebagai berikut:
a. Baca jari-jari lingkaran
b. Tentukan konstanta phi = 3.14
c. Hitung luas dan keliling
L = phi*r*r
K = 2*phi*r
d. Cetak luas dan keliling
2. Menghitung rata-rata tiga buah data
a. Algoritma dengan struktur bahasa Indonesia
- Baca bilangan a, b, dan c
- Jumlahkan ketiga bilangan tersebut
- Bagi jumlah tersebut dengan 3
- Tulis hasilnya
b. Algoritma dengan pseudocode
input (a, b, c)
Jml = a+b+c
Rerata = Jml/3
Output (Rerata)
3. Algoritma konversi suhu dalam derajat Celcius ke derajat Kalvin
Penyelesaian menggunakan pseudocode:
Input (Celcius)
Kalvin = Celcius + 273
Output (Kalvin)