EEES421 Data Structures & Programming

4 AKTS - 3-0 Süre (T+U)- 7. Yarıyıl- 3 Yerel Kredi

Genel Bilgi

Birim MÜHENDİSLİK FAKÜLTESİ
ELEKTRİK-ELEKTRONİK MÜHENDİSLİĞİ PR. (İNGİLİZCE)
Kod EEES421
Ad Data Structures & Programming
Dönem 2026-2027 Eğitim-Öğretim Yılı
Yarıyıl 7. Yarıyıl
Süre (T+U) 3-0 (T-U) (17 Hafta)
AKTS 4 AKTS
Yerel Kredi 3 Yerel Kredi
Eğitim Dil İngilizce
Seviye Belirsiz
Tür Normal
Etiket S Seçmeli
Öğretim Şekli Yüz Yüze Öğretim
Bilgi Paketi Koordinatörü Doç. Dr. FATİH KILIÇ
Dersin Öğretim Elemanı
Güncel dönem ders programı henüz yapılmamıştır.


Dersin Amacı / Hedefi

Bu dersin amacı, öğrencilere temel ve ileri veri yapılarını, bu yapılar üzerinde gerçekleştirilen algoritmaları ve nesne yönelimli programlama prensiplerini teorik ve uygulamalı olarak tanıtmaktır. Öğrencilerin diziler, bağlı listeler, yığınlar, kuyruklar, ağaçlar, hash tabloları ve graflar gibi veri yapılarını kavramaları; arama, sıralama ve özyineleme algoritmalarını analiz edebilmeleri; algoritma karmaşıklığını (Big-O) değerlendirebilmeleri ve C++/Java/Python gibi modern programlama dillerini kullanarak verimli yazılım çözümleri geliştirebilmeleri hedeflenmektedir.

Dersin İçeriği

Bu derste; programlama dillerine genel bakış ve geliştirme ortamı kurulumu; nesne yönelimli programlama prensipleri (sınıf, kalıtım, çok biçimlilik, kapsülleme, soyutlama); algoritma analizi ve karmaşıklık (Big-O, Big-Theta, Big-Omega); diziler, çok boyutlu diziler, dinamik bellek yönetimi ve işaretçiler; tek/çift yönlü ve dairesel bağlı listeler; yığın (stack) ve kuyruk (queue) yapıları; özyineleme ve böl-fethet stratejileri; ikili ağaçlar, ikili arama ağaçları (BST), AVL ve kırmızı-siyah ağaçlar, yığın (heap) yapısı ve öncelikli kuyruklar; hash tabloları ve çakışma çözüm yöntemleri; kabarcık, seçim, ekleme, birleştirme, hızlı ve yığın sıralaması algoritmaları; doğrusal ve ikili arama; graf temsil yöntemleri ile BFS, DFS ve Dijkstra gibi graf algoritmaları; dinamik programlama ve açgözlü algoritmaların temelleri ele alınmakta; öğrenciler C++, Java veya Python kullanarak modüler ve verimli bir veri yapıları projesi geliştirmektedir.

Dersin Ön Koşulu

Dersin ön koşulu bulunmamaktadır.

Kaynaklar

Mark Allen Weiss, Data Structures and Algorithm Analysis in Java (3rd ed.), Pearson, 2012. Cormen, T. H., Leiserson, C. E., Rivest, R. L., & Stein, C. (2022). Introduction to Algorithms (4th ed.). MIT Press. Goodrich, M. T., Tamassia, R., & Goldwasser, M. H. (2014). Data Structures and Algorithms in Python. Wiley.

Notlar

Weiss, M. A. (2013). Data Structures and Algorithm Analysis in C++ (4th ed.). Pearson. Sedgewick, R., & Wayne, K. (2011). Algorithms (4th ed.). Addison-Wesley. Çevrimiçi platformlar: GeeksforGeeks, LeetCode, HackerRank, Visualgo


Dersin Öğrenme Çıktıları

Sıra Dersin Öğrenme Çıktıları
ÖÇ01 Veri yapısı işleminin hesaplama
ÖÇ02 Ortak veri yapı tiplerini geliştirir ve verimli kullanır.
ÖÇ03 İyi bilinen veri yapılarını kullanarak programlama problemlerini çözer.
ÖÇ04 Problem çözme konusunda yeni veri yapılarının tasarlar ve geliştirir.


