Kamis, 27 Juni 2013

BIOINFORMATIKA

PENGERTIAN “BIOINFORMATIKA”
 Secara umum, Bioinformatika dapat digambarkan sebagai segala bentuk penggunaan komputer dalam menangani informasi-informasi biologi.

 Menurut kebanyakan orang, Bioinformatika adalah satu sinonim dari komputasi biologi molekul (penggunaan komputer dalam menandai karakterisasi dari komponen-komponen molekul dari makhluk hidup).

 Menurut Fredj Tekaia dari Institut Pasteur [TEKAIA2004], Bioinformatika adalah metode matematika, statistik dan komputasi yang bertujuan untuk menyelesaikan masalah-masalah biologi dengan menggunakan sekuen DNA dan asam amino dan informasi-informasi yang terkait dengannya.

 Dari ketiga pengertian diatas maka dapat disimpulkan bahwa Bioinformatika ialah ilmu yang mempelajari penerapan teknik komputasi untuk mengelola dan menganalisis informasi hayati. Bidang ini mencakup penerapan metode-metode matematika, statistika, dan informatika untuk memecahkan masalah-masalah biologi, terutama yang terkait dengan penggunaan sekuens DNA dan asam amino.

SEJARAH “BIOINFORMATIKA”
Bioinformatika pertamakali dikemukakan pada pertengahan 1980an untuk mengacu kepada penerapan ilmu komputer dalam bidang biologi. Meskipun demikian, penerapan bidang-bidang dalam bioinformatika seperti pembuatan pangkalan data dan pengembangan algoritma untuk analisis sekuens biologi telah dilakukan sejak tahun 1960an. Kemajuan teknik biologi molekuler dalam mengungkap sekuens biologi protein (sejak awal 1950an) dan asam nukleat (sejak 1960an) mengawali perkembangan pangkalan data dan teknik analisis sekuens biologi. Pangkalan data sekuens protein mulai dikembangkan pada tahun 1960an di Amerika Serikat, sementara pangkalan data sekuens DNA dikembangkan pada akhir 1970an di Amerika Serikat dan Jerman pada Laboratorium Biologi Molekuler Eropa (European Molecular Biology Laboratory).




Penemuan teknik sekuensing DNA yang lebih cepat pada pertengahan 1970an menjadi landasan terjadinya ledakan jumlah sekuens DNA yang dapat diungkapkan pada 1980an dan 1990an. Hal ini menjadi salah satu pembuka jalan bagi proyek-proyek pengungkapan genom, yang meningkatkan kebutuhan akan pengelolaan dan analisis sekuens. Hal ini jugalah yang menyebabkan lahirnya istilah bioinformatika.

Bioinformatika ini terus dan terus saja berkembang dengan adanya jaringan internet. Pangkalan data bioinformatika yang terhubungkan melalui internet memudahkan ilmuwan untuk mengumpulkan hasil sekuensing ke dalam pangkalan data tersebut serta memperoleh sekuens biologi sebagai bahan analisis. Selain itu, penyebaran program-program aplikasi bioinformatika melalui internet memudahkan ilmuwan dalam mengakses program-program tersebut dan kemudian memudahkan pengembangannya.

CONTOH-CONTOH PENGGUNAAN “BIOINFORMATIKA”
1.       Bioinformatika dalam bidang klinis
Bioinformatika dalam bidang klinis sring juga disebut sebagai informatika klinis (clinical informatics). Aplikasi dari informatika klinis ini berbentuk manajemen data-data klinis dari pasien melalui Electrical Medical Record (EMR) yang dikembangkan oleh Clement J. McDonald dari Indiana University School of Medicine pada tahun 1972. McDonald pertama kali mengaplikasikan EMR pada 33 orang pasien penyakit gula (diabetes). Sekarang EMR telah diaplikasikan pada berbagai macam penyakit seperti data analisa diagnosa laboratorium, hasil konsultasi dan saran, foto rontgen, ukuran detak jantung, dll.

