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 | ||