# Hesaplamalı düşünme
Hesaplamalı düşünme, karmaşık problemleri ve problemlerin çözümlerini algoritmik ve sistematik olarak ifade ederek problem çözme sürecinin sağlıklı şekilde tamamlanmasını sağlayan bir yöntemdir.
21.yüzyıl yetkinliklerinin önde gelenlerinden biri olarak kabul edilir. Yalnızca bilgisayar ortamında karşılaşılaşan sorunlarda değil, günlük yaşantıda karşılaşılan her türlü problemi çözerken kullanılabilir. ABD'li bilgisayar bilimci Jeannette Wing'in, hesaplamalı düşünmenin temel bir beceri olarak her öğrenciye öğretilmesi gerektiği konusundaki iddiasını 2006 yılında öne sürmesinden sonra birçok ülkede ilk ve orta öğretim programlarına hesaplamalı düşünme öğretimi yerleştirilmiştir.
Hesaplamalı düşünme genel hatlarıyla şu şekilde gerçekleşir: problem parçalara ayrıştırılır, ayrıştırılan parçalar daha önce karşılaşılan problemlere benzer şekilde çözülebilsin diye karşı karşıya getirilir, ortaya çıkan problemle ilgili olmayan bilgilerin işin içerisinden çıkarıldıktan sonra sorunu çözmek için adımlar oluşturulur ve ortaya çıkan çözüm yolu en verimli şekilde kullanılır. Her karmaşık problem aynı yolla çözülemeyeceğinden hesaplamalı düşünme uygulanırken izlenecek yol probleme göre değişikliğe uğrayabilir.


## Öğretim programlarında uygulanması.
Hesaplamalı düşünme, birçok ülkede öğretim programlarına entegre edilerek okullarda öğrencilere öğretilen bir yöntemdir. Türkiye’de "Bilgi ve İletişim Teknolojileri ve Yazılım " dersinin kazanımlarına entegre edilerek ilk defa 2012 yılından itibaren ortaokul programların girmiştir; ancak öğretim programında hesaplamalı düşünmenin ayrı bir öğrenme alanı olarak yer alması 2017 yılından olmuştur.
ISTE (International Society for Technology in Education- Uluslararası Eğitim Teknolojileri Topluluğu) ve CSTA (Computer Science Teachers Association Bilgisayar Bilimi Öğretmenleri Derneği) gibi kuruluşlar, farklı ülkelerde hesaplamalı düşünmenin ilköğretim programına dahil edilmesi sürecine katkı sağlamak için oluşturulan kılavuzlar geliştirmiştir. ISTE ve CSTA'nın gerçekleştirdiği ortak bir çalışmada hesaplamalı düşünme şu özellikleri içeren bir düşünme yöntemi olarak tanımlanmıştır:
 - Problemleri bilgisayar veya başka araçlar yardımı ile çözülebilecek şekilde formülleştirme,
 - Verileri mantıklı bir şekilde düzenleme ve analiz etme,
 - Verileri model ve simülasyon gibi soyutlamalarla sunma,
 - Algoritmik düşünme yoluyla çözümleri otomatikleştirme,
 - Adımların ve kaynakların en etkin ve etkili şekilde bileşimini elde etmek amacıyla olası çözümleri tanımlama, analiz etme ve uygulama,
 - Bulunan çözüm sürecini farklı problemlere transfer etme ve genelleştirme (ISTE & CSTA, 2011).
