# Ilmu komputer

**Ilmu komputer** (bahasa Inggris: *computer science*code: en is deprecated ), secara umum diartikan sebagai ilmu yang mempelajari baik tentang komputasi, informasi, perangkat keras (*hardware*) maupun perangkat lunak (*software*). Termasuk secara luas dalam ilmu pengetahuan, ilmu komputer mencakup disiplin teoretis (seperti algoritma, teori komputasi, dan teori informasi) hingga disiplin terapan (termasuk desain dan implementasi perangkat keras dan Rekayasa perangkat lunak). Ilmu komputer mencakup beragam topik yang berkaitan dengan komputer, mulai dari algoritma teoretis hingga subjek yang lebih konkret seperti bahasa pemrograman, perangkat lunak, dan perangkat keras.

Sebagai suatu disiplin ilmu, Ilmu Komputer lebih menekankan pada komputasi, algoritma, pemrograman komputer, dan rekayasa perangkat lunak, sementara teknik komputer (atau rekayasa komputer) lebih cenderung berkaitan dengan analisis, desain, konstruksi, dan pemeliharaan perangkat keras komputer. Namun, kedua istilah tersebut sering disalahartikan oleh banyak orang. Seorang pakar di bidang ini dikenal sebagai ilmuwan komputer.

Area mendasar dari ilmu komputerTeori bahasa pemrogramanArsitektur komputerKecerdasan buatanTeori kompleksitas komputasi
Algoritma dan struktur data merupakan pusat dari ilmu komputer. Teori komputasi berkaitan dengan model komputasi abstrak dan kelas umum masalah yang dapat diselesaikan dengan menggunakannya. Tesis Church-Turing menyatakan bahwa semua alat komputasi yang telah umum diketahui sebenarnya sama dalam hal apa yang bisa mereka lakukan, sekalipun dengan efisiensi yang berbeda. Tesis ini kadang-kadang dianggap sebagai prinsip dasar dari ilmu komputer. Para ahli ilmu komputer biasanya menekankan komputer von Neumann atau mesin Turing (komputer yang mengerjakan tugas yang kecil dan deterministik pada suatu waktu tertentu), karena hal seperti itulah kebanyakan komputer digunakan sekarang ini. Para ahli ilmu komputer juga mempelajari jenis mesin yang lain, beberapa di antaranya belum bisa dipakai secara praktikal (seperti komputer neural, komputer DNA, dan komputer kuantum) serta beberapa di antaranya masih cukup teoretis (seperti komputer random dan komputer oracle).

Bidang-bidang dalam ilmu komputer sangat luas, mencakup kriptografi, keamanan komputer, grafika komputer, geometri komputasi, teori bahasa pemrograman, teori basis data, dan interaksi manusia–komputer. Bidang-bidang sistem seperti sistem operasi, jaringan, dan sistem tertanam menyelidiki prinsip di balik sistem kompleks. Kecerdasan buatan (AI) dan pembelajaran mesin bertujuan untuk mensintesis proses yang berorientasi pada tujuan seperti pemecahan masalah, adaptasi lingkungan, perencanaan, visi komputer, dan pemrosesan bahasa alami.

Perhatian utama dari ilmu komputer adalah menentukan apa yang bisa dan tidak bisa diotomatisasi. Penghargaan Turing (*Turing Award*) umumnya diakui sebagai penghargaan tertinggi dalam ilmu komputer, yang diberikan kepada para pionir di bidangnya.

## Sejarah

Thomas Harriot (1646–1716) mengembangkan notasi dan aritmatika biner pada awal abad ke-17.
Charles Babbage terkadang disebut sebagai "bapak komputasi".
Ada Lovelace menerbitkan algoritma pertama yang ditujukan untuk diproses pada komputer.
Fondasi paling awal dari apa yang akan menjadi ilmu komputer mendahului penemuan komputer digital modern. Mesin untuk menghitung tugas numerik tetap seperti sempoa telah ada sejak zaman kuno, membantu dalam komputasi seperti perkalian dan pembagian. Algoritma untuk melakukan komputasi telah ada sejak zaman kuno, bahkan sebelum pengembangan peralatan komputasi yang canggih. Ilmu komputer berakar dalam dari elektronika, matematika, dan linguistik.

