Dalam kerangka pikir computational thinking (CT), terdapat empat hal yang menjadi bagian integral dari CT: dekomposisi, pengenalan pola, abstraksi, dan algoritma. CT sendiri adalah sebuah pendekatan pemecahan masalah yang melibatkan —ataupun terinspirasi oleh— kapasitas komputer. Gampangannya CT itu "solving problems with the computers in mind".
Aspek yang membuat CT unik adalah bahwa solusi dari masalah yang sifatnya komputasional itu dapat diekspresikan dalam sebuah algoritma. Tanpa algoritma, dekomposisi, pengenalan pola, dan abstraksi adalah kerangka umum yang menggambarkan bagaimana seseorang berproses atau belajar. Tanpa algoritma, yang ada adalah kerangka berpikir pemecahan masalah secara umum, general problem solving principles.
Dekomposisi adalah proses dimana seseorang memecah permasalahan besar menjadi permasalahan yang lebih kecil, lebih mendasar. Istilahnya "breaking down the problem". Apa bedanya dengan dekonstruksi? Secara Bahasa mungkin berbeda karena dekonstruksi itu pada dasarnya "memecah struktur", sedangkan dekomposisi itu "memilah komponen". Namun secara konseptual dalam konteks belajar, kita bisa menggunakan kedua istilah tersebut interchangeably.
Contoh dekonstruksi-dekomposisi yang paling kentara adalah ketika kita melihat seorang anak berumur dua tahun (Nafiisa, tentu saja) membuat berantakan mainan-mainan yang sudah ditata atau dirapihkan oleh kakaknya atau ibunya. Bagi orang dewasa, mainan yang berantakan itu sesuatu yang mengesalkan. Orang dewasa tidak suka melihat mainan yang berantakan, tidak rapih dalam standar norma orang dewasa. Namun pernahkah kita berpikir bahwa anak yang membuat mainan itu berantakan sedang berproses untuk memahami lingkungan sekitarnya? Sebagai orang dewasa, tentu saja merapihkan mainan yang berantakan itu keniscayaan, karena kita tahu kalau mainannya berantakan, ada potensi mainan yang terinjak dan rusak. Berantakan itu hazardous condition. Anak umur dua tahun belum paham itu. Dalam kacamata anak umur dua tahun, dia ingin bisa melihat mainannya per bagian, satu per satu. Deconstructed. Decomposed.
Proses lanjutan dari dekomposisi adalah pengenalan pola. Pada dasarnya, pengenalan pola adalah mencari perbedaan dan kesamaan antar komponen, adakah komponen yang berulang, adakah ciri yang selalu muncul dalam setiap komponen, bisakah komponen-komponen itu dikelompokkan, berapa banyak kelompok komponen yang dapat kita buat. Pengenalan pola ini merupakan proses dasar belajar. Kita menerapkan proses ini dalam melatih komputer untuk mengenali sesuatu, machine learning.
Bagi kita, mungkin mudah saja mengenali bentuk tertentu sebagai "kucing". Meskipun "kucing" itu beragam mulai dari kucing kampung, kucing persia, sampai doraemon, kita dapat dengan mudah mengidentifikasi sesuatu itu kucing. Komputer yang belum dilatih untuk mengenali "kucing" tidak akan dapat mengenali beragam variasi kucing. Manusia sebenarnya juga melalui tahapan "machine learning" ini seperti ketika kita masih berumur dua tahun (lagi lagi Nafiisa). Kucing kami di rumah bernama Lala. Lala adalah seekor kucing persia. Setiap kali Nafiisa keluar dan melihat kucing, dia akan berseru "Yaya!" Karena somehow dia bisa mengenali makhluk hidup berkaki empat yang punya kuping seperti itu dan bentuk muka seperti itu, regardless perbedaan warna dan bulunya, sebagai kucing. Dan sependek pengetahuan dia, kucing itu dipanggil Lala. Itu pengenalan pola, pattern recognition.
Memahami hubungan antar komponen membangun struktur pemahaman kita terhadap sebuah masalah. Ketika pola-pola komponen masalah terpetakan, Kita meng-highlight hal-hal yang penting dan mengesampingkan hal-hal yang kurang penting. Kita berusaha membuat analogi, permodelan. Kita mencari apakah ada korelasi antar hal yang satu dengan hal yang lain. Itu semua adalah proses abstraksi yang salah satu outcome-nya adalah modelling.
Salah satu contoh abstraksi adalah stick figure. Untuk orang kebanyakan seperti saya yang kurang berbakat menggambar, menggambar sesosok manusia tentu saja merupakan sebuah tantangan yang besar. Solusinya adalah dengan menyederhanakan sosok manusia yang kita gambar. Kita hanya menggambar bagian yang penting saja yang cukup untuk mewakili sosok manusia. Sebuah lingkaran untuk menggambarkan kepala. Sebuah garis untuk menggambarkan badannya, dan beberapa garis lain untuk menggambarkan kedua tangan dan kakinya. Ketika kita membuat stick figure untuk menggambar sosok manusia, kita tidak menyertakan mata, jari, ataupun detail yang lain. Namun, kita sama sama paham kalau gambar itu merepresentasikan sesosok manusia. Bahkan bias budaya membawa persepsi kita bahwa stick figure itu seorang laki-laki. Sehingga, —rather than stick figure— banyak orang yang menyebut gambar tadi stick man.
Contoh lain dari abstraksi adalah principles atau ide dasar mengenai bagaimana sesuatu bekerja atau berhubungan dengan sesuatu yang lain. Nafiisa (lagi-lagi dia), dalam umurnya yang dua tahun, seperti halnya anak umur dua tahun lainnya, sudah mampu mengkonstruksi prinsip sederhana seperti: "mesin galon yang dipencet akan mengeluarkan air, dan airnya harus ditampung di gelas supaya tidak tumpah". Kenapa harus tidak tumpah? Karena kalau tumpah, lantainya basah. Kalau lantainya basah jadi licin. Kalau licin jadi kepleset. Nafiisa menarik rumusan itu dari pengalaman dia kepleset berkali-kali. Pengalamannya kepleset menjadi data "machine learning" baginya melalui dekomposisi setiap kejadian dan mengenali pola kausalitasnya untuk bisa membuat simpulan tentang "bagaimana mengambil minum dari mesin galon" seharusnya. Prinsip itu transferrable regardless jenis mesin galonnya. Kalau dipikir-pikir, prinsip kerja mengambil air dari galon itu sederhana bagi kita, tapi seorang anak kecil harus mempelajarinya melalui proses decomposition, pattern recognition, dan abstraction.
Lalu pelajaran moral-nya apa? Mungkin lain kali kalau ada anak kecil yang membuat rumah berantakan, kita bisa memandangnya sebagai proses belajar anak. Berantakan itu bukan hanya berarti tidak rapi. It wasn't necessarily untidy. Berantakan juga bisa berarti terdekonstruksi. It was deconstructed. Dan tentu saja, daripada melihat anak kita sebagai problem maker alias tukang bikin masalah, mungkin kita bisa memandangnya sebagai penyelesai masalah kelak, future problem solver.