2.       Bioinformatika untuk identifikasi Agent penyakit baru
Bioinformatika juga menyediakan tool yang sangat penting untuk identifikasi agent penyakit yang belum dikenal penyebabnya. Misalnya saja seperti SARS (Severe Acute Respiratory Syndrome) yang dulu pernah berkembang.

3.       Bioinformatika untuk diagnose penyakit baru
Untuk menangani penyakit baru diperlukan diagnosa yang akurat sehingga dapat dibedakan dengan penyakit lain. Diagnosa yang akurat ini sangat diperlukan untuk pemberian obat dan perawatan yang tepat bagi pasien.
Ada beberapa cara untuk mendiagnosa suatu penyakit, antara lain: isolasi agent penyebab penyakit tersebut dan analisa morfologinya, deteksi antibodi yang dihasilkan dari infeksi dengan teknik enzyme-linked immunosorbent assay (ELISA), dan deteksi gen dari agent pembawa penyakit tersebut dengan Polymerase Chain Reaction (PCR).

4.       Bioinformatika untuk penemuan obat

Cara untuk menemukan obat biasanya dilakukan dengan menemukan zat/senyawa yang dapat menekan perkembangbiakan suatu agent penyebab penyakit. Karena perkembangbiakan agent tersebut dipengaruhi oleh banyak faktor, maka faktor-faktor inilah yang dijadikan target. Diantaranya adalah enzim-enzim yang diperlukan untuk perkembangbiakan suatu agent.

CABANG-CABANG YANG TERKAIT DENGAN “BIOINFORMATIKA”
1.       Biophysics
Biophysics adalah sebuah bidang interdisipliner yang mengaplikasikan teknik-teknik dari ilmu Fisika untuk memahami struktur dan fungsi biologi (British Biophysical Society). Biologi molekul sendiri merupakan pengembangan yang lahir dari biophysics. Disiplin ilmu ini terkait dengan Bioinformatika karena penggunaan teknik-teknik dari ilmu Fisika untuk memahami struktur yang membutuhkan penggunaan TI.

2.       Computational Biology
Computational biology merupakan bagian dari Bioinformatika (dalam arti yang paling luas) yang paling dekat dengan bidang Biologi umum klasik. Fokus dari computational biology adalah gerak evolusi, populasi, dan biologi teoritis dari pada biomedis dalam molekul dan sel.

3.       Medical Informatics
Menurut Aamir Zakaria [ZAKARIA2004] Pengertian dari medical informatics adalah “sebuah disiplin ilmu yang baru yang didefinisikan sebagai pembelajaran, penemuan, dan implementasi dari struktur dan algoritma untuk meningkatkan komunikasi, pengertian dan manajemen informasi medis.” Medical informatics lebih memperhatikan struktur dan algoritma untuk pengolahan data medis, dibandingkan dengan data itu sendiri.
4.       Cheminformatics
Cheminformatics adalah kombinasi dari sintesis kimia, penyaringan biologis, dan pendekatan data-mining yang digunakan untuk penemuan dan pengembangan obat (Cambridge Healthech Institute’s Sixth Annual Cheminformatics conference). Pengertian disiplin ilmu yang disebutkan di atas lebih merupakan identifikasi dari salah satu aktivitas yang paling populer dibandingkan dengan berbagai bidang studi yang mungkin ada di bawah bidang ini.

5.       Genomics
Genomics adalah setiap usaha untuk menganalisa atau membandingkan seluruh komplemen genetik dari satu spesies atau lebih.

6.       Mathematical Biology
Mathematical biology lebih mudah dibedakan dengan Bioinformatika daripada computational biology dengan Bioinformatika. Mathematical biology juga menangani masalah-masalah biologi, namun metode yang digunakan untuk menangani masalah tersebut tidak perlu secara numerik dan tidak perlu diimplementasikan dalam software maupun hardware. Bahkan metode yang dipakai tidak perlu “menyelesaikan” masalah apapun; dalam mathematical biology bisa dianggap beralasan untuk mempublikasikan sebuah hasil yang hanya menyatakan bahwa suatu masalah biologi berada pada kelas umum tertentu.
 Menurut Alex Kasman [KASMAN2004] Secara umum mathematical biology melingkupi semua ketertarikan teoritis yang tidak perlu merupakan sesuatu yang beralgoritma, dan tidak perlu dalam bentuk molekul, dan tidak perlu berguna dalam menganalisis data yang terkumpul.

