İçeriğe geç / Skip to content / Zum Inhalt

Algoritma Öğretmeni Seçimi: Veri Yapıları ve Algoritma

Ahmet Balaman

Son güncelleme:

6 dk okuma

AlgoritmaAlgoritma DersiVeri YapılarıSınav HazırlığıÖzel DersBig O
Algoritma Öğretmeni Seçimi: Veri Yapıları ve Algoritma

Algoritma ve veri yapıları, izleyerek öğrenilemeyen bir konudur. Birinin quicksort'u anlatmasını dinlemek ile bir diziyi kâğıt üzerinde adım adım kendiniz sıralamak arasındaki fark, sınav kâğıdını ya da mülakat sorusunu görünce ortaya çıkar. Bu yüzden öğretmen seçerken bakmanız gereken şey ne kadar bildiği değil, size ne kadar iş yaptırdığıdır. Bu yazıda hedefinize göre nasıl bir öğretmen aramanız gerektiğini, deneme dersinde nelere bakacağınızı, özel dersin ne zaman işe yaramadığını ve konuların hangi sırayla çalışılacağını anlatıyorum.

Üç Farklı Hedef, Üç Farklı Ders

Birinci sınıftaki "Algoritma ve Programlamaya Giriş" dersini alıyorsanız sorununuz genellikle algoritma değil, programlamanın kendisidir. Akış şeması, sözde kod, döngü ve dizi mantığı oturmadan karmaşıklık analizi konuşmanın anlamı yoktur. Bu aşamada küçük problemleri birlikte çözen, çözümü vermeden önce sizi düşündüren sabırlı biri gerekir. Temel tarafınız zayıfsa önce yazılıma nereden başlanır yazısındaki yolu izlemek daha doğru olabilir.

Veri Yapıları ya da Algoritma Analizi dersinin vizesine, finaline hazırlanıyorsanız ihtiyacınız çok somuttur: hocanızın sorduğu soru tiplerini çözebilmek. Bu sınavlar çoğunlukla kâğıt üzerindedir. Bir ağaca eleman ekleyip çizmeniz, bir sıralama algoritmasının her adımını göstermeniz ya da bir kod parçasının karmaşıklığını hesaplamanız istenir. Size uygun öğretmen, dersinizde kullanılan dille (C, Java, Python) ve hocanızın gösterimiyle çalışmayı kabul eden, geçmiş yılların sorularını ilk derste isteyen kişidir.

Çalışan bir geliştirici olarak teknik mülakata hazırlanıyorsanız beklenti yine değişir. Burada ispat yazmanız gerekmez. Yeni bir problemi sesli düşünerek çözmeniz, hangi veri yapısını neden seçtiğinizi açıklamanız ve çözümünüzün karmaşıklığını söylemeniz gerekir. Aradığınız kişi soru ezberleten değil, problem kalıplarını öğreten ve sizi prova mülakatına alan biridir.

Deneme Dersinde Neye Bakmalı?

Algoritma öğretmenini değerlendirmenin en iyi yolu, onu hazırlıksız bir problem çözerken izlemektir. Deneme dersine kendi seçtiğiniz orta zorlukta bir soru götürün ve birlikte çözmeyi önerin. Düşünme sürecini sesli anlatabiliyor mu? Yanlış bir yola girdiğinde bunu fark edip geri dönebiliyor mu? Ezberlenmiş çözümleri tekrar eden biriyle gerçekten problem çözebilen biri arasındaki fark burada anlaşılır.

Şu soruları da sorun:

  • Hangi dilde çalışacağız ve dersimde kullanılan gösterime uyabilir misiniz?
  • Konu sırası yazılı olarak var mı, sınav tarihime göre uyarlanacak mı?
  • Her ders sonunda çözmem için soru verecek misiniz, çözümlerime nasıl bakacaksınız?
  • Kâğıt üzerinde adım adım takip çalışması yapacak mıyız?
  • Yayınladığınız çözümler, yazılar ya da kod var mı?