Wilhelm Schickard merancang dan membangun kalkulator mekanik fungsional pertama pada tahun 1623. Pada tahun 1673, Gottfried Leibniz mendemonstrasikan kalkulator mekanik digital, yang disebut *Stepped Reckoner*. Leibniz dapat dianggap sebagai ilmuwan komputer dan teoritikus informasi pertama karena mendokumentasikan sistem bilangan biner, meskipun Thomas Harriot telah melakukannya beberapa dekade sebelumnya. Pada tahun 1820, Thomas de Colmar meluncurkan industri kalkulator mekanik ketika ia menemukan aritmometer yang disederhanakan, mesin hitung pertama yang cukup kuat dan andal untuk digunakan sehari-hari di kantor.

Charles Babbage memulai desain kalkulator mekanik otomatis pertama, Difference Engine miliknya, pada tahun 1822, yang akhirnya memberinya ide tentang kalkulator mekanik pertama yang dapat diprogram, Analytical Engine miliknya (1834). Langkah krusialnya adalah adopsi sistem kartu berlubang yang diturunkan dari Alat tenun Jacquard yang membuatnya dapat diprogram tanpa batas. Pada tahun 1843, Ada Lovelace menulis sebuah algoritma untuk menghitung bilangan Bernoulli pada Analytical Engine, yang dianggap sebagai algoritma pertama yang diterbitkan yang secara khusus disesuaikan untuk diimplementasikan pada komputer. Sekitar tahun 1885, Herman Hollerith menemukan tabulator menggunakan kartu berlubang untuk memproses statistik; perusahaannya kemudian menjadi bagian dari IBM.

Pada tahun 1914, insinyur Spanyol Leonardo Torres Quevedo menerbitkan *Essays on Automatics* dan memperkenalkan ide aritmatika titik mengambang. Pada tahun 1937, Howard Aiken meyakinkan IBM untuk mengembangkan kalkulator besar yang dapat diprogram, ASCC/Harvard Mark I, berdasarkan Analytical Engine milik Babbage.

Selama tahun 1940-an, dengan pengembangan mesin komputasi baru seperti Komputer Atanasoff–Berry dan ENIAC, istilah komputer mulai merujuk pada mesin itu sendiri daripada pendahulu manusianya (penghitung). Ketika menjadi jelas bahwa komputer dapat digunakan untuk lebih dari sekadar matematika, bidang ilmu komputer diperluas untuk mempelajari komputasi secara umum.

Pada tahun 1945, IBM mendirikan Laboratorium Komputasi Ilmiah Watson di Universitas Columbia, New York City, yang menawarkan salah satu program kursus kredit akademik pertama dalam ilmu komputer pada tahun 1946. Ilmu komputer mulai mapan sebagai disiplin akademik yang berbeda pada tahun 1950-an dan awal 1960-an. Program gelar ilmu komputer pertama di dunia, *Cambridge Diploma in Computer Science*, dimulai di Laboratorium Komputer Universitas Cambridge pada tahun 1953. Departemen ilmu komputer pertama di Amerika Serikat dibentuk di Universitas Purdue pada tahun 1962. Dalam tiga dekade terakhir dari abad ke-20, ilmu komputer telah sepenuhnya menjadi suatu disiplin ilmu baru dan telah mengembangkan metode dan istilahnya sendiri.

## Etimologi, Cakupan, dan Istilah

Meskipun pertama kali diusulkan pada tahun 1956, istilah "computer science" (ilmu komputer) muncul dalam sebuah artikel tahun 1959 di *Communications of the ACM* oleh Louis Fein, yang berargumen untuk pembentukan *Sekolah Pascasarjana dalam Ilmu Komputer* yang seanalog dengan Harvard Business School. Upaya ini, bersama upaya analis numerik George Forsythe, berhasil dan universitas mulai membuat departemen tersebut. Terlepas dari namanya, sejumlah besar ilmu komputer tidak melibatkan studi tentang komputer itu sendiri. Karena itu, ilmuwan Denmark Peter Naur menyarankan istilah *datalogi* atau sains data. Terkait hal ini, pakar ilmu komputer ternama Edsger Dijkstra memberikan kutipan cerita rakyat yang terkenal:

> "Ilmu komputer bukan tentang komputer sebagaimana astronomi bukan tentang teleskop."
>
>