7.       Proteomics
Adalah ilmu yang mempelajari proteome.

8.       Pharmacogenomics
Pharmacogenomics adalah aplikasi dari pendekatan genomik dan teknologi pada identifikasi dari target-target obat. Contohnya meliputi menjaring semua genom untuk penerima yang potensial dengan menggunakan cara Bioinformatika, atau dengan menyelidiki bentuk pola dari ekspresi gen di dalam baik patogen maupun induk selama terjadinya infeksi, atau maupun dengan memeriksa karakteristik pola-pola ekspresi yang ditemukan dalam tumor atau contoh dari pasien untuk kepentingan diagnosa (kemungkinan untuk mengejar target potensial terapi kanker).

9.       Pharmacogenetics
Pharmacogenetics adalah bagian dari pharmacogenomics yang menggunakan metode genomik/Bioinformatika untuk mengidentifikasi hubungan-hubungan genomic. Contohnya SNP (Single Nucleotide Polymorphisms), karakteristik dari profil respons pasien tertentu dan menggunakan informasi-informasi tersebut untuk memberitahu administrasi dan pengembangan terapi pengobatan.


Minggu, 12 Mei 2013

Algoritma Paralel

Dalam beberapa kasus, algoritma sekuensial dengan mudah dapat diadaptasi ke dalam lingkungan paralel. Namun dalam kebanyakan kasus, problem komputasi harus dianalisa ulang dan menghasilkan algoritma paralel yang baru. Terdapat beberapa penelitian mengenai perancangan algoritma paralel untuk problem-problem praktis seperti pengurutan, pemrosesan geraf, solusi untuk persamaan lanjar, solusi untuk persamaan diferensial, dan untuk simulasi. Teknik pembangunan algoritma paralel dapat dibedakan sebagai berikut :


Paralelisme Data
Teknik paralelisme data merupakan teknik yang paling banyak digunakan dalam program paralel. Teknik ini lahir dari penelitian bahwa aplikasi utama komputasi paralel adalah dalam bidang sain dan engineer, yang umumnya melibatkan array multi-dimensi yang sangat besar. Dalam program sekuensial biasa, array ini dimanipulasi dengan mempergunakan perulangan bersarang untuk mendapatkan hasil. Kebanyakan program paralel dibentuk dengan mengatur ulang algoritma sekuensial agar perulangan bersarang tersebut dapat dilaksanakan secara paralel. Paralelisme data menunjukkan bahwa basis data dipergunakan sebagai dasar untuk membentuk aktifitas paralel, dimana bagian yang berbeda dari basis data akan diproses secara paralel. Dengan kata lain paralelisme dalam program ini dibentuk dari penerapan operasi-operasi yang sama ke bagian array data yang berbeda. Prinsip paralelisme data ini berlaku untuk pemrograman multiprosesor dan multikomputer.

Partisi Data
Merupakan teknik khusus dari Paralelisme Data, dimana data disebar ke dalam memori-memori lokal multikomputer. Sebuah proses paralel kemudian ditugaskan untuk mengoperasikan masingmasing bagian data. Proses tersebut harus terdapat dalam lokal memori yang sama dengan bagian data, karena itu proses dapat mengakses data tersebut secara lokal. Untuk memperoleh kinerja yang baik, setiap proses harus memperhatikan variabel-variabel dan data-data lokalnya masing-masing. Jika suatu proses membutuhkan akses data yang terdapat dalam remote memori, maka hal ini dapat dilakukan melalui jaringan message passing yang menghubungkan prosesor-prosesor. Karena komunikasi antar prosesor ini menyebabkan terjadinya waktu tunda, maka messsage passing ini sebaiknya dilakukan dalam frekuensi yang relatif kecil. Dapat disimpulkan bahwa tujuan dari partisi data adalah untuk mereduksi waktu tunda yang diakibatkan komunikasi messsage passing antar prosesor. Algoritma paralel mengatur agar setiap proses dapat melakukan komputasi dengan lokal data masing-masing.

