Peserta didik mampu memahami validitas sumber data; memahami konsep struktur data dan algoritma standar; menerapkan proses komputasi yang dilakukan manusia secara mandiri atau berkelompok untuk mendapatkan data yang bersih, benar, dan terpercaya; menerapkan struktur data dan algoritma standar untuk menghasilkan berbagai solusi dalam menyelesaikan persoalan yang mengandung himpunan data berstruktur kompleks dengan volume tidak kecil; serta menuliskan solusi rancangan program sederhana dalam format pseudocode yang dekat dengan bahasa komputer. Peserta didik mampu memahami model dan menyimulasikan dinamika Input-Proses-Output dalam sebuah komputer Von Neumann, serta memahami peran sistem operasi.
Berpikir komputasional (BK) merupakan salah satu pondasi berpikir yang amat penting dalam bidang informatika. Banyak ahli dari berbagai bidang telah memberikan definisi dan interpretasi mereka sendiri tentang BK. Berikut adalah beberapa definisi BK dari para ahli:
1. Seymour Papert (1996)
Papert mendefinisikan BK sebagai seperangkat keterampilan kognitif yang memungkinkan seseorang untuk:
Mengenali pola: Kemampuan untuk melihat pola dan keteraturan dalam data dan informasi.
Memecahkan masalah kompleks: Kemampuan untuk memecahkan masalah kompleks dengan membaginya menjadi langkah-langkah yang lebih kecil dan lebih mudah dipecahkan.
Membuat abstraksi: Kemampuan untuk mengidentifikasi elemen-elemen penting dari suatu masalah dan mengabaikan detail yang tidak relevan.
Merancang solusi: Kemampuan untuk merancang solusi yang efektif dan efisien untuk masalah yang kompleks.
Mempraktikkan otomatisasi: Kemampuan untuk mengotomatisasi tugas-tugas yang berulang dan membosankan.
2. Jeanette Wing (2006)
Wing mendefinisikan BK sebagai:
"Proses pemecahan masalah dan perancangan solusi yang melibatkan representasi data dan algoritma, serta penggunaan pengetahuan tentang komputasi dan batasannya."
Wing menekankan bahwa BK bukan hanya tentang pemrograman komputer, tetapi juga tentang cara berpikir dan menyelesaikan masalah secara efektif dan efisien.
3. Joan Blum & Tim Cortina (2007)
Blum dan Cortina mendefinisikan BK sebagai:
"Kemampuan untuk berpikir seperti komputer programmer untuk memecahkan masalah dengan cara yang sistematis dan terstruktur."
Blum dan Cortina menyamakan pola pikir BK dengan pola pikir pakar TI saat memikirkan solusi untuk masalah.
4. Andrea diSessa (2008)
diSessa mendefinisikan BK sebagai:
"Kemampuan untuk merumuskan masalah dalam istilah yang dapat dikomputasikan dan untuk menyelesaikannya dengan menggunakan komputer."
diSessa menekankan peran komputer dalam BK, tetapi juga mengakui bahwa BK dapat diterapkan tanpa menggunakan komputer.
5. Mitchel Resnick (2010)
Resnick mendefinisikan BK sebagai:
"Kemampuan untuk merumuskan masalah, mengembangkan solusi, dan mengimplementasikan solusi menggunakan komputer."
Resnick menekankan pentingnya kreativitas dan inovasi dalam BK.
Kesimpulan:
Dari definisi-definisi di atas, dapat disimpulkan bahwa BK adalah tentang cara berpikir dan menyelesaikan masalah secara efektif dan efisien. BK melibatkan berbagai keterampilan kognitif, seperti:
Mengenali pola
Memecahkan masalah kompleks
Membuat abstraksi
Merancang solusi
Mempraktikkan otomatisasi
BK dapat diterapkan dalam berbagai bidang, tidak hanya dalam ilmu komputer dan informatika. Dengan mempelajari BK, kita dapat meningkatkan kemampuan kita untuk memecahkan masalah, berpikir kritis, berinovasi, dan beradaptasi dengan perubahan.
Sumber:
Dekomposisi merupakan kemampuan untuk memecahkan masalah yang besar menjadi bagian kecil sehingga mudah untuk di tangani
Pengenalan Pola merupakan kemampuan untuk menganalisa dan mencari pengulangan pola yang sama
Abstaksi merupakan kemampuan untuk membedakan atau menghilangkan bagian masalah yang tidak penting dan membuat satu solusi untuk berbagai masalah
Algortitma merupakan kemampuan untuk menyusun lagkah sistematis untuk menyelesaikan masalah.
Di samping itu, berpikir komputasional didefinisikan oleh ISTE (The International Society for Technology in Education) adalah proses penyelesaian masalah yang mencakup (namun tidak terbatas pada) beberapa karakteristik berikut :
- Merumuskan masalah dengan cara yang memungkinkan penggunaan komputer dan perangkat lain untuk menyelesaikan masalah tersebut
- Secara logis mengorganisir dan menganalisis data
- Merepresentasikan data melalui abstraksi seperti pemodelan dan simulasi
- Mengotomasi solusi melalui pemikiran yang algoritmis (dalam bentuk serangkaian langkah terurut)
- Mengidentifikasi, menganalisis, dan mengimplementasikan berbagai kemungkinan solusi yang mungkin dengan tujuan untuk mendapatkan kombinasi langkah-langkah dan sumber daya yang paling efektif dan efisien
- Menggeneralisasi dan mentransfer proses penyelesaian masalah untuk permasalahan yang lebih luas dan bervariasi.
Berdasar definisi di atas, jelas bahwa berpikir komputasional memuat aktivitas analisis data serta aktivitas untuk melakukan otomasi yangmembutuhkan kemampuan menyusun algoritma. Penguasaan kemampuan analisis data serta algoritma dan pemrograman akan membuat penyelesaian masalah dengan menggunakan cara berpikir (way of thinking) berpikir komputasional makin efektif dan efisien.
Hidup adalah pencarian yang tiada henti. Mari, kita berpikir ke pengalaman “mencari” dalam kehidupan sehari-hari. Perhatikan contoh berikut.
1. Pernahkah kalian merasa kebingungan saat mencari sebuah buku di lemari buku kalian? Atau bahkan di perpustakaan? Saat kalian meminta bantuan kepada petugas perpustakaan, mengapa dia dapat menemukan buku yang kalian cari dengan waktu yang lebih singkat?
2. Suatu hari, kalian kehilangan baju seragam yang harus dipakai pada hari itu dan kalian mencarinya. Apa strategi kalian supaya baju tersebut cepat ditemukan?
3. Kalian mengingat sebuah potongan lirik lagu, tetapi tidak ingat judul lagu tersebut. Bagaimana kalian bisa menemukan lagu tersebut dengan cepat?
Apa itu mencari? Mencari adalah menemukan “sesuatu” yang bisa berupa benda, angka, konsep, informasi yang memenuhi kriteria tertentu dalam suatu ruang pencarian. Masalah pencarian sangat umum ditemukan di dalam kehidupan, termasuk dalam dunia komputasi. Ketika melakukan suatu pencarian, kalian harus menemukan suatu benda atau objek yang memenuhi kriteria tertentu dari sekumpulan benda atau objek lain. Beberapa contoh dari masalah pencarian yang sering kalian temui ialah sebagai berikut.
1. Mencari buku dengan judul tertentu di rak buku perpustakaan.
2. Mencari pakaian batik seragam kalian di lemari yang berisi semua pakaian yang kalian miliki.
3. Mencari dokumen atau web tertentu dengan mesin pencari seperti Google.
Mencari benda nyata gampang, tinggal kita lihat dan kita cocokkan dengan mata. Namun, mencari informasi atau konsep yang tidak kelihatan?
Hmmmmm... Tidak mudah!
Masalah pencarian dapat dibuat dalam bentuk yang lebih formal agar dapat diterapkan pada banyak kasus. Elemen pada masalah pencarian meliputi hal-hal berikut.
1. Sekumpulan benda atau objek.
2. Kriteria dari benda atau objek yang dicari.
Pengecekan benda atau objek, untuk memeriksa apakah ia memenuhi kriteria pencarian.
Aktivitas Berpasangan: Tebak Angka
Untuk memahami masalah pencarian, kalian akan bermain tebak angka.
Pada saat bermain, siswa mencoba untuk memahami permainan tersebut
dan identifikasi aspek-aspek masalah pencarian pada permainan tersebut.
Siswa mencari strategi terbaik untuk menemukan angka yang dimiliki oleh
teman dengan jumlah pengecekan sesedikit mungkin.
Skenario Permainan
Petunjuk bagi siswa:
• Pada permainan ini, kalian harus berpasangan dengan salah seorang teman.
• Teman kalian akan memilih sebuah angka bilangan bulat antara 1 – 100 (inklusif, angka 1 dan 100 juga boleh dipilih), dan angka tersebut akan ia rahasiakan.
• Tugas kalian ialah menemukan angka tersebut.
Untuk menemukan angka tersebut, kalian harus mengecek apakah angka
tebakan kalian ialah angka yang dimiliki oleh teman kalian. Kalian hanya
bisa mengecek angka satu per satu dengan menyebutkan angka tebakan
kalian tersebut. Setiap kali kalian menebak, teman kalian harus menjawab
satu dari tiga kemungkinan berikut:
1. “Benar” apabila angka yang kalian tebak sama dengan angka yang dimiliki teman kalian.
2. “Angka milikku lebih kecil” apabila angka yang dimiliki teman kalian lebih kecil dari tebakan kalian.
3. “Angka milikku lebih besar” apabila angka yang dimiliki teman kalian lebih besar dari tebakan kalian.
Tentu saja, kalian dapat menebak angka apa pun, tetapi carilah strategi yang membuat kalian dapat dengan cepat (atau dengan kata lain jumlah tebakan sesedikit mungkin) menemukan angka yang dipilih oleh teman kalian.
Catatlah angka-angka yang kalian tebak dan jumlah tebakan yang kalian
lakukan di lembar kerja yang disediakan. Lakukan permainan ini minimal
sebanyak dua kali. Pada permainan berikutnya, kalian bisa bertukar peran.
Bahan diskusi
Setelah bermain, saatnya kalian memikirkan makna permainan tersebut dan
cara kalian bermain. Beberapa poin diskusi yang akan kalian lakukan seperti
berikut.
1. Apakah permainan ini merupakan masalah pencarian?
2. Apabila Binti menjalankan strategi yang tepat, berapa kali jumlah maksimal tebakan yang benar-benar ia perlukan?
3. Strategi pencarian seperti apa yang kalian lakukan untuk menebak sesedikit mungkin?
4. Apakah strategi kalian berbeda dengan strategi yang dilakukan teman kalian? Jika berbeda, apa perbedaannya?
5. Strategi paling bagus apa yang dapat kalian temukan untuk menemukan angka dengan jumlah tebakan paling sedikit?
6. Adakah cara lain untuk “mencari” angka yang ditebak?
Sorting adalah proses pengurutan data atau elemen-elemen dalam suatu data dengan teratur. Sorting dapat dilakukan secara ascending (urut naik) atau descending (urut turun).
Sorting memiliki beberapa tujuan, yaitu:
Mudah untuk dianalisis. Data yang telah diurutkan lebih mudah untuk dianalisis, misalnya untuk mencari data tertentu atau untuk menghitung nilai rata-rata.
Meningkatkan efisiensi. Data yang telah diurutkan dapat diproses lebih efisien, misalnya untuk pencarian data atau untuk pembandingan data.
Meningkatkan efektivitas. Data yang telah diurutkan dapat digunakan secara lebih efektif, misalnya untuk penyajian data atau untuk pengambilan keputusan.
Ascending
Dari Kecil ke Besar
Dari Ringan ke Berat
Dari Rendah ke Tinggi
Dari Dekat ke Jauh
dll
Descending
Dari Besar ke Kecil
Dari Berat ke Ringan
Dari Jauh ke Dekat
dll
Sorting dapat dilakukan dengan berbagai cara, yaitu:
Bubble sort adalah algoritma sorting yang sederhana dan mudah untuk diimplementasikan. Algoritma ini bekerja dengan cara membandingkan elemen-elemen data secara berpasangan dan menukar elemen-elemen tersebut jika elemen yang pertama lebih besar dari elemen yang kedua
Cara Kerja:
Membandingkan data yang berdekatan lalu menukarnya sesuai urutan
Proses membandingkan angka akan terus dilakukan dengan pertukaran hingga urutuannya benar.
Insertion sort adalah algoritma sorting yang bekerja dengan cara memasukkan (menyisipkan) elemen baru ke dalam urutan data yang sudah ada. Algoritma ini bekerja dengan cara membandingkan elemen baru dengan elemen-elemen data yang sudah ada dan menempatkan elemen baru di posisi yang tepat.
Cara Kerja
Membandingkan elemen data yang berdekatan lalu menukarnya sesuai dengan urutan. Angka yang lebih kecil boleh disisipkan diantara angak lain sesuai urutan yang benar
Bedanya dengan Bubble sort adalah dalam insertion Sort angka yang dibandingkan boleh dipindahkan (meloncat) melewati beberapa angka lain. Seperti dalam ilustrasi baris ke 6, angka 1 disisipkan (berpindah) jauh ke kiri disamping angka 2.
begitu juga pada ilustrasi baris 7, angka 5 disisipkan antara angka 4 dan 10
Quick sort adalah algoritma sorting yang bekerja dengan cara memilih elemen pivot, kemudian mempartisi (membagi) data menjadi dua bagian, satu bagian berisi elemen yang lebih kecil dari pivot dan bagian lainnya berisi elemen yang lebih besar dari pivot. Algoritma ini bekerja dengan cara mengulangi proses pemilihan pivot, pempartisi data, dan pengurutan data pada bagian yang lebih kecil.
Cara Kerja
Membagi daftar (list) menjadi dua bagian menggunakan Pivot
Merge sort adalah algoritma sorting yang bekerja dengan cara membagi data menjadi dua bagian yang lebih kecil, kemudian mengurutkan kedua bagian tersebut secara terpisah, dan menggabungkan kedua bagian yang sudah diurutkan tersebut menjadi satu data yang terurut.
Cara Kerja
Bagi data menjadi beberapa bagian kecil
Bandingkan tiap angka dalam elemen untuk diurutkan
Bandingkan tiap angka-angka dalam elemen dengan elemen lainnya untuk diurutkan
Selection sort adalah algoritma sorting yang bekerja dengan cara memilih elemen terkecil atau terbesar dari data dan menempatkan elemen tersebut di posisi yang tepat. Algoritma ini bekerja dengan cara mengulangi proses pemilihan elemen terkecil atau terbesar dan penempatan elemen tersebut di posisi yang tepat.
Cara Kerja
1.Cari bilangan terkecil atau terbesar
2.Letakkan ke daftar baru yang terurut
Kita akan mempelajari dua buah konsep cara penyimpanan data/ objek dalam sebuah struktur yang akan menentukan urutan pemrosesan data/objek tersebut, yaitu tumpukan (stack) dan antrean (queue). Kedua konsep ini memiliki prosedur yang berbeda dalam menyimpan dan mengeluarkan data. Kedua konsep tersebut masing-masing memiliki peranan yang berbeda dan digunakan pada situasi yang berbeda pula
Apa itu stack?
Stack adalah struktur data linier yang mengikuti aturan tertentu untuk melakukan operasi. Data yang memiliki struktur stack, tersusun seperti tumpukan, sehingga hanya elemen yang baru dimasukkan yang dapat diakses atau dilihat. Ujung tumpukan yang digunakan untuk melakukan semua operasi disebut bagian atas tumpukan. Stack mengikuti prinsip LIFO (Last In First Out), yang berarti elemen yang dimasukkan terakhir akan menjadi elemen pertama yang keluar dari urutan data.
Apa itu queue?
Queue adalah struktur data linier di mana kita dapat menyisipkan dan menghapus elemen dari daftar data. Akhir daftar dari mana elemen disisipkan disebut ujung belakang dan ujung di mana elemen dihapus adalah ujung depan. Struktur data yang menggunakan queue mengikuti prinsip FIFO (First In First Out), yang berarti elemen yang dimasukkan pertama kali dari ujung belakang akan menjadi elemen pertama yang dihapus dari ujung depan. Selain itu, terdapat dua istilah lain dalam queue, yakni operasi enqueue dan operasi dequeue. Operasi enqueue adalah teknik penyisipan pada struktur data queue, sedangkan operasi dequeue adalah teknik penghapusan pada struktur data queue.
Perbedaan stack dan queue
Terdapat beberapa perbedaan antara stack dan queue. Berikut beberapa perbedaannya.
Stack
Didasarkan pada prinsip LIFO (Last In First Out)
Terdapat operasi penyisipan (operasi push) dan operasi penghapusan (operasi pop)
Operasi push dan pop berlangsung dari salah satu ujung tumpukan data Elemen paling atas adalah elemen yang paling mudah diakses, sementara elemen yang berada pada tumpukan paling bawah adalah elemen yang tidak dapat diakses
Penerapannya sederhana
Queue
Didasarkan pada prinsip FIFO (First In First Out)
Terdapat teknik penyisipan (operasi enqueue) dan teknik penghapusan (operasi dequeue)
Operasi enqueue dan dequeue berlangsung dari ujung antrian yang berbeda Ujung penyisipan disebut dengan ujung belakang, sementara ujung penghapusan disebut ujung depan
Penerapannya lebih kompleks dibanding dengan struktur data stack
Contoh penerapan
Meskipun stack dan queue identik digunakan pada aplikasi pemrograman, contoh penerapannya tidak hanya pada aplikasi pemrograman saja. Terdapat beberapa contoh penerapannya dalam kehidupan sehari-hari juga.
Stack
Dalam kehidupan sehari-hari struktur stack bisa ditemui ketika terdapat setumpuk koran yang tergeletak di lantai. Koran yang paling terakhir ditambahkan atau ditaruh di atas adalah koran yang paling mudah dilihat. Sementara koran yang pertama kali diletakkan atau berada pada tumpukan paling bawah adalah koran yang paling sulit dilihat.
Adapun dalam aplikasi pemrograman, stack digunakan untuk evaluasi ekspresi, pencocokan tanda kurung saat bekerja dengan ekspresi, digunakan dalam konversi ekspresi seperti infiks ke postfix atau awalan ke postfix. Biasanya, stack digunakan di mesin virtual java dan dalam manajemen memori untuk metode pemecahan masalah backtracking, penguraian string atau pembalikan string, dan mencocokkan tag HTML dalam pengembangan web.
Queue
Sementara contoh penerapan struktur data queue dalam kehidupan sehari-hari bisa ditemui ketika seseorang mengantri untuk membeli tiket melalui loket pembayaran tiket yang disediakan, itu disebut sebagai enqueue. Adapun contoh dari dequeue adalah setelah membeli tiket, penumpang langsung menuju tempat tunggu kereta api setelah melakukan boarding atau cek tiket.
Dalam aplikasi pemrograman queue digunakan sebagai daftar tunggu saat sumber daya akan dibagikan dengan banyak sistem seperti penjadwalan CPU atau penjadwalan disk. Selain itu, queue juga digunakan dalam sistem operasi untuk penjadwalan FCFS, semaphore, buffer, untuk perangkat dan spooling printer. Queue biasanya digunakan di router dan switch saat data ditransfer secara tidak sinkron untuk memelihara daftar putar di pemutar media
Ilustrasi Stack
Simulasi Queue