Fisikawan Richard Feynman juga pernah menyatakan mengenai intensitas perkembangan bidang ini:

> "Ilmu komputer umurnya tidak setua fisika; lebih muda beberapa ratus tahun. Walaupun begitu, ini tidak berarti bahwa 'hidangan' ilmuwan komputer jauh lebih sedikit dibanding fisikawan. Memang lebih muda, tapi dibesarkan secara jauh lebih intensif!"
>
>

### Catatan tentang istilah 'informatika' dan 'ilmu komputer'

Dalam bahasa Indonesia, istilah **informatika** diturunkan dari bahasa Prancis *informatique* (atau *Informatik* dalam bahasa Jerman). Di Eropa, istilah yang berasal dari terjemahan singkat ekspresi "informasi otomatis" atau "informasi dan matematika" ini jamak digunakan, misalnya *informatica* (Italia, Belanda), *informática* (Spanyol, Portugis), atau *informatika* (Bahasa Slavia).

Sebenarnya, kata ini identik dengan istilah *computer science* di Amerika Serikat dan *computing science* di Inggris. Namun, istilah *informatics* dalam bahasa Inggris modern memiliki makna yang sedikit berbeda, yaitu lebih menekankan pada aspek pengolahan informasi secara sistematis, rasional, dan penerapannya dalam konteks domain lain (komputasi terapan).

## Filsafat dan Paradigma

### Epistemologi ilmu komputer

Ada perdebatan mengenai apakah ilmu komputer adalah disiplin ilmu sains, matematika, atau teknik. Allen Newell dan Herbert A. Simon berargumen pada tahun 1975 bahwa ilmu komputer adalah disiplin empiris/eksperimental karena setiap mesin atau program baru yang dibangun merupakan sebuah eksperimen yang mengajukan pertanyaan kepada alam.

Pendukung klasifikasi ilmu komputer sebagai disiplin teknik berargumen bahwa keandalan sistem komputasi diselidiki dengan cara yang sama seperti jembatan dalam teknik sipil dan objek teknik lainnya yang berfokus menciptakan fenomena baru untuk tujuan praktis. Sebaliknya, pendukung klasifikasi sebagai disiplin matematika (seperti Edsger W. Dijkstra dan Tony Hoare) berargumen bahwa program komputer adalah realisasi fisik dari entitas matematika dan dapat dinalar secara deduktif melalui metode formal menggunakan sistem aksiomatik.

### Paradigma Pemrograman

Bahasa pemrograman digunakan untuk menyelesaikan tugas dengan cara yang berbeda-beda. Paradigma pemrograman yang umum meliputi:

* **Pemrograman fungsional**: Gaya deklaratif yang memperlakukan komputasi sebagai evaluasi fungsi matematika dan menghindari keadaan (*state*) serta data yang dapat berubah (*mutable*).
* **Pemrograman imperatif**: Paradigma yang menggunakan pernyataan untuk mengubah keadaan program secara berurutan, berfokus pada langkah-langkah bagaimana program beroperasi.
* **Pemrograman berorientasi objek**: Paradigma berdasarkan konsep "objek" yang berisi data (atribut/kolom) dan kode (prosedur/metode).
* **Pemrograman berorientasi layanan**: Paradigma yang menggunakan "layanan" sebagai unit kerja komputer untuk merancang aplikasi bisnis terintegrasi.

Banyak bahasa modern menawarkan dukungan untuk beberapa paradigma (*multi-paradigm*), membuat perbedaan ini lebih ke arah gaya penulisan daripada kapabilitas teknis.

## Hubungan dengan Bidang Lain

Ilmu komputer berkaitan erat dengan beberapa bidang teknologi informasi lainnya. Bidang-bidang ini saling berinteraksi dan bekerja sama dalam sebuah ekosistem informasi:

### Sistem Informasi

Sistem informasi adalah aplikasi komputer untuk mendukung operasi dari suatu organisasi, mencakup operasi, instalasi, dan perawatan komputer, perangkat lunak, serta data. Bidang ini memproses dan mengolah data menjadi informasi untuk mendukung pengambilan keputusan, seperti Sistem Informasi Manajemen yang menekankan pada manajemen finansial dan personalia.

### Ilmu Informasi