Algoritma Relaksasi
Pada algoritma ini, setiap proses tidak membutuhkan sinkronisasi dan komunikasi antar proses. Meskipun prosesor mengakses data yang sama, setiap prosesor dapat melakukan komputasi sendiri tanpa tergantung pada data antara yang dihasilkan oleh proses lain. Contoh algoritma relaksasi adalah algoritma perkalian matrik, pengurutan dengan mengunakan metode ranksort dan lain sebagainya.

Paralelisme Sinkron
Aplikasi praktis dari komputasi paralel adalah untuk problem yang melibatkan array multi-dimensi yang sangat besar. Problem tersebut mempunyai peluang yang baik untuk paralelisme data karena elemen yang berbeda dalam array dapat diproses secara paralel. Teknik komputasi numerik pada array ini biasanya iteratif, dan setiap iterasi akan mempengaruhi iterasi berikutnya untuk menuju solusi akhir. Misalnya saja untuk solusi persamaan numerik pada sistem yang besar. Umumnya, setiap iterasi mempergunakan data yang dihasilkan oleh iterasi sebelumnya dan program akhirnya menuju suatu solusi dengan akurasi yang dibutuhkan. Algoritma iterasi ini mempunyai peluang paralelisme pada setiap iterasinya. Beberapa proses parallel dapat dibentuk untuk bekerja pada array bagian yang berbeda. Namun setelah setiap iterasi, prosesproses harus disinkronkan, karena hasil yang diproduksi oleh satu proses dipergunakan oleh prosesproses lain pada iterasi berikutnya. Teknik pemrograman paralel seperti ini disebut paralelisme sinkron. Contohnya adalah perhitungan numerik pada Metode Eliminasi Gauss. Pada paralelisme sinkron ini, struktur umum programnya biasanya terdiri dari perulangan FORALL yang akan membentuk sejumlah besar proses paralel untuk dioperasikan pada bagian array data yang berbeda. Setiap proses diulang dan disinkronkan pada akhir iterasi. Tujuan dari sinkronisasi ini adalah untuk meyakinkan bahwa seluruh proses telah menyelesaikan iterasi yang sedang berlangsung, sebelum terdapat suatu proses yang memulai iterasi berikutnya.

Komputasi Pipeline
Pada komputasi pipeline, data dialirkan melalui seluruh struktur proses, dimana masing-masing proses membentuk tahap-tahap tertentu dari keseluruhan komputasi . Algoritma ini dapat berjalan dengan baik pada multikomputer, karena adanya aliran data dan tidak banyak memerlukan akses ke data bersama. Contoh komputasi pipeline adalah teknik penyulihan mundur yang merupakan bagian dari metoda Eliminasi.
Dalam merancang suatu algoritma paralel kita harus mempertimbangkan pula hal-hal yang dapat mengurangi kinerja program paralel. Hal-hal tersebut adalah :
  1. 1.      Memory Contention

Eksekusi prosesor tertunda ketika prosesor menunggu hak ases ke sel memori yang sedang dipergunakan oleh prosesor lain. Problem ini muncul pada arsitektur multiprosesor dengan memori bersama.
  1. 2.      Excessive Sequential Code

Pada beberapa algoritma paralel, akan terdapat kode sekuensial murni dimana tipe tertentu dari operasi pusat dibentuk, seperti misalnya pada proses inisialisasi. Dalam beberapa algoritma, kode sekuensial ini dapat mengurangi keseluruhan speedup yang dapat dicapai. Process Creation Time Pembentukan proses paralel akan membutuhkan waktu eksekusi. Jika proses yang dibentuk relative berjalan dalam waktu yang relatif lebih singkat dibandingkan dengan waktu pembentukan proses itu sendiri, maka overhead pembuatan akan lebih besar dibandingkan dengan waktu eksekusi paralel algoritma. Communication Delay Overhead ini muncul hanya pada multikomputer. Hal ini disebabkan karena interaksi antar prosesor melalui jaringan komunikasi. Dalam beberapa kasus, komunikasi antar dua prosesor mungkin melibatkan beberapa prosesor antara dalam jaringan komunikasi. Jumlah waktu tunda komunikasi dapat menurunkan kinerja beberapa algoritma paralel.

