DERS TANITIM ve UYGULAMA BİLGİLERİ

Dersin Adı Kodu Yarıyıl T+U+L (saat/hafta) Türü (Z / S) Yerel Kredi AKTS
Veri Yapıları ve Algoritmalar CE 242 Bahar 03+00+02 Zorunlu 4 6
Akademik Birim: Bilgisayar Mühendisliği Bölümü
Öğrenim Türü: Örgün Eğitim
Ön Koşullar Önerilen:- Giriş programlama bilgisi - Ayrık Hesaplama Yapıları
Öğrenim Dili: İngilizce
Dersin Düzeyi: Lisans
Dersin Koordinatörü: Doğan ÇÖRÜŞ
Dersin Amacı: Bu dersin temel amacı, öğrencilere bilgisayar bilimlerinde ve hesaplama problemlerinde yaygın olarak kullanılan ayrık veri yapılarının tasarımı ve uygulanmasında problem çözme ve deneyim kazandırmaktır. Öğrenciler, hesaplama karmaşıklığı analizi ile tanışacak ve en önemli veri yapılarını ve göreli algoritmaları nasıl uygulayacaklarını ve nasıl kullanacaklarını öğreneceklerdir.
Dersin İçeriği: Soyut Veri Tipleri ve Veri Yapıları tanımı, Big-O Notasyonuna Giriş (Hesaplamalı Karmaşıklık Analizi), Statik Diziler, Dinamik Diziler, C++ STL Kapsayıcıları, C++ STL Yineleyiciler, C++ STL Algoritmaları, Özyineleme, Tek Bağlantılı Liste, Çift Bağlantılı Listeler, Yığınlar, Kuyruklar, Grafiklere ve Ağaçlara Giriş, İkili Ağaçlar, Derinlik İlk Arama, Genişlik İlk Arama, İkili Arama Ağaçları, Ön Sipariş Geçişi, Sıra Sıra Geçişi, Sipariş Sonrası Geçiş, Düzey Sıra Geçişi, Öncelik Kuyrukları ve Yığınlar, İkili Yığınlar, Karma Tablolar, Seri Zincirleme, Açık Adresleme, Kabarcık Sıralaması, Seçim Sıralaması, Ekleme Sıralaması, Birleştirme Sıralaması, Hızlı Sıralama, Yığın Sıralama, Son Ek Dizileri, LCP Dizileri.
Dersin Öğrenme Çıktıları (ÖÇ):
  • 1- doğruluk için algoritmaları veya bilgisayar kodunu analiz etmek
  • 2- verimlilik açısından algoritmaları ve bilgisayar kodunu değerlendirmek
  • 3- en önemli veri yapılarını öğrenmek
  • 4- en önemli veri yapılarının nasıl uygulanacağını öğrenmek
  • 5- sorunları çözmek için veri yapılarının nasıl kullanılacağını öğrenmek
  • 6- bazı gelişmiş algoritmaları öğrenmek
  • 7- problem çözme becerilerini geliştirmek
  • 8- kaba kuvvet yaklaşımını kullanmadan sorunları nasıl çözeceğinizi öğrenmek
  • 9- bir kodlama görüşmesi için (neredeyse) hazır olmak
Dersin Öğrenme Yöntem ve Teknikleri Dersler ve laboratuvar etkinlikleri. Sınıftaki tüm örnekler C++ ile verilecektir.
Ödevleri yapmak için LeetCode'da ücretsiz bir hesabınızın olması gerekir (https://leetcode.com/).


HAFTALIK PROGRAM

HaftaKonularÖn Hazırlık ÖÇ
1 Giriş, Soyut Veri Tipleri Goodrich-Tamassia Bölüm 1, 2 1
2 Hesaplamalı Karmaşıklık Analizi Goodrich-Tamassia Bölüm 4 Skiena Bölüm 2.1, 2.2, 2.3, 2.4, 2.6, 2.7, 5.1 2, 4, 5, 6
3 Statik ve Dinamik Diziler, STL Goodrich-Tamassia Bölüm 3.1, 6.1, 6.2 Skiena Bölüm 3.1.1 2, 4, 5, 6
4 Özyineleme Goodrich-Tamassia Bölüm 3.5 1, 3, 4, 5
5 Bağlantılı Listeler Goodrich-Tamassia Bölüm 3.2, 3.3 Skiena Bölüm 3.1 1, 2, 3, 6
6 Yığınlar, Kuyruklar Goodrich-Tamassia Bölüm 5.1, 5.2 Skiena Bölüm 3.2 1, 2, 3, 6
7 Vize 1, 2, 3, 6
8 Grafikler, Ağaçlar, İkili Ağaçlar, Çapraz Ağaçlar (1) Goodrich-Tamassia Bölüm 13.1, 13.2, 13.3, 7 Skiena Bölüm 7 1, 2, 5, 6
9 Grafikler, Ağaçlar, İkili Ağaçlar, Çapraz Ağaçlar (2) Goodrich-Tamassia Bölüm 10.1 Skiena Bölüm 3.4
10 Öncelikli Kuyruklar ve Yığınlar Goodrich-Tamassia Bölüm 8 Skiena Bölüm 3.5 1, 2
11 Hash Tabloları Goodrich-Tamassia Bölüm 9 Skiena Bölüm 3.7 1, 2
12 Sıralama Algoritmaları Goodrich-Tamassia Bölüm 11.1, 11.2 Skiena Bölüm 4 1, 2, 3, 4
13 Son Ek Dizileri ve LCP Dizileri (Geçici) TBA 1, 3, 6, 4
14 Final Sınavı için En İyi Uygulamalar ve Özet 1, 6, 4, 5


ZORUNLU ve ÖNERİLEN OKUMALAR

- Goodrich, Tamassia, Mount, "Data Structures & Algorithms in C++", 2nd edition
- Mark Allen Weiss, "Data Structures and Algorithm Analysis in C++”, 4th edition
- Steven S. Skiena, “The Algorithm Design Manual”, 3dh edition


DİĞER KAYNAKLAR

- Geeksforgeeks online tutorials: https://www.geeksforgeeks.org/data-structures/
- William Fiset's video: https://www.youtube.com/watch?v=RBSGKlAvoiM
- LeetCode: https://leetcode.com - CoderPad: https://app.coderpad.io/sandbox


DEĞERLENDİRME SİSTEMİ

Yarıyıl İçi ÇalışmalarıSayıKatkı Payı (%)
Ödev 1 10
Final Sınavı 1 45
Ara Sınavlar 1 45
Total: 3 100


İŞ YÜKÜ HESAPLAMASI

EtkinliklerSayısıSüresi (saat)Toplam İş Yükü (saat)
Ders Saati42142
Laboratuvar28128
Ödev6742
Final Sınavı12020
Ara Sınavlar11818
Toplam İş Yükü (saat):150


PROGRAM YETERLİLİKLERİ (PY) ve ÖĞRENME ÇIKTILARI (ÖÇ) İLİŞKİSİ

# PY1 PY2 PY3 PY4 PY5 PY6 PY7 PY8 PY9 PY10 PY11 PY12
OC1 1 2                    
OC2 1 2 3 1 2              
OC3 1 3 3 1 2              
OC4 2 2 3 1 2              
OC5 1 2 3 1 2              
OC6 1 2 3 2 2 2            
OC7                        
OC8                        
OC9