Ilmu informasi adalah ilmu yang mempelajari data dan informasi, mencakup bagaimana menginterpretasi, menganalisis, menyimpan, mengolah, dan mengambilnya kembali secara sistematis. Ilmu informasi berakar dari dasar analisis komunikasi dan basis data.

### Keamanan Informasi

Keamanan informasi adalah ilmu yang mempelajari analisis, perlindungan, dan implementasi keamanan pada sistem informasi. Fokus utamanya adalah melindungi data dari akses, gangguan, atau modifikasi yang tidak sah melalui metode seperti kriptografi, steganografi, dan *watermarking*.

## Bidang Studi Utama

Organisasi akreditasi seperti CSAB membagi ilmu komputer ke dalam ranah teoretis dan terapan yang mencakup fondasi dasar hingga aplikasi mutakhir.

### Ilmu Komputer Teoretis

Berjiwa matematis dan abstrak, bidang ini menyediakan metodologi untuk memahami sifat dasar komputasi.

* **Dasar Matematika & Logika:** Meliputi Aljabar Boolean, Matematika diskrit, Kalkulus, Teori graf, Logika simbolik, serta Peluang dan statistik.
* **Teori Komputasi:** Berfokus pada apa yang dapat dihitung (teori komputabilitas) dan berapa besar sumber daya yang dibutuhkan (teori kompleksitas komputasi, seperti masalah P vs NP).
* **Teori Informasi & Pengodean:** Dikembangkan oleh Claude Shannon untuk kuantifikasi informasi, kompresi data, serta deteksi dan koreksi kesalahan.
* **Struktur Data dan Algoritma:** Studi tentang metode penyimpanan data secara efisien dan langkah-langkah komputasi optimal (misalnya analisis algoritma sorting, pencarian, dan optimasi kombinatorial).
* **Teori Bahasa Pemrograman & Metode Formal:** Desain, karakterisasi, dan verifikasi bahasa pemrograman menggunakan teori tipe dan semantik formal untuk menjamin keandalan sistem kritis.

|  |  |  |  |
| --- | --- | --- | --- |
|  |  |  |  |
| Teori otomata | Desain kompilator | Kompleksitas komputasi | Algoritma & Sorting |

### Perangkat Lunak dan Sistem Komputer

Studi praktis tentang perancangan, pembuatan, dan pengorganisasian elemen komputasi fisik dan digital.

* **Rekayasa Perangkat Lunak:** Pendekatan sistematis untuk analisis, desain, implementasi, pengujian, dan pemeliharaan perangkat lunak. Menggunakan berbagai model proses seperti *waterfall*, *prototyping*, RAD, hingga metode formal.
* **Arsitektur Komputer & Mikroarsitektur:** Desain konseptual dan struktur operasional mendasar dari CPU, memori, mikrokontroler, hingga superkomputer.
* **Sistem Operasi & Jaringan Komputer:** Perangkat lunak dasar pengelola perangkat keras serta prinsip komunikasi data antar-sistem.
* **Komputasi Seiring, Paralel, dan Terdistribusi:** Eksekusi beberapa komputasi secara bersamaan menggunakan grid, sistem terdistribusi, atau arsitektur paralel.
* **Basis Data & Penambangan Data:** Pengorganisasian data skala besar menggunakan DBMS, gudang data, dan algoritma data mining untuk menemukan pola tersembunyi.

### Metodologi Komputasi & Aplikasi Terapan

Penerapan ilmu komputer untuk memecahkan masalah spesifik dan mensintesis kemampuan cerdas.

* **Kecerdasan Buatan:** Studi pembuatan sistem cerdas yang mencakup pembelajaran mesin, jaringan saraf tiruan, pemrosesan bahasa alami, visi komputer, komputasi evolusioner, dan robotika.
* **Grafika Komputer & Pemrosesan Citra:** Sintesis, manipulasi, dan analisis konten visual digital serta video. Banyak diterapkan pada permainan video dan realitas virtual.
* **Sains Komputasi:** Penggunaan model matematika dan simulasi komputer untuk memecahkan masalah ilmu pengetahuan lain, seperti Fisika komputasional, Kimia komputasi, Bioinformatika, Informatika medis, dan keuangan komputasi.
* **Interaksi Manusia–Komputer (HCI):** Studi tentang desain antarmuka komputer yang berpusat pada kegunaan bagi manusia, mencakup komputasi afektif dan antarmuka otak-komputer.