Synchronization Delay
Ketika proses paralel disinkronkan, berarti bahwa suatu proses akan harus menunggu proses lainnya. Dalam beberapa program paralel, jumlah waktu tunda ini dapat menyebabkan bottleneck dan mengurangi speedup keseluruhan. Load Imbalance Dalam beberapa program paralel, tugas komputasi dibangun secara dinamis dan tidak dapat diperkirakan sebelumnya. Karena itu harus selalu ditugaskan ke prosesor-prosesor sejalan dengan pembangunan tugas tersebut. Hal ini dapat menyebabkan suatu prosesor tidak bekerja (idle), sementara prosesor lainnya tidak dapat mengerjakan task yang ditugaskannya.

Sabtu, 13 April 2013

Jenis - Jenis Komputasi Modern


Komputasi Modern terbagi tiga macam, yaitu komputasi mobile (bergerak), komputasi grid, dan komputasi cloud (awan). Penjelasan lebih lanjut dari jenis-jenis komputasi modern sebagai berikut :

1.        Mobile computing
Mobile computing atau komputasi bergerak memiliki beberapa penjelasan, salah satunya komputasi bergerak merupakan kemajuan teknologi komputer sehingga dapat berkomunikasi menggunakan jaringan tanpa menggunakan kabel dan mudah dibawa atau berpindah tempat, tetapi berbeda dengan komputasi nirkabel.

Dan berdasarkan penjelasan tersebut, untuk kemajuan teknologi ke arah yang lebih dinamis membutuhkan perubahan dari sisi manusia maupun alat. Dan dapat dilihat contoh dari perangkat komputasi bergerak seperti GPS, juga tipe dari komputasi bergerak seperti smart phone, dan lain sebagainya.


2.        Grid computing
Komputasi grid menggunakan komputer yang terpisah oleh geografis, didistibusikan dan terhubung oleh jaringan untuk menyelasaikan masalah komputasi skala besar.

Ada beberapa daftar yang dapat dugunakan untuk mengenali sistem komputasi grid, adalah :
§  Sistem untuk koordinat sumber daya komputasi tidak dibawah kendali pusat.
§  Sistem menggunakan standard dan protocol yang terbuka.
§  Sistem mencoba mencapai kualitas pelayanan yang canggih, yang lebih baik diatas kualitas komponen individu pelayanan komputasi grid.

3.       Cloud computing
Komputasi cloud merupakan gaya komputasi yang terukur dinamis dan sumber daya virtual yang sering menyediakan layanan melalui internet.

Komputasi cloud menggambarkan pelengkap baru, konsumsi dan layanan IT berbasis model dalam internet, dan biasanya melibatkan ketentuan dari keterukuran dinamis dan sumber daya virtual yang sering menyediakan layanan melalui internet.

Adapun perbedaan antara komputasi mobile, komputasi grid dan komputasi cloud, dapat dilihat penjelasannya dibawah ini :

A.      Perbedaan antara komputasi mobile, grid, dan cloud
·         Komputasi mobile menggunakan teknologi komputer yang bekerja seperti handphone, sedangkan komputasi grid dan cloud menggunakan komputer.
·         Biaya untuk tenaga komputasi mobile lebih mahal dibandingkan dengan komputasi grid dan cloud.
·         Komputasi mobile tidak membutuhkan tempat dan mudah dibawa kemana-mana, sedangkan grid dan cloud membutuhkan tempat yang khusus.
·         Untuk komputasi mobile proses tergantung si pengguna, komputasi grid proses tergantung pengguna mendapatkan server atau tidak, dan komputasi cloud prosesnya membutuhkan jaringan internet sebagai penghubungnya.

