Introduction to Computational Thinking
Sebelumnya pernahkah Anda mendengar bahwa komputer “berpikir”? Namun kalau coba kita logikakan komputer sebenarnya tidak berpikir. Sebaliknya, sebenarnya komputer melakukan persis seperti yang kita (manusia) perintahkan pada komputer (memikirkan awal) dengan menggunakan jembatan yang disebut bahasa Pemrograman.
Bila kita sejenak mengingat apa istilah bahasa pemograman, pemograman ibaratkan kita “memberi tahu komputer apa yang harus dilakukan dan bagaimana melakukannya yang tentunya kita memikirkannya lebih awal.” nah !! berangkat dari pengertian ini tentu kita dapat memikirkan bagaimana “memprogram komputer”, Kita perlu mengetahui dengan tepat apa yang ingin kita perintahkan kepada komputer untuk melakukan sebuah action/aksi yang akan dilakukan untuk menyelesaikan masalah tertentu. Memikirkan masalah dengan cara inilah yang disebut sebgai Computatational Thingking.
Mungkin untuk istilah lain yang lebih formal kita dapat membacanya disini. Pada artikel ini saya hanya mencoba menjelaskan tahapan dari Computational thinking yang bisa dikatakan umum, hal ini meliputi :
1. Problem Identification.
2. Decompotition.
3. Pattern Recognition.
4. Abstraction.
Identifikasi masalah, penguraian masalah, pengenalan pola, dan abstraksi. hal tersebut adalah tahapan konseptual dalam computational thinking, Saya akan coba menjelaskannnya secara singkat pada setiap urutannya :
1. Problem identification
Sudahkah kita mengidentifikasi masalah yang bisa diselesaikan dengan komputer? Karena terkadang seklompek komputerpun, beberapa masalah belum tentu bisa diselesaikan dengan komputer.
- Jadi pada tahapan ini kita memikirkan tentang bagaimana kita tahu jika suatu masalah adalah kandidat yang tepat menggunakan komputer untuk menghasilkan solusi.
- Bagaimana kita dapat menggabungkan berbagai jenis data untuk memecahkan jenis masalah. Jadi misalnya, mungkin sulit komputer untuk membantu kita memecahkan masalah yang lebih subjektif. Katakan padaku apa film terlucu yang bisa aku tonton pada Jumat malam, atau lukisan tercantik yang bisa saya gantung di dinding kamar baru saya. Ini sangat subjektif, dan komputer tidak selalu subjektif dengan baik. Namun Sekarang ada teknik di bidang seperti Artificial Intelegence yang mungkin memperluas jenis masalah yang dapat dibantu oleh komputer.
- Memikirkan informasi atau data seperti apa apakah yang dapat membantu atau berkontribusi pada pendekatan pemecahan masalah atau data yang mungkin perlu dikumpulkan untuk membantu.
Dan akhirnya ada kemungkinan, dapatkah kita menyelesaikan masalah berdasarkan apa yang kita ketahui? Apakah itu dapat diselesaikan dengan komputer, dan apakah kita memiliki semua sumber daya dan informasi yang kita butuhkan untuk memecahkan masalah?
2. Decompotition
Setelah mengidentifikasi masalah yang menurut kita dapat di selesaikan menggunakan komputer, pada tahapan decompotition kita akan memikirkan apakah kita perlu atau tidak untuk menguraikan masalah itu menjadi bagian-bagian kecil yang lebih mudah dipecahkan.
biasanya akan muncul pernyataan terkait masalah yang telah di tulis. Jadi dapatkah kita memecah masalah besar menjadi sub-masalah yang lebih kecil ini?
Jika pernyataan masalah kita terlalu besar, mungkin sulit untuk melihat caranya kita untuk mengembangkan solusi konseptual. Dan itulah mengapa kita memikirkan tentang dekomposisi karena jika masalah besar turun menjadi sub-masalah yang lebih kecil dan lebih kecil, kita dapat memikirkan untuk memecahkan sub-masalah spesifik tersebut. Dan kemudian memiliki solusi yang berbeda dan berkontribusi untuk memecahkan masalah besar. Memecahkan bagian yang lebih kecil dapat membantu kita menemukan solusi.
Dan saat kita melakukan ini, ada berbagai cara yang bisa kita lakukan. Kita bisa menggunakan flowchart, kita bisa menggunakan struktur pohon, atau beberapa pengatur grafis lain seperti gambar dibawah ini :
Misalnya, kita bisa memiliki struktur pohon, di mana kita memulai dengan masalah utama yang ingin kita selesaikan. Dan kemudian kita ingin melihat apakah kita dapat memecah masalah itu menjadi beberapa sub-masalah. Dan kemudian kita dapat melihat sub-masalah.
apakah itu masih terlalu besar?
Mungkin kita bisa memecahnya lagi menjadi beberapa sub-masalah yang lebih kecil untuk membantu mengatasinya. Dan bila memungkinkan kita juga bisa terus memecah masalah menjadi potongan-potongan kecil sampai memiliki satu set potongan yang lebih mudah dipecahkan dan juga berkontribusi pada solusi utama.
3. Pattern Recognition
Selanjutnya, kita bisa memikirkan tentang pengenalan pola. Dan di sini yang kita lakukan adalah memikirkan apakah kita melihat beberapa pola yang sudah dikenal atau kita melihat beberapa karakteristik umum dalam masalah kita yang dapat mengarahkan kita ke solusi potensial. Meliputi :
- Menemukan persamaan, menemukan beberapa masalah yang mirip dengan yang kita telah diselesaikan di masa lalu, atau mungkin menemukan beberapa pola yang kita kenal dapat membantu memecahkan masalah penguraian yang lebih kecil dengan lebih efisien.
Jadi di sini yang ingin Anda pikirkan adalah, Pernahkah Anda melihat solusi untuk masalah serupa yang dapat Anda gunakan di sini? Atau dapatkah Anda memikirkan masalah serupa yang telah diselesaikan sebelumnya yang dapat membantu Anda mengatasi masalah ini?
hingga akhirnya mendapatkan jawaban dari memikirkan bagaimana masalah ini sama atau berbeda dari masalah lain yang telah atau pernah di identifikasi/atasi di masa lalu? Dan dapatkah menggunakan kesamaan itu untuk membantu menemukan solusi?
4. Abstraction
Kami juga kemudian memiliki abstraksi dan dengan abstraksi, kita memikirkannya dengan cara. Mencoba mengidentifikasi aspek non-esensial dari masalah yang mungkin dapat kita abaikan karena mengganggu atau berfungsi sebagai jalan memutar dari solusi ke masalah utama. Jadi terkadang kita harus menyaring atau mengabaikan bagian dari masalah, atau beberapa pola yang mungkin telah di identifikasi. Sehingga kita bisa berkonsentrasi pada aspek-aspek penting dari masalah untuk menyelesaikannya.
Dan di sini juga berpikir tentang menanyakan apakah ada bagian dari masalah yang kita selesaikan sebenarnya kurang relevan dengan hasil yang sukses. Apakah ada elemen asing dari masalah yang mengganggu dan tidak sepenting yang kita duga di awal?
Kapan kita dapat mengidentifikasi contoh dari aspek asing yang tidak perlu ini atau jika kita memiliki terlalu banyak komponen masalah yang ingin kita selesaikan, itu akan mengarah pada situasi di mana kita sebenarnya hanya mencoba melakukan terlalu banyak. Dan ini dapat mengganggu pencapaian solusi masalah yang efektif.