ISTE ve CSTA'nın çalışmasına göre bu beceriler öğrencilerde, hesaplamalı düşünme için temel olan bazı davranış ve tutumların desteklenmesi ile geliştirilebilir. Bu tutum ve davranışlar şunları içerir; karmaşıklıkla başa çıkmada güven, zor problemlerle çalışma konusunda azim, belirsizliğe tolerans, açık uçlu problemlerle başa çıkma yeteneği, ortak bir hedefe veya çözüme ulaşmak için başkalarıyla iletişim kurma ve çalışma yeteneği Bahsedilen davranış ve tutumları eğer öğrenciler öğrenim sürecinde etkili bir biçimde kullanırsa hesaplamalı düşünme basamaklarını doğru biçimde kullanmada ve bir probleme çözüm bulmada oldukça gelişeceklerdir.
Öğretim programlarında hesaplamalı düşünme öğretimine geçilmesi sürecinde yaşanan bazı güçlükler tespit edilmiştir. Öğretmenlerin öğretmenlerin bilgisayar bilimleri ile ilgili içerik ve pedagojik içerik bilgilerin yetersiz oluşu ve bu nedenle öğretmenler ve öğretmen adaylarının hesaplamalı düşünme öğretimi konusunda kendilerini yeterli görmemesi bu güçlükler arasında başta gelir. Bu nedenle öğretmenin kendi öz yeterliliğini geliştirmesi, hesaplamalı düşünmenin öğretiminin etkili bir biçimde gerçekleştirilmesiyle doğrudan ilişkilidir.


## Hesaplamalı düşünme bileşenleri.
Hesaplamalı düşünme Ayrıştırma, Örüntü Tanıma, Soyutlama ve Algoritma tasarımı olmak üzere dört bileşene sahiptir.


### Ayrıştırma.
Karşımıza çıkan karmaşık bir problemi parçalarına ayırarak daha yönetilebilir hale getirilen aşamadır. Kompleks problemler, büyük sorunlar ile karşılaşıldığında ayrıştırma yapmak vazgeçilmez olmalıdır. Parçadan bütüne gitme mantığı ile ayrıştırılan parçalar diğer aşamalara göre sıralanır ve çözüme ulaşmak için izlenen yol daha kolay ve kısa bir hâle gelir.


### Örüntü tanıma.
Terim anlamı olarak bir serideki verilerin aralarındaki örüntüyü, kuralı tanımlama olarak ifade edilebilir. Hesaplamalı düşünmede ise problem içerisindeki benzerlikler tanımlanır ve daha önce karşılaşılmış olan veya elde bulunan problemin alt parçalarında belirlenmiş olan bir problem ile benzerliğinin olup olmadığı bu aşamada belirlenir. Eğer bir benzerlik tespit edilirse önceden belirlenen çözüm tekniklerini bu problemde de kullanmak çözüme yaklaşmada işimizi kolaylaştıracak ve bize zaman kazandıracaktır. Bu bileşen karşılaşılan sorunlara etkili çözümler üretebilmek için önemli bir basamaktır.


### Soyutlama.
Soyutlama ile çözümün en temelinde olan ve en ihtiyaç olan bileşenlerine odaklanılır. Ayrıntılara göz ardı ederek amacıyla bizi çözüme ulaştırmayacak her şeyi ayırarak sadece önemli öğelere dikkat çekilir. Bu basamak sayesinde odak noktamız sadece belirlenen sorunun çözüm sürecine çekilir ve problem çözme sürecinin detaylardan ayrılarak sade bir hâle getirerek hızlanmasını sağlar.


### Algoritma tasarımı.
Hesaplamalı düşünmenin son bileşenidir. Bu basamakta belirlenen problemin adım adım nasıl çözüme ulaşacağı belirlenir. Bizi çözüme ulaştıracak olan algoritmayı tasarlarken en kısa yol ile gerçekleşecek olan çözümün belirlenmesine dikkat edilmelidir. Algoritma sadece bilgisayar ortamında kullanılan bir kavram olmamakla beraber hayatımızın her alanında bu bileşene yer verdiğimiz bilinmektedir. Günlük yaşamımızda bir işi gerçekleştirirken sırayla yapmamız gereken adımların bulunduğu her olayda algoritmadan söz edilebilir.
Algoritma tasarımı basamağının içerisinde ele alabileceğimiz başka bir bileşen olarak da hata ayıklamadan bahsedebiliriz. Hata ayıklama tasarladığımız algoritmayı deneyerek belirlediğimiz hataları düzeltme yoluyla algoritmamızı iyileştirmeye yarar sağlar.