B.      Persamaan antara komputasi mobile, komputasi grid, dan komputasi cloud
·         Ketiganya merupakan metode untuk melakukan komputasi, pemecahan masalah, dan pencarian solusi.
·         Ketiganya memerlukan alat proses data yang modern seperti komputer, laptop atau telepon genggam untuk menjalankannya.

Kamis, 11 April 2013

Virtual Class Pemograman Jaringan


A.      Modul 1
Mengetahui Nama Komputer Yang Digunakan Dengan Memasukan Ip Address
Source code
Nama file   = IPtoName.java
import java.net.*;
public class IPtoName{
public static void main(String args[]){
if (args.length == 0){
System.out.println("Pemakaian : java IPtoName <IP Address>");
System.exit(0);
}
String host = args[0] ;
InetAddress address = null ;
try{
address = InetAddress.getByName(host);
}catch(UnknownHostException e){
System.out.println("invalid IP");
System.exit(0);
}
System.out.println(address.getHostName());
}
}

Output
Dijalankan dengan argumen IP komputer lokal dan komputer lain.
$ javac IPtoName.java
$ java IPtoName <IP Address Anda>
$ java IPtoName <IP Address teman Anda>
$ java IPtoName <IP Address sembarang>


B.      Modul 2
Mengetahui Alamat Ip Dari Sebuah Situs
Soal dan Source code
Masukkan misal www.detik.com maka akan ditampilkan Alamat IP dari www.detik.com. Masukkan host name : java.sun.com, berapakah Alamat IPnya?
import java.net.*;
import java.io.*;
public class IPFinder{
public static void main(String args[]) throws IOException{
String host;
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Enter host name : ");
host = input.readLine();
try{
InetAddress address = InetAddress.getByName(host);
System.out.println("IP Address : " + address);
}catch(UnknownHostException e){
System.out.println("Could not find " + host);
}
}
}
Output


C.      Modul 3
Mengetahui Nama Komputer Lokal /Sendiri
Source code
import java.net.*;
public class getName{
public static void main(String args[]) throws Exception{
InetAddress host = null ;
host = InetAddress.getLocalHost();
System.out.println("Nama komputer Anda :" + host.getHostName());
}
}

Output

Rabu, 03 April 2013

KOMPLEKSITAS TEKNOLOGI KOMPUTASI MODERN



Definisi Komputasi Modern

Komputasi modern terdiri dari dua kata yaitu komputasi dan modern. Komputasi dapat diartikan sebagai cara untuk menemukan pemecahan permasalahan dari data input dengan suatu algoritma. Komputasi merupakan subbagian dari matematika. Selama ribuan tahun, perhitungan dan komputasi menggunakan pena dan kertas, atau kapur dan batu tulis, atau dikerjakan secara mental dan kadang-kadang menggunakan tabel. disebut modern karena menggunakan alat canggih saat menyelesaian masalah. Maka dapat di simpulkan Komputasi modern adalah perhitungan yang menggunakan computer canggih dimana pada computer tersebut tersimpan sejumlah algoritma untuk menyelesaikan masalah perhitungan secara efektif dan efisien. Komputasi modern digunakan untuk memecahkan masalah antara lain untuk menghitung:

·         Akurasi (bit, floating point)
·         Kecepatan (dalam satuanHz)
·         Problem volume besar (paralel)
·         Modeling (NN dan GA)
·         Kompleksitas (menggunakan Teori Bog O)

