Pemecahan masalah (en: problem solving), yang merupakan istilah umum, dapat membingungkan, terlebih dengan tersedianya berbagai alat bantu, bahkan sampai orang-orang dalam perusahaan yang sama menggunakan pendekatan dan terminologi yang berbeda, sehingga hal ini membuat pemecahan masalah menjadi problematik [1]. Terdapat panduan 14 langkah kritis pertama untuk menyelesaikan suatu masalah [2], 8 langkah untuk menyelesaikan masalah [3], 5 langkah untuk membuat proses pemecahan masalah lebih mudah [4], 4 langkah dasar proses memecahkan masalah yang dilengkapi dengan metodologinya [5], 3 langkah dasar pemecahan masalah [1]. Untuk pemecahan masalah komputasi terdapat lima langkah yang sudah lebih spesifik dengan melibatkan model matematika dan penggunaan komputer [6]. Walaupun komputer dapat digunakan untuk membantu memecahkan masalah, akan sebelum suatu masalah tersebut ditangani, ia perlu terlebih dahulu dimengerti, yang hal ini dapat dibantu dengan berpikir komputasi (en: computational thinking), yang mengijinkan kita untuk mengambil suatu masalah rumit, memahaminya, dan mengembangkan solusi yang mungkin, dengan solusi dapat dinyatakan dalam bentuk yang dimengerti komputer, manusia atau keduanya [7]. Salah satu versi langkah-langkah berpikir komputasi terdiri dari tiga langkah, yang meliputi spesifikasi masalah (abstraksi, dekomposisi, pengenalan pola), ekspresi algoritma (perancangan algoritma), dan implementasi solusi & evaluasi (generalisasi) [8].
computational thinking principles
Walaupun berpikir komputasi bukanlah suatu metodologi formal untuk bernalar, akan tetapi mencakup beberapa prinsip dasar yang bermanfaat dalam banyak bidang disiplin ilmu, seperti [8]
Dekomposisi
Gagasan untuk membagi suatu masalah kompleks menjadi bagian-bagian yang dapat ditangani.
Pengenalan pola
Gagasan untuk menemukan kesamaan atau tren atau keteraturan dalam suatu masalah.
Abstraksi
Gagasan untuk mengabaikan detil-detil yang tidak penting dan mengutamakan informasi tetang sistem yang sedang dikaji.
Generalisasi
Gagasan untuk mengidentifikasi sifat karakteristik yang umum terdapat pada berbagai model yang terlihat berbeda sehingga dapat mengadaptasi solusi dari satu bagian ke bagian lain yang terkesan tidak terkait.
Tiga gagasan pertama di atas ditambah dengan algoritma merupakan strategi untuk memasukkan berpikir komputasi di kelas-kelas pembelajaran dini [9]. Terdapat pula yang menggabungkan gagasan abstraksi dengan generalisasi [10]. Dalam pengajaran berpikir komputasi terdapat tiga tahap perkembangannya yaitu baru awal berkembang, telah berkembang sebagian, dan berkembang penuh yang disesuaikan dengan cara melakukan pengamatannya [11].
problem solving steps
Dari berbagai sumber [1, 2, 3, 4, 5, 6] dapat diperoleh bahwa langkah pertama adalah memahami masalah (identifikasi, spesifikasi, definisi) dan satu atau dua langkah terakhir adalah menerapkan solusi dan melakukan evaluasi. Dengan demikian yang berbeda adalah detil antara langkah pertama dan langkah-langkah terakhir.
Bila dipilih khusus untuk memecahkan masalah komputasi [6], langkah-langkahnya, setelah sedikit digabungkan dengan pendekatan lain dan juga istilahnya, adalah sebagai berikut
Identikasi
Definisikan masalah yang dihadapi, lalu identifikasi faktor-faktor penyebabnya, dan bila perlu lakukan dekomposisi untuk mendapatkan bagian masalah yang perlu diselesaikan.
Ekspresi
Nyatakan masalah dalam ekspresi yang telah terdapat alat untuk menyelesaikannya, di mana untuk sains nyatakan dalam bentuk model matematika.
Konstruksi
Bangun metode penyelesaian, yang dalam hal ini adalah suatu metode komputasi untuk menyelesaikan model yang telah merepresentasikan masalah.
Implementasi
Terapkan metode komputasi untuk menyelesaikan model, yang dalam hal ini dapat masih berupa algoritma, ataupun telah sampai menggunakan suatu bahasa pemrograman atau aplikasi komputer tertentu.
Evaluasi
Nilai hasil yang diperoleh, dan bila terdapat perbedaan yang besar antara solusi yang diperoleh dan solusi sebenarnya (bila ada) atau dapat diperkirakan hasi yang benar, nilai ulang masalah dan coba proses kembali.
Boleh saja, terutama dikarenaka kurangnya pengalaman, setelah langkah kelima diperoleh bawah masalah masih terlalu besar untuk ditangani, sehingga perlu kembali ke langkah pertama.
an example
Suatu contoh, yang tentunya agak mengada-ada, diberikan pada gambar di bawah ini sebagai ilustrasi dalam menggunakan langkah-langkah pemecahan masalah.
Gambar 1. Meriam $\rm C$ menembakan bola air $\rm W$ melewati puncak bukit $\rm H$ untuk memadamkan api $\rm H$.
Perlu ditentukan kecepatan bola air $v$ dan sudut elevasi meriam $\theta$ agar bola air $\rm W$ dapat melewati puncak bukit $H$ dan sampai ke lokasi kebakaran sehingga dapat memadamkan api $\rm F$.
Tabel 1. Ilustrasi langkah-langkah pemecahan masalah untuk memadamkan api dengan meriam bola air.
Langkah
Hasil
Catatan
Identifikasi
Bola air sampai ke lokasi
$v$, $\theta$
Ekspresi
Gerak parabola
$y(x) > y_{\rm H}(x)$
Konstruksi
Akar persamaan
$y(x) - y_{\rm F}(x)$
Implementasi
algoritma, code
spreadsheet, program
Evaluasi
$\rm W \rightarrow F?$
Sudah tepat, ubah $v$, $\theta$
Terdapat tiga fungsi yang perlu disediakan, yaitu lintasan parabola dari bola air $y(x)$, tinggi bukit untuk setiap koordinat mendatar $y _{\rm H}(x)$, dan lokas api sebagai fungsi posisi mendatar $y _{\rm F}(x)$. Rentang kesalahan juga perlu didefinisikan karena lokasi api bukan merupakan suatu titik tetapi lebih merupakan daerah.
exer
Apa yang dimaksud dengan akar? Kaitkan hal ini dengan contoh pada Gambar 1.
Sebutkan setidaknya satu metode pencarian akar yang paling sederhana.
Untuk sistem pada Gambar 1 apakah diperlukan konsep dinamika bila tidak ada angin? Ataukah cukup konsep kinematika?
Bila terdapat angin, apakah masih hanya persoalan pencarian akar atau perlu metode numerik yang lain?
Bila terdapat beberapa hal yang perlu dipecahkan, apa prinsip berpikir komputasi yang digunakan?
Glenn J. Fox, “Computational Problem Solving”, CCS110 Introduction to Computational Science, Department of Mathematics and Computer Science, Emory University, Atlanta, 20 Sep 2001, url http://www.mathcs.emory.edu/~fox/NewCCS/CompPS.html [20220117].
Dwi Fitriani Rosali, Didi Suryadi, “An Analysis of Students’ Computational Thinking Skills on the Number Patterns Lesson during the Covid-19 Pandemic”, Formatif: Jurnal Ilmiah Pendidikan MIPA [Formatif J Ilmiah Pendidik MIPA], vol 11, no 2, p 217-232, Sep 2021, url http://dx.doi.org/10.30998/formatif.v11i2.9905
Arinchaya Threekunprapa, Pratchayapong Yasri, “Patterns of Computational Thinking Development while Solving
Unplugged Coding Activities Coupled with the 3S Approach for SelfDirected Learning”, European Journal of Educational Research [Eur J Educ Res], vol 9, no 3, p 1025-1045, Jul 2020, url https://doi.org/10.12973/eu-jer.9.3.1025.
1) akar adalah pembuat nol suatu fungsi, lintasan bola air dengan tinggi bukit tidak boleh menghasilkan akar, sedang lintasan bola air dengan api harus menghasilkan akar;
2) Newton-Raphson, secant, bisection;
3) tanpa angin, cukup kinematika;
4) perlu integrasi numerik untuk mendapatkan posisinya, misalnya metode Euler;
5) dekomposisi, sehingga masing-masing hanya memecahkan masalah kecil;