IB ESS’te Succession Nedir ve Nasıl Test Edilir?
Yıllar önce yanmış, simsiyah bir ormanı hayal et. Ağaçlar yok olmuş, yer yer kül ve çıplak toprak görünüyor. Sonra yıllar geçiyor; önce minik otlar çıkıyor,
Sınav salonundasın, Paper 1 önünde duruyor, sayfayı çeviriyorsun ve karşına uzun, karmaşık görünen bir tablo sorusu çıkıyor, aslında soru yalnızca bir sıralama algoritmasını anlamanı bekliyor, ama o an bunu fark edip rahatlayan öğrenci sayısı çok az kalıyor.
IB Computer Science içinde algorithm kavramı bu yüzden bu kadar kritik, çünkü hem yazılı sınavlarda hem Internal Assessment (IA) hem de Extended Essay içinde çözümünü bu yapı üstüne kuruyorsun ve zayıf bir algoritma anlayışı çoğu zaman güzel fikirleri gölgede bırakıyor.
Aslında algoritma dediğimiz şey, yemek tarifi gibi, adım adım talimatlardan oluşan bir plan, sadece burada kek yerine veri listesiyle uğraşıyorsun, adımlarını da gerçek kodla değil çoğu zaman pseudocode veya flowchart ile gösteriyorsun.
Bu yazıda, IB seviyesinde bilmen gereken ana algoritma gruplarına odaklanacağız: sorting algoritmaları, searching algoritmaları, recursion mantığı, array ve ArrayList üzerinde çalışan temel kalıplar ile flowchart ve pseudocode kullanarak algoritma tasarlama becerisi.
Yazının sonunda, “Tam olarak hangi algoritmaları iyi bilmeliyim ve hangilerini sınavda mutlaka kullanabilmeliyim?” sorusuna net bir cevap almış olacaksın ve hangi noktaları çalışırken daha çok tekrar etmen gerektiğini daha açık göreceksin.
IB curriculum içinde “Algorithmic Thinking” ifadesini gördüğünde, senden beklenen şey kod ezberlemen değil, problemi küçük, yönetilebilir parçalara bölüp, bunları net adımlar hâlinde anlatabilmen oluyor.
Syllabus 2025 ile birlikte vurgulanan kısım da tam olarak bu, yani bir problemi okuduğunda hangi veri yapısını kullanacağına, hangi sorting veya searching yönteminin mantıklı olduğuna karar verebilmen ve bu çözümü açık, okunabilir bir şekilde yazman bekleniyor.
Bu yüzden, IB Computer Science çalışırken yalnızca Java, Python ya da okulunda hangi dil kullanılıyorsa onun söz dizimine odaklanırsan, sınavda pseudocode sorularında zorlanma ihtimalin oldukça artıyor, çünkü asıl puan, algoritmanın doğru, tutarlı ve açıklanabilir olması üzerinden veriliyor.
Birçok üniversitenin giriş seviyesi derslerinde de benzer bir mantık işleniyor ve örneğin Cornell University içindeki CS 2110 ders notları temel sorting algoritmalarını tam da IB’de göreceğin seviyede, sade ama sistemli bir şekilde anlatıyor, bu tür kaynaklar bakış açını genişletmen için oldukça faydalı olabiliyor.
Kısaca, algorithm, belirli bir problemi çözmek için tasarlanmış, sonlu sayıda adımdan oluşan net bir yol haritası şeklinde tanımlanabilir ve bu adımların her biri anlaşılır ve uygulanabilir olmalıdır.
Pseudocode, gerçek bir programlama dili değil, kodla doğal dil arası bir anlatım tarzıdır, IB sınavlarında senden çoğu zaman gerçek Java kodu değil, mantığı gösteren, dil bağımsız bir pseudocode yazman istenir ve IA raporunda da tasarladığın çözümü aynı şekilde pseudocode ile açıklaman beklenir.
Flowchart ise algoritmanın görsel hâlidir, işlem kutusu ile yapılacak işlemleri, karar kutusu ile “if” gibi dallanmaları, giriş/çıkış kutuları ile kullanıcıdan veri almayı veya çıktı üretmeyi gösterirsin ve IB’de senden hem flowchart okuyabilmen hem de basit bir algoritmayı bu şekillerle çizebilmen beklenir.
Sınavda rahat puan alabilmek için, verilen sözlü problemi, istenirse pseudocode, istenirse flowchart şeklinde anlatabilecek esnekliğe sahip olman gerekir, bu yüzden hem yazılı hem görsel gösterimi çalışmak sana büyük avantaj sağlar.
Paper 1 içinde karşına çıkan kısa algorithmic thinking sorularında genellikle küçük bir array üzerinde sorting, searching veya basit bir sayaç algoritması yazman, daha uzun sorularda ise verilen pseudocode’u takip edip output bulman beklenir.
Paper 2 tarafında ise özellikle object-oriented tasarım sorularında, yazdığın sınıfların içinde hangi algoritmayı kullandığını açıklaman, örneğin bir listeyi nasıl güncellediğini veya nasıl arama yaptığını açık bir mantıkla göstermen gerekir.
IA kısmında, seçtiğin probleme uygun algoritmayı seçmen büyük önem taşır, gereksiz karmaşık bir sorting yöntemi kullanmak ya da hatalı bir searching mantığı kurmak, projen güzel olsa bile puan kaybettirebilir, çünkü değerlendirme kriterlerinde solution design başlığı doğrudan buraya bakar.
Extended Essay yazarken algoritma analizi yapan, farklı sorting yöntemlerini kıyaslayan veya belirli bir veri yapısı ile performans ölçen konular seçen öğrenciler de olur, bu tür konularda doğru algoritma terminolojisi kullanabilmek ve temel mantığı anlatabilmek, yüksek seviye Grade Boundary hedeflerken sana net bir avantaj kazandırır.
Sorting soruları IB’de çok sık gelir, çünkü hem tek başına bir problem olarak hem de başka algoritmaların parçası şeklinde kullanılabilir ve büyük resmi anlaman için en basit hâlleriyle başlayan bu yöntemler, ileride üniversitede göreceğin daha gelişmiş konular için de altyapı oluşturur.
Genelde küçük bir integer array ile başlar, sonra metin tablosu, öğrenci notları listesi, hatta IA projen içinde tuttuğun nesne listeleri bile sorting gerektirebilir, bu yüzden temel dört arkadaşı çok iyi tanıman gerekiyor: Bubble Sort, Selection Sort, Insertion Sort ve Merge Sort.
Daha detaylı görseller ve karşılaştırmalar görmek istersen, Duke University içinde hazırlanan temel sorting algoritmaları dersi bu dört tekniği yan yana anlatan güzel bir ek kaynak olabilir.
Bubble Sort mantığını anlamak için sınıfta boy sırasına dizilen öğrencileri düşünebilirsin, öğretmen, yan yana duran iki öğrencinin boyuna bakar, eğer soldaki daha uzunsa yerlerini değiştirir, sonra bir adım sağa gider ve bunu satırın sonuna kadar tekrar eder.
Bu süreç bittiğinde en uzun öğrenci en sağ uca “yüzer”, sonra öğretmen başa döner, bu kez sondaki artık sabit kabul edilir ve geri kalan öğrenciler üzerinde aynı karşılaştırma turunu yapar, bu tekrarlar yavaş yavaş tüm sırayı düzenler.
Bubble Sort’un en büyük avantajı, algorithm olarak akılda kalmasının ve pseudocode ile yazılmasının çok kolay olmasıdır, fakat her turda yan yana elemanları kontrol ettiği için, eleman sayısı büyüdükçe aşırı yavaş bir hâle gelir ve büyük veri setlerinde pratikte pek tercih edilmez.
Selection Sort için dağınık bir sayı kart destesini düşün, her turda eline kalan kartlara bakıp en küçük olanı seçiyor ve masadaki sıralı dizinin bir sonraki boş yerine koyuyorsun, yani her adımda “seçim” yaparak sıralı bölgeyi büyütüyorsun.
Array bağlamında anlatırsak, algoritma her turda dizinin sıralanmamış kısmındaki en küçük değeri buluyor, bu elemanın indeksini hatırlıyor ve turun sonunda onu baştaki uygun pozisyona tek bir swap ile getiriyor.
Bubble Sort ile kıyaslandığında, her iki algoritmanın da hız açısından benzer derecede yavaş çalıştığını söyleyebiliriz, fakat Selection Sort daha az yer değiştirme yaptığı için bazı durumlarda daha düzenli bir davranış sergiler ve mantığını kağıt üzerinde takip etmek çoğu öğrenciye daha kolay gelir.
Insertion Sort’u, eline iskambil destesi almış ve kartları sayıya göre dizmeye çalışan biri gibi düşünebilirsin, elindeki kartlar zaten büyük oranda sıralı ise, yeni gelen kartı doğru pozisyonu bulana kadar soldaki kartlarla karşılaştırıp uygun yere yerleştirirsin.
Bu algoritma da aynı fikri uygular, array’in başını “sıralı” bölge olarak varsayar ve sonraki her elemanı bu bölge içinde geriye doğru giderken karşılaştırır, kendi yerini bulunca oraya ekler, böylece her adımda sıralı kısım bir eleman büyür.
Küçük listeler için ya da neredeyse sıralanmış verilerde, Insertion Sort şaşırtıcı derecede hızlı çalışabilir, bu yüzden IB sorularında küçük örnekleri elle çözerken mantığı daha az adımda kavramanı sağlar ve Paper 1 içinde trace sorularında karşına sıkça çıkabilir.
Merge Sort, “divide and conquer” dediğimiz, problemi parçalara ayırıp çözme ve sonra sonuçları birleştirme yaklaşımını kullanır, ilk adımda büyük listeyi ortadan ikiye böler, sonra bu yarımları tekrar ikiye böler ve bunu tek eleman kalana kadar sürdürür.
Tek elemanlı listeler zaten kendi içinde sıralı kabul edilir, daha sonra algoritma bu küçük listeleri ikişer ikişer birleştirmeye başlar, her birleştirme adımında iki sıralı listeyi karşılaştırarak yeni, daha büyük bir sıralı liste üretir ve bu süreç en sonunda tüm verinin sıralanmış hâline ulaşır.
Merge Sort, özellikle büyük listelerde Bubble Sort veya Insertion Sort’a göre çok daha az karşılaştırma ve hamle ile çalışır, ayrıca recursion kullanarak yazıldığı için IB’de recursion sorularını anlaman açısından da güzel bir köprü görevi görür.
Searching, günlük hayatta da sürekli yaptığın bir işlem, sınıfta belirli bir kişiyi bulmak, kitaplıkta bir kitabı aramak veya telefon rehberinde bir isme bakmak, hepsi aslında birer arama algoritmasının fiziksel versiyonu gibi düşünebilirsin.
IB Computer Science içinde genellikle array ya da 2D array forma çevrilmiş tablolar üzerinde arama yaparsın ve burada asıl nokta, listenin sorted olup olmamasına göre Linear Search ya da Binary Search seçimini doğru yapabilmektir.
Linear Search, isminden de anlaşılacağı gibi, dizinin başından sonuna kadar çizgi hâlinde ilerleyip her elemanı tek tek kontrol ettiğin bir yöntemdir ve bu mantığı sınıftaki her sıraya bakarak aradığın öğrenciyi bulmaya benzetebilirsin.
Bu algoritmanın en büyük artısı, listenin sorted olmasına gerek duymaması ve mantık olarak çok basit olmasıdır, bu yüzden IB sorularında hem 1D hem 2D array üzerinde Linear Search içeren pseudocode yazman ve bunu trace etmen sıkça beklenir.
Dezavantaj kısmında ise, özellikle uzun listelerde aranan eleman sondaysa veya hiç yoksa, tüm listeyi gezmek zorunda kalırsın, bu da zamanı boşa harcar ve bu nedenle daha akıllı bir yöntem olan Binary Search devreye girer.
Binary Search için klasik benzetme telefon rehberidir, kalın bir rehberde bir ismi ararken sayfaları baştan sona tek tek çevirmezsin, kitabı ortadan açar, baktığın soyad aradığından sonra geliyorsa daha sola, önce geliyorsa daha sağa gidersin ve her adımda aralığı yarıya indirirsin.
Algoritma da aynı mantığı kullanır, önce array’in ortasındaki elemana bakar, bu değer aradığın değerden büyükse “sağ tarafın hepsi fazla büyük” diyerek sağ yarıyı tamamen çöpe atar, küçükse bu kez sol yarıyı bırakır ve kalan yarıda yine ortadan bakarak devam eder.
Binary Search’ün çalışabilmesi için listenin baştan sorted olması şarttır, bu yüzden IB’de genellikle önce “listeyi sort eden algoritma” sonra da “Binary Search ile arama” adımlarını içeren zincir sorular görürsün ve bu algoritmayı adım adım trace edebilmek yüksek puan almanın anahtarı hâline gelir.
Sorting ve searching konularını anladıktan sonra, IB seviyesinde algılaman gereken diğer büyük başlık recursion ve temel data structure algoritmaları oluyor, çünkü gerçek hayattaki çoğu problemi tek bir düz liste ile anlatmak yetmez, farklı veri yapıları ve çağrı biçimleriyle düşünmen gerekir.
Bu bölümde recursion kavramını korkutmayan bir dille oturtup, ardından array, 2D array ve ArrayList üzerinde tekrar eden bazı algorithm kalıplarını göreceğiz, böylece hem Paper sorularında hem de IA tasarımında daha rahat karar verebilirsin.
Recursion, bir fonksiyonun kendi içinden kendisini tekrar çağırmasıdır, kulağa ilk anda dönüp duran bir kısır döngü gibi gelebilir, fakat doğru kurgulanırsa karmaşık sorunları çok şık bir şekilde çözmeyi sağlar.
Klasik örneklerden biri factorial hesabıdır, n! değerini hesaplarken “n! = n * (n-1)!” gibi düşünürsün, burada recursive case, fonksiyonun kendini n-1 ile çağırdığı durumdur, base case ise n = 1 olduğunda artık durup geri dönmesi gerektiğini söylediğin en alt basamaktır.
Benzer şekilde, bilgisayardaki klasör (folder) yapısında dolaşan bir programı düşün, her klasöre girdiğinde içindeki alt klasörleri görmek için aynı fonksiyonu tekrar çağırması gerekir ve bu da tipik bir recursion örneğidir.
Eğer base case tanımlamazsan, fonksiyon sonsuza kadar kendini çağırır ve stack overflow gibi hatalar ortaya çıkar, bu yüzden IB sorularında recursion trace ederken her zaman “Base case’e ne zaman ulaşılıyor, hangi değerle dönüyor?” sorusunu kendine sorman gerekir.
Tek boyutlu array sorularında en çok kullanılan kalıplar aslında çok tanıdık, en büyük veya en küçük değeri bulmak için bir değişkende “şu ana kadarki en iyiyi” tutar, her yeni elemanla karşılaştırıp bu değeri güncellersin.
Toplam ve ortalama hesaplama için yine baştan sona giden bir loop içinde, her elemanı bir sum değişkenine eklersin, loop bittiğinde sum’ı eleman sayısına bölerek average elde eder, bazen de belirli bir koşulu sağlayan elemanları saymak için count değişkenini birer birer artırırsın.
2D array için tablo benzetmesi oldukça iş görür, satırları ve sütunları olan bir tablo düşün, dıştaki loop satırlar arasında gezerken, içteki loop her satırdaki sütunları dolaşır ve böylece her hücreye tek tek erişirsin, IB pseudocode içinde çoğunlukla bu yapı for veya while kullanılarak sözel şekilde ifade edilir.
Bu kalıplar, Paper 1’de trace sorularında, Paper 2’de ise daha büyük yapıların parçası olarak oldukça sık çıkar ve aynı pattern’i farklı bağlamlarda görebilmek, onları ezberlemekten çok daha faydalı olur.
ArrayList, boyutu sabit olmayan, ihtiyaca göre genişleyip daralabilen dinamik bir liste gibi düşünülebilir, masa çekmecen dolduğunda yanına ikinci bir çekmece eklemen ve bütün seti tek bir “çekmece sistemi” gibi kullanman bu fikri güzel anlatır.
Temel metodlar oldukça nettir, add yeni bir eleman ekler, remove belirli bir pozisyondaki veya belirli değere sahip elemanı çıkarır, get verilen indeksteki değeri geri verir, size ise o anki eleman sayısını bildirir.
ArrayList üzerinde search yapmak için çoğunlukla Linear Search desenini kullanırsın, simple sort işlemleri için de Bubble Sort veya Selection Sort mantığını ArrayList indeksleriyle uygulayabilirsin ve bu yaklaşımlar IA projelerinde veri listelerini yönetirken sana esneklik kazandırır.
Birçok üniversite CS1 dersi, bu tip veri yapılarıyla sorting ve searching’i birlikte anlatır ve örneğin MIT OpenCourseWare üzerinde yer alan sorting ders notları bu ilişkiyi görsel örneklerle görmek isteyen öğrenciler için iyi bir referans sunar.
Teoriyi okumuş olmak, algorithm sorularında güven vermek için tek başına yetmez, asıl farkı yaratan şey, elinle çözdüğün, trace ettiğin ve hata aradığın alıştırma sayısıdır, bu yüzden çalışırken planını doğru kurman önemli hâle gelir.
Burada hedefin, her algoritmayı bir kere anlamak ve sonra farklı soru tipleri üzerinde tekrar tekrar denemek olmalı, böylece aynı mantığı tablo sorularında, sözlü senaryolarda veya IA tasarımına taşırken zorlanmazsın.
IB tarzı pseudocode kullanmak için önce kendine küçük sorular üret, örneğin “Bu array içindeki en büyük değeri bulan algorithm yaz” veya “Bu 2D array içinde belirli değeri bulan Linear Search tasarla” gibi mini görevler oluştur.
Sonra bu algoritmaları gerçek kod yazmadan, sadece pseudocode ile anlat ve kağıt üzerinde adım adım trace et, yani her adımda değişkenlerin aldığı değerleri tabloya yazarak ilerle, bu yöntem recursion, sorting ve searching sorularında beynini otomatik pilota almanı kolaylaştırır.
Dry run yaparak, kendi pseudocode’unu eleştirel gözle kontrol etmen, sınavda yapabileceğin klasik hataları erkenden görmeni sağlar ve gerçek kod yerine mantık takibine odaklanman, IB değerlendirme kriterleriyle çok daha iyi örtüşür.
Past paper sorularını çözmek neredeyse zorunlu bir adım gibi düşünebilirsin, çünkü soru stiline alışmak, komut cümlelerini tanımak ve beklenen cevap formatını görmek, sınav günü sürpriz yaşamamanı sağlar.
Bunun yanında, farklı bakış açıları kazanmak için üniversitelerin .edu uzantılı, özellikle CS1 niteliğinde hazırladığı materyallere bakmak da oldukça faydalıdır ve örneğin University of Wisconsin sitesindeki sorting anlatımı görseller ve açıklamalarla konuyu pekiştirmeni sağlayabilir.
Bu tür kaynaklarda bolca animasyon, figür ve egzersiz yer aldığı için, çok ağır teorik analizlere girmek zorunda kalmadan, aynı algoritmayı değişik örnekler üzerinde tekrar tekrar görmüş olursun ve bu da IB düzeyindeki sorularda hız ve güven kazandırır.
Bu yazı boyunca, IB Computer Science için en önemli algorithm gruplarını, yani Bubble Sort, Selection Sort, Insertion Sort, Merge Sort, Linear Search, Binary Search, recursion temeli ile array, 2D array ve ArrayList üzerinde kullanılan yaygın kalıpları birlikte gözden geçirdik.
Hepsini satır satır ezberlemeye çalışmak yerine, aralarındaki mantıksal farkları ve hangi problemi çözmek için hangisinin daha uygun olduğunu anlamaya odaklanırsan, hem sınavda hem IA ve Extended Essay içinde çok daha rahat hareket edersin.
Temiz, okunabilir pseudocode yazmak ve algoritmanın adımlarını sözlü olarak açıklayabilmek, Grade Boundary çizgilerinde yukarıya çıkan notlarda ciddi fark yaratır ve seni “sadece kod yazan” değil, çözüm tasarlayan bir öğrenci hâline getirir.
Düzenli pratik, bol trace ve farklı kaynaklardan birkaç iyi görselle desteklenmiş çalışma sayesinde, IB Computer Science algoritma soruları gözünde büyüyen bir korku değil, rahatça yönetebildiğin, kontrolü sende olan bir alan hâline gelir.
Yıllar önce yanmış, simsiyah bir ormanı hayal et. Ağaçlar yok olmuş, yer yer kül ve çıplak toprak görünüyor. Sonra yıllar geçiyor; önce minik otlar çıkıyor,
Gezegenin her köşesinde habitatlar küçülüyor, türler kayboluyor ve iklim krizi yaşam alanlarını hızla değiştiriyor. Böyle bir ortamda biodiversity conservation artık sadece bilim insanlarının konusu değil,
Sabah okula giderken gri, sisli bir şehrin içinde yürüdüğünü düşün; maske takan insanlar, sürekli öksüren çocuklar, artan astım spreyleri. Bunlar artık uzak haber başlıkları değil,
IB Environmental Systems and Societies içindeysen, ister öğrenci, ister öğretmen, ister veli ol, renewable resources ve non-renewable resources konusu senin için temel taşlardan biri olacak.
IB Environmental Systems and Societies öğrencisiysen, muhtemelen IA taslağına bakıp şunu düşündün: “Research Question tamam, Methodology fena değil, Results çıktı, peki Evaluation kısmında tam olarak
IB Environmental Systems and Societies öğrencisiysen, food production systems başlığının ne kadar sık karşına çıktığını muhtemelen fark etmişsindir. Hem eski syllabus içinde hem de 2026
Ek olarak kullandığın her su damlasının, yediğin her öğünün ve bindiğin her aracın gezegen üzerinde bıraktığı bir “iz” olduğunu düşün; işte ecological footprint tam olarak
İklim krizi, enerji geçişi, su kıtlığı, gıda fiyatları, hızlı şehirleşme… Bütün bu başlıklar kulağa sadece çevre bilimi konusu gibi geliyor olabilir, fakat aslında hepsinin kalbinde
“Sera etkisi ile küresel ısınma aynı şey mi?”Kısa cevap: Hayır. Greenhouse effect (sera etkisi) doğal ve yaşam için gerekli bir ısınma sürecidir, global warming (küresel
IB Environmental Systems and Societies (ESS) okuyorsan, iklim değişikliği mutlaka karşına çıkıyor ve 2026 first assessment döneminde climate change mitigation daha da merkezde duracak. Bu