Secara umum iIlmu komputasi adalah bidang ilmu yang mempunyai perhatian pada penyusunan model matematika dan teknik penyelesaian numerik serta penggunaan komputer untuk menganalisis dan memecahkan masalah-masalah ilmu (sains). Dalam penggunaan praktis, biasanya berupa penerapan simulasi komputer atau berbagai bentuk komputasi lainnya untuk menyelesaikan masalah-masalah dalam berbagai bidang keilmuan, tetapi dalam perkembangannya digunakan juga untuk menemukan prinsip-prinsip baru yang mendasar dalam ilmu.
Bidang ini berbeda dengan ilmu komputer (computer science), yang mengkaji komputasi, komputer dan pemrosesan informasi. Bidang ini juga berbeda dengan teori dan percobaan sebagai bentuk tradisional dari ilmu dan kerja keilmuan. Dalam ilmu alam, pendekatan ilmu komputasi dapat memberikan berbagai pemahaman baru, melalui penerapan model-model matematika dalam program komputer berdasarkan landasan teori yang telah berkembang, untuk menyelesaikan masalah-masalah nyata dalam ilmu tersebut.
Karakteristik Komputasi Modern

Karakteristik komputasi modern ada 3 macam, yaitu :

1.      Komputer-komputer penyedia sumber daya bersifat heterogenous karena terdiri dari berbagai jenis perangkat keras, sistem operasi, serta aplikasi yang terpasang.
2.      Komputer-komputer terhubung ke jaringan yang luas dengan kapasitas bandwidth yang beragam.
3.      Komputer maupun jaringan tidak terdedikasi, bisa hidup atau mati sewaktu-waktu tanpa jadwal yang jelas.

Jenis-Jenis Komputasi Modern

Jenis-jenis komputasi modern ada 3 macam, yaitu :
A.    Mobile Computing atau Komputasi Bergerak
Mobile computing (komputasi bergerak) merupakan kemajuan teknologi komputer sehingga dapat berkomunikasi menggunakan jaringan tanpa menggunakan kabel serta mudah dibawa atau berpindah tempat, tetapi berbeda dengan komputasi nirkabel. Berdasarkan penjelasan tersebut, untuk kemajuan teknologi ke arah yang lebih dinamis membutuhkan perubahan dari sisi manusia maupun alat. Contoh dari mobile computing adalah GPS, smart phone, dan sebagainya.

B.     Grid Computing
Komputasi grid memanfaatkan kekuatan pengolahan idle berbagai unit komputer, dan menggunakan kekuatan proses untuk menghitung satu pekerjaan. Pekerjaan itu sendiri dikontrol oleh satu komputer utama, dan dipecah menjadi beberapa tugas yang dapat dilaksanakan secara bersamaan pada komputer yang berbeda. Tugas-tugas ini tidak perlu saling eksklusif, meskipun itu adalah skenario yang ideal. Sebagai tugas lengkap pada berbagai unit komputasi, hasil dikirim kembali ke unit pengendali, yang kemudian collates itu membentuk keluaran kohesif.

Keuntungan dari komputasi grid adalah dua kali lipat: pertama, kekuatan pemrosesan yang tidak digunakan secara efektif digunakan, memaksimalkan sumber daya yang tersedia dan, kedua, waktu yang dibutuhkan untuk menyelesaikan pekerjaan besar berkurang secara signifikan.

Idealnya kode sumber harus direstrukturisasi untuk membuat tugas-tugas yang saling eksklusif adalah sebagai mungkin. Itu tidak berarti bahwa mereka tidak bisa saling bergantung, tetapi pesan yang dikirim antara tugas-tugas meningkatkan faktor waktu. Satu pertimbangan penting saat membuat pekerjaan komputasi grid adalah bahwa apakah kode dijalankan serial atau paralel tugas, hasil dari keduanya harus selalu sama di setiap situasi.

C.     Cloud Computing atau Komputasi Awan
Cloud computing adalah perluasan dari konsep pemrograman berorientasi objek abstraksi. Abstraksi, sebagaimana dijelaskan sebelumnya, menghapus rincian kerja yang kompleks dari visibilitas. Semua yang terlihat adalah sebuah antarmuka, yang menerima masukan dan memberikan output. Bagaimana output ini dihitung benar-benar tersembunyi.


Kompleksitas