İki küçük yoklama işe yarar. Binary search neden O(log n)? Quicksort'un en kötü durumu neden O(n²) ve hangi girdide ortaya çıkar? İyi bir öğretmen bu sonuçları söylemekle yetinmez, bir örnek üzerinde saydırarak size buldurur. Karmaşıklığı türeterek anlatması, ezberleterek anlatmasından çok daha değerlidir, çünkü sınavda daha önce görmediğiniz bir kod parçası çıkacaktır.

İyi bir ilk derste kalem çoğunlukla sizin elinizdedir. Öğretmen bir veri yapısını çizer, bir işlemi gösterir, sonrakini size yaptırır ve anladığınızı kendi cümlelerinizle geri anlatmanızı ister. Ders sonunda elinizde çözülmüş birkaç soru ve tek başınıza çözeceğiniz birkaç yeni soru olur.

Temkinli olmanızı gerektiren durumlar:

  • Not ya da mülakat sonucu garantisi
  • "Şu 300 soruyu ezberleyin" yaklaşımı, kalıpların hiç anlatılmaması
  • Yalnızca ekranda kod gösterilmesi, elle takip yapılmaması
  • Siz düşünmeye başlamadan çözümün verilmesi
  • Ödevinizi sizin yerinize yapma teklifi
  • Yazılı bir plan olmadan peşin paket satışı

Özel Ders mi, Kitap mı, Video mu?

Bu alanda ücretsiz kaynak boldur ve kalitesi yüksektir. Üniversitelerin açık ders kayıtları (örneğin MIT OpenCourseWare), VisuAlgo gibi görselleştirme siteleri ve LeetCode benzeri soru platformları kendi kendine çalışmak için fazlasıyla yeterlidir. Klasik ders kitapları kapsamlıdır ama ağırdır. İlk kaynak olarak değil, başvuru kaynağı olarak iyi iş görürler.

Kendi kendine çalışmanın zayıf yanı, yanlış anladığınız bir şeyi fark edememenizdir. Çözümünüz test girdilerinden geçer ama karmaşıklığı beklenenden kötüdür ve bunu size söyleyen olmaz. Video dersler bir konuyu ilk kez görmek için iyidir. Tehlikesi, anlatımı takip edebildiğiniz için konuyu bildiğinizi sanmanızdır. Algoritmada bilmek, boş kâğıda yazabilmek demektir.

Birebir ders şu durumlarda paranın karşılığını verir: sınava sınırlı zaman kalmışsa ve hangi konuya öncelik vereceğinizi bilmiyorsanız, aynı konuda (çoğunlukla recursion ya da ağaçlar) uzun süredir takılıyorsanız, ya da mülakat provasına ve çözümlerinize geri bildirime ihtiyacınız varsa. Şu durumlarda vermez: soruları kendiniz çözmeyi hiç denemeden derse geliyorsanız, henüz döngü ve fonksiyon yazamıyorsanız (o zaman programlama dersi almalısınız) ya da dersler arasında soru çözmeye vakit ayıramayacaksanız. Bu konuda zorlanmak öğrenmenin parçasıdır. Çözümü size çok çabuk veren bir öğretmen, iyi niyetle de olsa sizi o kısımdan mahrum bırakır.