|  |  |  |  |
| --- | --- | --- | --- |
|  |  |  |  |
| Jaringan Saraf Tiruan | Komputasi Citra Medis | Desain Berpusat Manusia | Bioinformatika |

## Wawasan Besar Ilmu Komputer

Filsuf komputasi Bill Rapaport mencatat tiga *Wawasan Besar Ilmu Komputer* (Great Insights of Computer Science):

1. **Representasi Informasi:** Semua informasi tentang masalah yang dapat dihitung dapat direpresentasikan hanya menggunakan bilangan biner 0 dan 1 (atau pasangan keadaan seperti *on/off*, tegangan tinggi/rendah).
2. **Aksi Komputasi:** Setiap algoritma dapat diekspresikan dalam bahasa komputer yang hanya terdiri dari lima instruksi dasar Mesin Turing: pindah kiri, pindah kanan, baca simbol, cetak 0, dan cetak 1.
3. **Kombinasi Struktur:** Menurut Teorema Böhm-Jacopini, hanya ada tiga aturan menggabungkan instruksi dasar yang diperlukan agar komputer dapat melakukan program terstruktur apa pun: urutan (*sequence*), pemilihan (*selection/if-then*), dan pengulangan (*repetition/while-do*).

## Penelitian

Konferensi akademik adalah acara penting untuk penyebaran penelitian ilmu komputer. Berbeda dengan sebagian besar bidang akademik lainnya (yang lebih mengutamakan publikasi jurnal), dalam ilmu komputer makalah yang diterima dalam makalah konferensi bergengsi sering kali memiliki tingkat prestise yang lebih tinggi. Hal ini dikarenakan perkembangan bidang ini berjalan sangat cepat sehingga membutuhkan tinjauan sejawat (*peer-review*) dan distribusi hasil yang lebih cepat.

## Tokoh-Tokoh Pionir

* Alan Turing: Peletak dasar teori komputabilitas, kecerdasan buatan, dan konsep Mesin Turing.
* Ada Lovelace: Penulis algoritma pertama di dunia yang ditujukan untuk dijalankan pada mesin Analytical Engine milik Charles Babbage.
* John von Neumann: Pengembang arsitektur von Neumann yang menjadi basis struktur hardware komputer modern saat ini.
* Edsger Dijkstra: Pionir algoritma graf, pemrograman terstruktur, dan penulis esai terkenal *"Go To Statement Considered Harmful"*.
* Donald Knuth: Penulis seri buku legendaris *The Art of Computer Programming* dan pencipta sistem pencetakan TeX.
* Claude Shannon: Bapak teori informasi yang menerapkan aljabar Boolean dalam sirkuit logika digital.
* John Backus: Penemu bahasa pemrograman tingkat tinggi pertama (FORTRAN) dan salah satu pengembang notasi sintaks BNF (Backus-Naur Form).
* Konrad Zuse: Pembuat komputer digital berbasis biner pertama yang dapat berfungsi pada tahun 1930-an.
* Ole-Johan Dahl & Kristen Nygaard: Penemu bahasa SIMULA, yang menjadi cikal bakal paradigma berorientasi objek.

## Referensi

## Lihat Pula

* Pendidikan ilmu komputer
* Glosarium ilmu komputer
* Daftar ilmuwan komputer
* Daftar penghargaan ilmu komputer
* Teknik Elektronika dan Komputer
* Garis besar ilmu komputer
* Kekutu (Bug komputer)
* Hello world

## Bacaan Lanjutan

* Tucker, Allen B. (2004). *Computer Science Handbook* (edisi ke-2). Chapman and Hall/CRC. ISBN 978-1-58488-360-9.
* Ralston, Anthony; Reilly, Edwin D.; Hemmendinger, David (2000). *Encyclopedia of Computer Science* (edisi ke-4). Grove's Dictionaries. ISBN 978-1-56159-248-7.
* Knuth, Donald E. (1996). *Selected Papers on Computer Science*. CSLI Publications, Cambridge University Press.
* Tedre, Matti (2014). *The Science of Computing: Shaping a Discipline*. CRC Press, Taylor & Francis.

## Pranala Luar

* DBLP Computer Science Bibliography
* Association for Computing Machinery (ACM)
* Institute of Electrical and Electronics Engineers (IEEE)