Program Öğrenme Çıktıları ile İlişkisi

Sıra Tür Program Öğrenme Çıktıları Duzey
PÖÇ01 Bilgi - Kuramsal, Olgusal Matematik, fen bilimleri ve ilgili mühendislik disiplinine özgü konularda yeterli bilgi birikimi; bu alanlardaki kuramsal ve uygulamalı bilgileri, karmaşık mühendislik problemlerinin çözümünde kullanabilme becerisine sahip olur. 4
PÖÇ02 Bilgi - Kuramsal, Olgusal Karmaşık mühendislik problemlerini tanımlama, formüle etme ve çözme becerisi; bu amaçla uygun analiz ve modelleme yöntemlerini seçme ve uygulama becerisine sahip olur. 5
PÖÇ03 Bilgi - Kuramsal, Olgusal Karmaşık bir sistemi, süreci, cihazı veya ürünü gerçekçi kısıtlar ve koşullar altında, belirli gereksinimleri karşılayacak şekilde tasarlama becerisi; bu amaçla modern tasarım yöntemlerini uygulama becerisine sahip olur. 5
PÖÇ04 Bilgi - Kuramsal, Olgusal Mühendislik uygulamalarında karşılaşılan karmaşık problemlerin analizi ve çözümü için gerekli olan modern teknik ve araçları seçme ve kullanma becerisi; bilişim teknolojilerini ve programlama bilgilerini etkin bir şekilde kullanma becerisine sahip olur. 3
PÖÇ05 Bilgi - Kuramsal, Olgusal Karmaşık mühendislik problemlerinin veya disipline özgü araştırma konularının incelenmesi için deney tasarlama, deney yapma, veri toplama, sonuçları analiz etme ve yorumlama becerisine sahip olur. 3
PÖÇ06 Bilgi - Kuramsal, Olgusal Disiplin içi ve çok disiplinli takımlarda etkin biçimde çalışabilme becerisi; bireysel çalışma becerisine sahip olur.
PÖÇ07 Bilgi - Kuramsal, Olgusal Sözlü ve yazılı etkin iletişim kurma becerisi; en az bir yabancı dil bilgisi; etkin rapor yazma ve yazılı raporları anlama, tasarım ve üretim raporları hazırlayabilme, etkin sunum yapabilme, açık ve anlaşılır talimat verme ve alma becerisine sahip olur.
PÖÇ08 Bilgi - Kuramsal, Olgusal Yaşam boyu öğrenmenin gerekliliği konusunda farkındalık; bilgiye erişebilme, bilim ve teknolojideki gelişmeleri izleme ve kendini sürekli yenileme becerisine sahip olur.
PÖÇ09 Bilgi - Kuramsal, Olgusal Etik ilkelerine uygun davranma, mesleki ve etik sorumluluk ve mühendislik uygulamalarında kullanılan standartlar hakkında bilgi edinir.
PÖÇ10 Bilgi - Kuramsal, Olgusal Proje yönetimi, risk yönetimi ve değişiklik yönetimi gibi, iş hayatındaki uygulamalar hakkında bilgi; girişimcilik, yenilikçilik hakkında farkındalık; sürdürülebilir kalkınma hakkında bilgi edinir. 3
PÖÇ11 Bilgi - Kuramsal, Olgusal Mühendislik uygulamalarının evrensel ve toplumsal boyutlarda sağlık, çevre ve güvenlik üzerindeki etkileri ve çağın mühendislik alanına yansıyan sorunları hakkında bilgi; mühendislik çözümlerinin hukuksal sonuçları konusunda farkındalık sahibi olur.
PÖÇ12 Bilgi - Kuramsal, Olgusal Elektrik-Elektronik mühendisliği bilgilerini mesleğe özgü alet ve cihazlar üzerinde uygulayabilme becerisine sahip olur. 3
PÖÇ13 Bilgi - Kuramsal, Olgusal İçinde yaşadığı toplumun, dünyanın ve çağın, bilimsel, sosyal, tarihi, ekonomik ve politik olguları hakkında farkındalık edinir.


Haftalık Akış