Kompleksitas komputasi adalah cabang dari teori komputasi dalam ilmu komputer yang berfokus pada mengklasifikasikan masalah komputasi sesuai dengan kesulitan inheren mereka. Dalam konteks ini, sebuah masalah komputasi dipahami sebagai tugas yang pada prinsipnya setuju untuk menjadi dipecahkan oleh komputer. Informal, sebuah masalah komputasi terdiri dari contoh-contoh masalah dan solusi untuk masalah ini contoh. Sebagai contoh, primality pengujian adalah masalah menentukan apakah nomor yang diberikan perdana atau tidak. Contoh-contoh masalah ini adalah bilangan asli, dan solusi untuk sebuah contoh adalah ya atau tidak didasarkan pada apakah nomor perdana atau tidak.

Masalah ini dianggap sebagai secara inheren sulit jika memecahkan masalah yang memerlukan sejumlah besar sumber daya, tergantung pada algoritma yang digunakan untuk memecahkan itu. Teori ini formalizes intuisi, dengan memperkenalkan matematika model komputasi untuk mempelajari masalah ini dan kuantitatif jumlah sumber daya yang dibutuhkan untuk memecahkan mereka, seperti waktu dan penyimpanan. Ukuran kompleksitas lain juga digunakan, seperti jumlah komunikasi (digunakan dalam kompleksitas komunikasi), jumlah gerbang dalam rangkaian (digunakan dalam rangkaian kompleksitas) dan jumlah prosesor (digunakan dalam komputasi paralel). Secara khusus, teori kompleksitas komputasi menentukan batas-batas praktis tentang apa yang komputer bisa dan tidak bisa lakukan.

Bidang-bidang terkait erat dalam ilmu komputer teoritis analisis algoritma dan teori computability. Perbedaan utama antara teori kompleksitas komputasi dan analisis algoritma adalah bahwa yang terakhir ditujukan untuk menganalisis jumlah sumber daya yang dibutuhkan oleh algoritma tertentu untuk memecahkan masalah, sedangkan yang pertama mengajukan pertanyaan yang lebih umum tentang semua kemungkinan algoritma yang dapat digunakan untuk memecahkan masalah yang sama. Lebih tepatnya, hal ini mencoba untuk mengklasifikasikan masalah yang dapat atau tidak dapat diselesaikan dengan tepat sumber daya terbatas. Pada gilirannya, memaksakan pembatasan pada sumber daya yang tersedia adalah apa yang membedakan kompleksitas komputasi dari computability teori: teori yang terakhir bertanya apa jenis masalah dapat diselesaikan pada prinsipnya algorithmically.
  

Contoh Masalah :
Sebuah masalah komputasi dapat dilihat sebagai sebuah koleksi yang tak terbatas kasus bersama-sama dengan solusi untuk setiap contoh. Input string untuk sebuah masalah komputasi disebut sebagai contoh masalah, dan tidak boleh bingung dengan masalah itu sendiri. Dalam teori kompleksitas komputasi, masalah mengacu pada pertanyaan abstrak yang harus dipecahkan. Sebaliknya, sebuah contoh dari masalah ini adalah ucapan yang agak konkret, yang dapat digunakan sebagai masukan untuk masalah keputusan. Sebagai contoh, perhatikan masalah primality pengujian. contoh adalah nomor dan solusinya adalah "ya" jika nomor perdana dan "tidak" sebaliknya. Bergantian, yang contoh adalah input tertentu untuk masalah, dan solusinya adalah output sesuai dengan input yang diberikan.

Untuk lebih menyoroti perbedaan antara masalah dan sebuah contoh, pertimbangkan contoh berikut versi keputusan dari pedagang keliling masalah: Apakah ada rute dengan panjang maksimal 2000 kilometer melewati semua di Jerman 15 kota terbesar? Jawaban untuk masalah khusus ini misalnya tidak banyak digunakan untuk menyelesaikan contoh-contoh lain dari masalah, seperti meminta untuk pulang-pergi melalui semua pemandangan di Milan yang jumlah paling banyak panjangnya 10km. Untuk alasan ini, teori kompleksitas komputasi alamat masalah dan bukan masalah tertentu.