Alper ÖZÇELİK
msn messsenger: alp_ozcelik@hotmail.com
icq: 561159


 Ders Hakkında
 Ders Hedefi
 BÖLÜM 1 - Veri Yapıları ve Algoritmalarına Giriş
 Bölüm Hedefi
  1.1  Yazılım ve Program
  1.2  Donanım ve Bellek
  1.3  İşletim Sistemi
  1.4  Veri Yapısı ve Veri Modeli
  1.5  Algoritma
  1.6  Programın Bellek Gereksinimi ve Çalışma Hızı
  1.7  İşlemci, Makina Kodu ve Assembly Dili
  1.8  Programlama Dilleri
  1.9  Veritabanı ve SQL
  1.10  Böl ve Yönet Yaklaşımı
  1.11  Network Yazılımı/Programlaması
  1.12  Kıyaslama (Benchmarking)
 Bölüm Özeti
 Değerlandirme Soruları
 BÖLÜM 2 - Veri Yapıları (Data Structures)
 Bölüm Hedefi
  2.1  Ham Veriden Bilgiye Dönüşüm
  2.2  Veri Yapılarının Sınıflandırılması
  2.3  Bilgisayarın İç Belleği
  2.4  Temel Veri Yapıları
    2.4.1  Karakter (ASCII, Ünikod)
      2.4.1.1  Ünikod (Unicode)
    2.4.2  Tamsayı (Dogal, 1'e Tümleyen, 2'ye Tümleyen, BCD)
      2.4.2.1  İşaretsiz (Unsigned Integer) ve İşaretli Tamsayı (Signed Integer)
      2.4.2.2  Tamsayıların Uzunluğu ve Boyları
    2.4.3  Kesirli Sayı (Kayan Noktalı-IEEE 754)
      2.4.3.1  Kayan Noktalı Sayı Formatı & IEEE 754
    2.4.4  Karakter Katarı/Sözcük
    2.4.5  Dizi/Matris
  2.5  Tanımlamalı Veri Yapıları
    2.5.1  Topluluk (Struct) Oluşturma
    2.5.2  Ortaklık (union) Oluşturma
    2.5.3  bit Düzeyinde Erişim
 Bölüm Özeti
 Değerlendirme Soruları

 BÖLÜM 3 - Veri Modelleri
 Bölüm Hedefi
  3.1  Veri Modelleri
    3.1.1  En Çok Bilinen Veri Modelleri
  3.2  Liste ve Bağlantılı Liste Veri Modeli
  3.3  Ağaç Veri Modeli
  3.4  Graf Veri Modeli
  3.5  Durum Makinası Veri Modeli
  3.6  Veritabanında İlişkisel Veri Modeli
  3.7  Ağ (Network) Veri Modeli
 Bölüm Özeti
 Değerlendirme Soruları

 BÖLÜM 4 - Algoritmik Program Tasarımı
 Bölüm Hedefi
  4.1  Program Tasarımı
    4.1.1  Program Tasarım Şemaları
  4.2  Algoritma Tasarımı
    4.2.1  Kaba-kod (PseudoCode) ve Gerçek Kod
  4.3  Akış Şemaları
    4.3.1  Algoritma ve İlişki Tanımlamasi için Çeşitli Yöntemler
      4.3.1.1  Koşullu Dallanma Simgesi
      4.3.1.2  Döngü Simgesi
      4.3.1.3  İçiçe Döngü Kullanılması
    4.3.2  N-S (Nassi-Schnederman) Şemaları
    4.3.3  W-O (Warnier-Orr) Diyagramları
  4.4  Çeşitli Akış Şeması Örnekleri
    4.4.1  Faktöriyel Hesabı
    4.4.2  Para Getirisi Hesabı
    4.4.3  İkinci Dereceden Denklemin Kökleri
    4.4.4  N Adet Sayının Aritmetik Ortalaması
    4.4.5  Dizinin En Küçük (Veya En Büyük) Elemanını Bulma
 Bölüm Özeti
 Değerlendirme Soruları

 BÖLÜM 5 - Program Çalışma Hızı ve Bellek Gereksinimi
 Bölüm Hedefi
  5.1  Temel Kavramlar
  5.2  Program Çalışma Hızı ve Karmaşıklık: Kıyaslama ve Algoritma Analizi
    5.2.1  Yürütme Zamanı (Running Time)
        5.2.1.1.  Aritmetik Ortalama için T(n) Hesabı
        5.2.1.2.  En Küçük Eleman Bulma için T(n) Hesabı
        5.2.1.3.  Matris Toplama için T(n) Hesabı
      5.2.2.  Karmaşıklık (Complexity)
      5.2.2.1  Yürütme Zamanı ve Karmaşıklık Hesabı
    5.3.  Programın Bellek Gereksinimi
      5.3.1.  Program Büyüklüğü
      5.3.2.  Veri Alanı
      5.3.3.  Yığın Bellek Gereksinimi
 Örnek: Bellek Miktarı Hesabı
    5.4.  Asimtotik Notasyonlar
 Örnek: Büyük O Notasyonu Hesabı
 Bölüm Özeti
 Değerlendirme Soruları

 BÖLÜM 6 - Bağlantılı Listeler
 Bölüm Hedefi
    6.1.  Bağlantılı Liste (Linked List)
      6.1.1.  Bağlantılı Liste ile İlgili Kavramlar
      6.1.2.  İşaretçi Değişkenler ve Bağlantılı Liste
    6.2.  Bağlantılı Listelerin Bellekte Tutulma Biçimleri
    6.3.  Ayrık Alanlarda Bağlantılı Liste Uygulaması
      6.3.1.  Ekleme İşlemi
      6.3.2.  Listeleme İşlemi
      6.3.3.  Arama İşlemi
      6.3.4.  Silme İşlemi
    6.4.  Tek Yönlü Bağlantılı Liste Uygulaması
    6.5.  Dizi Üzerinde Bağlantılı Liste
      6.5.1.  Dizi Üzerinde Bağlantılı Listeye Ekleme
    6.6.  İki Yönlü Bağlantılı Liste Uygulaması (double linked list)
      6.6.1.  İki-Yönlü Listeye Ekleme İşlemi
      6.6.2.  İki-Yönlü Listede Listeleme İşlemi
      6.6.3.  İki-Yönlü Listede Arama İşlemi
      6.6.4.  İki Yönlü Listede Silme/Listeden Çıkarma İşlemi
    6.7.  Listeyi Dosyada Saklamak
 Proje Çalışması
 Bölüm Özeti
 Çalışma Soruları
 Değerlendirme Soruları

 BÖLÜM 7 - Ağaç Veri Modeli
 Bölüm Hedefi
    7.1.  Ağaç Veri Modeli Temel Kavramları
      7.1.1.  Ağaç Veri Modeline İlişkin Tanımlar
    7.2.  Ağaç Türleri
    7.3.  Ağaç Üzerinde Yapılan İşlemler
    7.4.  Ağaçların Bellekte Tutulması
      7.4.1.  Düğüm Bağıntısıyla Ağaç Kurulması/Veri Yapısı
      7.4.2.  İndis Bağıntısıyla Ağaç Kurulması/Veri Yapısı
      7.4.2.1  İndis Bağıntısı Yönteminin Olumlu/Olumsuz Yanları
    7.5.  Dengeli Ağaç ve AVL Ağaç Yapısı
    7.6.  Kümeleme Ağacı (Heap Tree)
  7.7  Trie Ağacı/Sözcük Ağacı
    7.8.  Kodlama ve Kodlama Ağaçları
    7.8.1  Kodlama Ağaçları Üzerine Teoremler
      7.8.2.  Huffman Kodlama Ağacı
      7.8.3.  Shanno-Fano Kodlama Ağacı
    7.9.  Çeşitli Ağaç Şekilleri
      7.9.1.  Aile İşaretçisi Ağacı (Parent Pointer Tree)
      7.9.2.  Komut Çözme Ağacı
 Bölüm Özeti
 Çalışma Soruları
 Değerlendirme Soruları

 BÖLÜM 8 - İkili Ağaçlar (Binary Trees)
 Bölüm Hedefi
    8.1.  İkili Ağaç Yapıları
    8.2.  İkili Ağaç Üzerinde Dolaşma/Düğümlere Erişim
      8.2.1.  İkili Ağaç Üzerinde Dolaşma/Düğümlere Erişim - 2
      8.2.2.  İkili Ağaç Üzerinde Dolaşma/Düğümlere Erişim - 3
    8.3.  Bağıntı Ağaçları (Expression Trees)
      8.3.1.  İç-Takı, Ön-Takı ve Son-Takı
    8.4.  İkili Arama Ağaçları için Algoritmalar
      8.4.1.  İkili Arama Ağacına Ekleme Algoritması
      8.4.2.  İkili Arama Ağacında Dolaşma Algoritmaları
      8.4.3.  İkili Arama Ağacında Arama Algoritması
      8.4.4.  İkili Arama Ağacından Düğüm Silme Algoritması
 Bölüm Özeti
 Çalışma Soruları
 Değerlendirme Soruları

 BÖLÜM 9 - Yığın ve Kuyruk Yapısı
 Bölüm Hedefi
    9.1.  Yığın ve Kuyruk Veri Modellerine Giriş
      9.1.1.  Yığın ve Kuyruk İşlevleri
    9.2.  Yığın Tasarımı
      9.2.1.  Dizi Üzerinde Yığın Tasarımı
        9.2.1.1.  Dizi Üzerinde Yığın Uygulama Örneği
      9.2.2.  Bağlantılı Listeyle Yığın Tasarımı
        9.2.2.1.  Bağlantılı Listeyle Yığın Uygulama Örneği
    9.3.  Kuyruk Tasarımı
      9.3.1.  Dizi Üzerinde Kaydırmalı Kuyruk
      9.3.2.  Dizi Üzerinde Çevrimsel Kuyruk
        9.3.2.1.  Dizi Üzerinde Çevrimsel Kuyruk Uygulaması
      9.3.3.  Bağlantılı Listeyle Kuyruk Tasarımı
    9.4.  Öncelikli Kuyruk Çözümleri
      9.4.1.  Kümeleme Ağacıyla Öncelikli Kuyruk
 Bölüm Özeti
 Çalışma Soruları
 Değerlendirme Soruları

 BÖLÜM 10 - Sıralama Algoritmaları
 Bölüm Hedefi
    10.1.  Sıralama Algoritmalarına Giriş
    10.2.  Sıralama Algoritmaları Temel Kavramları
      10.2.1.  Dizinli Dosya Yapısı
    10.3.  Araya Sokma (Insertion) Sıralaması
      10.3.1.  Araya Sokma Sıralaması Uygulaması
    10.4.  Seçmeli Sıralama (Selection Sort)
    10.5.  Kabarcık Sıralaması (Bubble Sort)
      10.5.1.  Kabarcık Sıralaması Uygulaması
    10.6.  Birleşmeli Sıralama (Merge Sort)
    10.7.  Kümeleme Sıralaması (Heap Sort)
    10.8.  Hızlı Sıralama (Quick Sort)
      10.8.1.  Hızlı Sıralama Uygulaması
 Bölüm Özeti
 Çalışma Soruları
 Değerlendirme Soruları

 BÖLÜM 11 - Arama Algoritmaları
 Bölüm Hedefi
    11.1.  Arama Üzerine Temel Kavramlar
      11.1.1.  Dahili ve Harici Aramalar
      11.1.2.  Aramalarda Anahtar Sözcükler
    11.2.  Ardışık veya Doğrusal Arama
      11.2.1.  Dizi Üzerinde Ardışık Arama Yapma
      11.2.2.  Ardışık Aramada Yürütme Zamanı Hesabı
    11.3.  İkili Arama
      11.3.1.  Sıralı Dizide İkili Arama
        11.3.1.1.  Sıralı Dizide İkili Arama Fonksiyonu
      11.3.2.  İkili Ağaç Üzerinde İkili Arama
        11.3.2.1.  İkili Ağaç Üzerinde İkili Arama Fonksiyonu
    11.4.  Çırpı Fonksiyonu
      11.4.1.  Çırpı Fonksiyonu Örneği
      11.4.2.  Çırpı Fonksiyonda Çatışmaların Çözümlemesi
      11.4.2.  Çatışma ve Yükleme Faktörü
 Bölüm Özeti
 Çalışma Soruları
 Değerlendirme Soruları

 BÖLÜM 12 - Graf Veri Modeli
 Bölüm Hedefi
    12.1.  Graf Veri Modeline Giriş
    12.2.  Graflar Üzerine Temel Tanımlar
      12.2.1.  Graflar Üzerine Temel Tanımlar - 1
      12.2.2.  Graflar Üzerine Temel Tanımlar - 2
      12.2.3.  Graflar Üzerine Temel Tanımlar - 3
      12.2.4.  Graflar Üzerine Temel Tanımlar - 4
      12.2.5.  Graflar Üzerine Temel Tanımlar - 5
      12.2.6.  Graflar Üzerine Temel Tanımlar - 6
    12.3.  Grafların Bellek Üzerinde Tutulması
      12.3.1.  Grafların Bellek Üzerinde Tutulması Örneği
    12.4.  Greedy Yaklaşımı
    12.4.1  Greedy Yaklaşımı Uygulaması Kaba-kodu
    12.5.  Graf Üzerinde Dolaşma
      12.5.1.  DFS Yöntemi
      12.5.2.  BFS Yöntemi
    12.6.  Graf Renklendirme
      12.6.1.  Graf Renklendirme Örneği
    12.7.  Çeşitli Graf Algoritmaları
      12.7.1.  Dijkstra'nın Algoritması
        12.7.1.1.  Dijkstra'nın Algoritması Davranışı
      12.7.2.  Kruskal'ın Algoritması
        12.7.2.1.  Kruskal Algoritmasının Kaba-Kodu
 Bölüm Özeti
 Çalışma Soruları
 Değerlendirme Soruları

 Ders Sonu