Hafta Konu Ön Hazırlık Yöntemler
1 Programlama dillerine genel bakış; geliştirme ortamının kurulumu (C++/Java/Python); temel söz dizimi ve veri tiplerinin gözden geçirilmesi Ders izlencesinin incelenmesi; C++, Java veya Python derleyicisinin/yorumlayıcısının kişisel bilgisayara kurulması (Visual Studio, Code::Blocks, PyCharm); temel programlama kavramlarının (değişken, döngü, fonksiyon) gözden geçirilmesi. Öğretim Yöntemleri:
Anlatım, Soru-Cevap, Tartışma
2 Nesne yönelimli programlamaya giriş: sınıf, nesne, kapsülleme, kalıtım, çok biçimlilik ve soyutlama Yapısal programlama ile nesne yönelimli programlama arasındaki farkın araştırılması; "sınıf" ve "nesne" kavramlarının ön okunması; günlük yaşamdaki nesnelerin sınıf-nesne ilişkisi açısından düşünülmesi. Öğretim Yöntemleri:
Anlatım, Soru-Cevap, Tartışma
3 Algoritma analizi ve karmaşıklık: Big-O, Big-Theta, Big-Omega notasyonları; en iyi, ortalama ve en kötü durum analizi Logaritma, üstel fonksiyon ve toplam serileri konularının matematiksel olarak gözden geçirilmesi; "algoritma" ve "verimlilik" kavramlarının araştırılması; örnek algoritmaların adım sayısı analizine ilişkin ön okuma. Öğretim Yöntemleri:
Soru-Cevap, Anlatım, Tartışma
4 Diziler, çok boyutlu diziler ve dinamik bellek yönetimi; işaretçiler (pointers) ve referanslar Bellek (stack ve heap) kavramlarının araştırılması; işaretçi (pointer) mantığının ön okunması; statik ve dinamik bellek tahsisi farkının incelenmesi. Öğretim Yöntemleri:
Anlatım, Soru-Cevap, Tartışma
5 Bağlı listeler: tek yönlü, çift yönlü ve dairesel bağlı listeler; ekleme, silme ve arama işlemleri Dizi yapısının avantaj ve dezavantajlarının gözden geçirilmesi; "düğüm" (node) ve "bağ" (link) kavramlarının araştırılması; örnek bağlı liste görselleştirmelerinin incelenmesi. Öğretim Yöntemleri:
Anlatım, Soru-Cevap, Tartışma
6 Yığınlar (stack) ve kuyruklar (queue): dizi ve bağlı liste tabanlı gerçekleştirimler; uygulama örnekleri (ifade değerlendirme, BFS) LIFO (Son giren ilk çıkar) ve FIFO (İlk giren ilk çıkar) prensiplerinin günlük yaşamdaki örnekler üzerinden düşünülmesi; tarayıcının "geri" tuşu ve yazıcı kuyruğu gibi gerçek hayat uygulamalarının araştırılması. Öğretim Yöntemleri:
Anlatım, Soru-Cevap, Tartışma
7 Özyineleme (recursion): temel kavramlar, yığın çerçevesi, böl ve fethet stratejisi; klasik özyinelemeli problemler (faktöriyel, Fibonacci, Hanoi kuleleri) Matematiksel özyinelemeli tanımların (faktöriyel, Fibonacci) gözden geçirilmesi; fonksiyon çağrı yığını (call stack) kavramının ön araştırılması; "böl ve fethet" stratejisinin incelenmesi. Öğretim Yöntemleri:
Anlatım, Soru-Cevap, Tartışma
8 Ara Sınavlar İlk yedi haftada işlenen tüm konuların kapsamlı tekrarı; ders notları, ödevler ve laboratuvar uygulamalarının gözden geçirilmesi; örnek sorular üzerinden çalışılması. Ölçme Yöntemleri:
Yazılı Sınav
9 Ağaçlar: ikili ağaçlar, ikili arama ağaçları (BST); dolaşma yöntemleri (in-order, pre-order, post-order, level-order) "Hiyerarşi" ve "ağaç" kavramlarının araştırılması; aile soyağacı, dosya sistemi gibi ağaç yapılarına örneklerin incelenmesi; ikili ağaç görselleştirmelerinin gözden geçirilmesi. Öğretim Yöntemleri:
Anlatım, Soru-Cevap, Tartışma
10 Dengeli ağaçlar: AVL ağaçları ve kırmızı-siyah ağaçlar; yığın (heap) yapısı ve öncelikli kuyruklar "Dengeleme" kavramının ve dengesiz ağaçların oluşturduğu performans sorunlarının araştırılması; öncelikli kuyruk (priority queue) örneklerinin (hastane acil servisi, işletim sistemi süreç planlaması) incelenmesi. Öğretim Yöntemleri:
Anlatım, Soru-Cevap, Tartışma
11 Hash tabloları: hash fonksiyonları, çakışma çözüm yöntemleri (zincirleme, açık adresleme); hash tablolarının analizi Sözlük ve telefon rehberi gibi anahtar-değer (key-value) eşleşmesi gerektiren günlük yaşam örneklerinin düşünülmesi; "hash fonksiyonu" kavramının ön araştırılması; örnek karma yöntemlerinin incelenmesi. Öğretim Yöntemleri:
Anlatım, Soru-Cevap, Tartışma
12 Sıralama algoritmaları: kabarcık, seçim, ekleme, birleştirme (merge), hızlı (quick) ve yığın (heap) sıralaması; karmaşıklık karşılaştırması Günlük yaşamda farklı sıralama senaryolarının (kart oyunları, kütüphane kataloglama) gözden geçirilmesi; "kararlı" ve "kararsız" sıralama kavramlarının ön araştırılması. Öğretim Yöntemleri:
Anlatım, Soru-Cevap, Tartışma
13 Arama algoritmaları: doğrusal arama, ikili arama; metin arama algoritmalarına giriş Telefon rehberinde isim arama yönteminin (ikili arama mantığı) düşünülmesi; sıralı ve sırasız veri kümelerinde arama farklılıklarının araştırılması; arama motoru çalışma mantığının genel düzeyde incelenmesi. Öğretim Yöntemleri:
Anlatım, Soru-Cevap, Tartışma
14 Graflar: temsil yöntemleri (komşuluk matrisi/listesi); graf dolaşma algoritmaları (BFS, DFS); en kısa yol algoritmaları (Dijkstra) Sosyal ağlar, harita uygulamaları ve metro hatları gibi graf yapılarının günlük yaşamdaki örneklerinin düşünülmesi; "düğüm" ve "kenar" kavramlarının ön araştırılması; Dijkstra algoritmasına ilişkin görsel kaynakların incelenmesi. Öğretim Yöntemleri:
Anlatım, Soru-Cevap, Tartışma
15 İleri konular: dinamik programlama temelleri, açgözlü algoritmalar; öğrenci proje sunumları Dönem projesinin tamamlanması; dinamik programlama ve açgözlü algoritma kavramlarına ilişkin ön okuma yapılması; sunum dosyasının ve demo videosunun hazırlanması; sunum provasının yapılması. Öğretim Yöntemleri:
Anlatım, Soru-Cevap, Tartışma
16 Yarıyıl Sonu Sınavları Dönem boyunca işlenen tüm konuların kapsamlı tekrarı; ara sınav sonrası işlenen konulara özel odaklanma; çözümlü örnek sorular üzerinden çalışılması. Ölçme Yöntemleri:
Yazılı Sınav
17 Yarıyıl Sonu Sınavları Dönem boyunca işlenen tüm konuların kapsamlı tekrarı; ara sınav sonrası işlenen konulara özel odaklanma; çözümlü örnek sorular üzerinden çalışılması. Ölçme Yöntemleri:
Yazılı Sınav


Öğrenci İş Yükü - AKTS

Çalışmalar Sayısı Süresi (Saat) İş Yükü (Saat)
Ders ile İlgili Çalışmalar
Ders (Sınav haftaları dahil değildir) 14 3 42
Sınıf Dışı Ders Çalışma (Ön çalışma, pekiştirme) 14 3 42
Değerlendirmeler ile İlgili Çalışmalar
Ödev, Proje, Diğer 0 0 0
Ara Sınavlar (Yazılı, Sözlü, vs.) 1 2 2
Yarıyıl/Yıl Sonu/Final Sınavı 1 2 2
Toplam İş Yükü (Saat) 88
Toplam İş Yükü / 25 (s) 3,52
AKTS 4 AKTS

Güncelleme Zamanı: 05.05.2026 10:01