Veri Yapıları ve Algoritma İçin Çalışma Sırası

  1. Programlama temeli: döngüler, diziler, fonksiyonlar ve basit recursion. Bunlar yoksa gerisi kurulamaz.
  2. Karmaşıklık analizi. Big O notasyonu ve zaman karmaşıklığı sonraki her konuda kullanacağınız ölçüdür.
  3. Doğrusal yapılar: dizi, bağlı liste, stack ve queue. Her birinde ekleme, silme ve arama maliyetlerini karşılaştırın.
  4. Arama ve sıralama. Seçmeli, eklemeli, birleştirmeli ve hızlı sıralamayı elle adım adım yapabilmelisiniz. Sıralama algoritmaları sınav soruları ve çözümleri bunun için hazırlandı.
  5. Recursion ve böl-yönet. Çağrı ağacını çizmeyi öğrenmek, ilerideki birçok konuyu kolaylaştırır.
  6. Hash tabloları. Bir dilde pratikte nasıl göründüğünü Dart'ta List, HashSet ve HashMap yazısında görebilirsiniz.
  7. Ağaçlar ve ikili arama ağacı. Ekleme, silme ve dolaşma soruları için binary search tree sınav sorularına bakın.
  8. Heap ve öncelik kuyruğu.
  9. Graflar: gösterim biçimleri, BFS, DFS ve en kısa yol algoritmaları.
  10. Açgözlü yaklaşım ve dinamik programlama.

Sınava hazırlanıyorsanız bu listeyi dersinizin izlencesiyle karşılaştırın ve yalnızca kapsama girenleri çalışın. Mülakata hazırlanıyorsanız üçüncü, altıncı, yedinci ve dokuzuncu adımlar en sık karşınıza çıkacak olanlardır.

Dersin Verimini Siz Belirlersiniz

Her derse, üzerinde en az yirmi dakika uğraşıp çözemediğiniz sorularla gelin ve nerede tıkandığınızı gösterin. Yarım kalmış çözümünüz öğretmen için en değerli bilgidir, çünkü hangi kavramın eksik olduğunu gösterir. Çözümü gördükten sonra kapatıp aynı soruyu birkaç gün sonra boş kâğıda yeniden çözün. Çözemiyorsanız anlamamışsınızdır, sadece tanımışsınızdır.

Sınav kâğıt üzerindeyse çalışmanız da kâğıt üzerinde olmalıdır. Editörün otomatik tamamlaması ve derleyici sınavda yanınızda olmayacak. Geçmiş yılların sorularını süre tutarak çözün ve öğretmeninizden puanlama gözüyle bakmasını isteyin. Hangi adımı yazmadığınız için puan kaybedeceğinizi bilmek çoğu zaman yeni bir konu öğrenmekten daha fazla not getirir.

Verdiğim Dersler

Algoritma ve veri yapıları konusunda birebir, çevrim içi ders ve sınav hazırlık desteği veriyorum. Ayrıntılar sınav destek sayfasında. Bu yazıdaki soruları bana da sorabilirsiniz.

Sık Sorulan Sorular

Algoritma öğrenmek için hangi programlama dilini bilmeliyim?

Kavramlar dilden bağımsızdır. Sınava hazırlanıyorsanız dersinizde kullanılan dille çalışın, mülakata hazırlanıyorsanız en rahat yazdığınız dili seçin. Önemli olan, döngü, dizi ve fonksiyonları o dilde düşünmeden yazabilmenizdir.

Algoritma için ne kadar matematik gerekir?

Karmaşıklık analizinin temeli için toplam formülleri, logaritma ve biraz tümevarım yeterlidir. İleri analiz ve ispat ağırlıklı dersler daha fazla ayrık matematik ister, ama mülakat ve uygulama düzeyi için lise matematiği üzerine küçük eklemeler yeter.

Sınava iki hafta kala özel ders işe yarar mı?

Geçmiş soru tiplerine odaklanılırsa yarar, ama mucize beklememek gerekir. İki haftada bütün dönem kapatılamaz. Hangi konuların kesin çıkacağını belirleyip onlarda elle çözüm pratiği yapmak en gerçekçi plandır.

Haftada kaç saat ders yeterli?

Haftada bir ya da iki saat ders çoğu kişi için yeterlidir. Belirleyici olan, ders aralarında kendi başınıza çözdüğünüz soru sayısıdır. Tek başına soru çözmeden geçen bir haftanın ardından yapılan ders büyük ölçüde tekrar olur.

Yorumlar