GERİ DÖN

Ders Öğretim Planı


Dersin Kodu Dersin Adı Dersin Türü Yıl Yarıyıl AKTS
501002042010 DATA STRUCTURES Ders 2 3 5,00

Lisans


İngilizce


Veri Yapıları kavramlarının anlaşılmasını ve öğrenilmesini sağlamak ve bu kavramları problemlerin çözümünde doğru ve etkin bir şekilde kullanabilme yeteneğini kazandırmak. Veri düzenleme ve işlemenin problem çözmedeki yararlılıklarını göstermek.


Prof. Dr. Aybars UĞUR


1 Nesne yönelimli ve yeni bir programlama dilindeki temel kavramları, veri tiplerini, yapıları ve komutları kavrayabilme ve kullanabilme. Çözümlerini, nesne yönelimli bir programlama dilinde ifade edebilme.
2 Problemlere veri yapıları kullanarak farklı, etkin ve hızlı çözümler üretebilme.
3 Program yazarken gereken verileri, değişik biçimlere ve yapılara göre düzenleyebilme. Yazılım geliştirirken gereken veri yapılarını etkin olarak tasarlayabilme. Uygun veri yapılarını seçerek daha etkin algoritmalar yazabilme.
4 Programlama ortamlarındaki hazır veri yapılarını kullanabilme.
5 Veri Yapıları içeren programlar yazabilme. Bu kapsamda proje hazırlayabilme ve rapor hazırlayarak yazılı olarak sunabilme.
6 Grup çalışmalarında, problem çözümlerine katkı verebilme.
7 Veri Yapıları konusunda öğrendiklerini, güncel problemlerin çözümünde kullanabilme.
8 Doğrusal veri yapılarını temsil edebilme, eleman ekleme, silme, arama, sıralama ve dolaşma gibi işlemleri yapabilme.
9 Ağaç ve Çizge veri yapılarını temsil edebilme, eleman ekleme, silme ve üzerlerinde arama ve dolaşma gibi işlemleri yapabilme. Temel ağaç ve çizge algoritmalarını anlayabilme ve kodlayabilme.

Birinci Öğretim


Yok


Yok


Yığıt, Kuyruklar, Listeler, Özyineleme, Ağaçlar (İkili Ağaçlar, Dengeli Ağaçlar, Yığınlar, Huffman Kodlama Ağacı), Algoritmaların Karşılaştırılması, Sıralama ve Arama, Çizgeler (Representation, Traversals, Shortest Path, Minimum Spanning Tree, …)


Hafta Konular (Teorik) Uygulama Öğretim Yöntem ve Teknikleri Ön Hazırlık
1 Veri Yapılarına Giriş: Veri, Yapı ve Algoritma Kavramlarının önemi. C, C++, Java, Python, C# Dillerinin Karşılaştırılması ve Bilişim Sektöründeki Konumları. C# Ortamı Tanıtımı ve İlk Program
2 C#/Java Programlama Dili’ne Giriş: C# Yazılım Geliştirme Araçlarının Tanıtımı. C# Dilindeki Temel Kavramlar. C# ile Uygulama yazma. Örnekler. Metotlar, Diziler ve Hata Ayıklama
3 C# Programlama Dilinde Nesne Yönelimli Programlama. Vektörlere İlişkin Örnekler. Grafik Kullanıcı Arayüzü (GUI) Oluşturma. Sınıflar, Veri Yapıları ve Metotlar içeren Uygulama Geliştirme
4 Nesne Yönelimli Bakış Açısı ile Yığıt, Kuyruk ve Bağlaçlı Listeler: Yığıt Tanımları ve İşlemleri, Kuyruk Tanımları ve İşlemleri, Kuyruk Tasarımı ve Kullanımı, Listeler Üzerindeki Bazı İşlemler ve Tanımları, Bağlaçlı Listeler, Öncelik Kuyrukları, Yığıt ve Kuyrukların Bağlaçlı Liste Gerçekleştirimleri. Kuyruk ve ArrayList Uygulaması Geliştirme
5 C#'ta Özyineleme: Yineleme ve Özyineleme, Faktöryel Fonksiyonu, Fibonacci Dizisi, İkili Arama, Hanoi Kuleleri, Özyineleme Zinciri. Özyineleme Örneği
6 Ağaçlar: Tanımlar, İkili Ağaçlar ve İkili Ağaçlar Üzerindeki Dolaşma İşlemleri, İkili Arama Ağaçları, Ağaçlara Eleman Ekleme ve Silme İşlemleri, Ağaç Örnekleri. İkili Arama Ağacı Uygulaması
7 Ağaçlar (Devam): Tanımlar, İkili Ağaçlar ve İkili Ağaçlar Üzerindeki Dolaşma İşlemleri, İkili Arama Ağaçları, Ağaçlara Eleman Ekleme ve Silme İşlemleri, Ağaç Örnekleri. İkili Arama Ağacı Uygulaması
8 Ara sınav
9 Algoritmaların Karşılaştırılması: Algoritmalarda Karmaşıklık ve Zaman Karmaşıklığı Analizi, Sıralama Tekniklerinin Etkinlikleri ve Analizi. Sıralama Algoritması Uygulaması
10 Çizgeler 1: Çizge Tanımları ve Uygulamaları, Bilgisayarda Gösterimleri, Komşuluk Matrisi, Çizgelerde Dolaşma, Derinlik Öncelikli Dolaşma, Genişlik Öncelikli Dolaşma. Bir program içerisinde Çizge temsil etme
11 Çizgeler 2: En Kısa Yol Algoritmaları (Dijkstra's, Floyd-Warshall) En Küçük Kapsayan Ağaç (MST) Algoritmaları (Prim's, Kruskal's). Çizge Algoritmaları Programlama
12 Yığın Ağacı, Dengeli Ağaçlar (AVL Ağacı, B-Tree, B+ Tree, …), Trie AVL Ağacına Eleman Ekleme
13 Hash Tablosu C#'ta Hazır Veri Yapıları ve Koleksiyonlar : “Stack”, “ArrayList, “Hashtable”, "sort", “binarySearch”, ... Dinamik Programlama Topluluklar
14 Güncel ve ileri düzeyli problem örnekleri, uygulamaları, NP-Tam Problemler Proje Kontrolleri
15 Topolojik Sıralama, Huffman Kodlama Ağacı, Dönem Değerlendirmesi. Proje Kontrolleri
16 Final Sınavı

Lafore, R., “Data Structures and Algorithms in Java”, Second Edition, Sams Publishing, (2003). (Ders Kitabı) Goodrich, M.T., Tamassia, R., "Data Structures and Algorithms in Java 6th Edition", Wiley, 2014. Drozdek, A., “Data Structures and Algorithms in Java 4th Edition", Cengage Learning Asia, 2013. Weiss, M.A., “Data Structures and Problem Solving Using Java (Fourth Edition)”, Addison-Wesley, 2010. C && Java ile Veri Yapılarına Giriş, Olcay Taner YILDIZ, Boğaziçi Üniversitesi Yayınevi, 2013. Algoritma Geliştirme ve Veri Yapıları, Dr. Rıfat ÇÖLKESEN, Papatya Yayıncılık, 2011.



Yarıyıl (Yıl) İçi Etkinlikleri Adet Değer
Ara Sınav 1 50
Ev Ödevi 4 50
Toplam 100
Yarıyıl (Yıl) Sonu Etkinlikleri Adet Değer
Final Sınavı 1 100
Toplam 100
Yarıyıl (Yıl) İçi Etkinlikleri 40
Yarıyıl (Yıl) Sonu Etkinlikleri 60

Yok


Etkinlikler Sayısı Süresi (saat) Toplam İş Yükü (saat)
Ara Sınav 1 2 2
Final Sınavı 1 2 2
Derse Katılım 14 3 42
Laboratuvar 14 1 14
Rapor Hazırlama 4 4 16
Proje Hazırlama 4 6 24
Ara Sınav İçin Bireysel Çalışma 1 15 15
Final Sınavı içiin Bireysel Çalışma 1 21 21
Okuma 14 1 14
Toplam İş Yükü (saat) 150

PÇ 1 PÇ 2 PÇ 3 PÇ 4 PÇ 5 PÇ 6 PÇ 7 PÇ 8 PÇ 9 PÇ 10 PÇ 11
ÖÇ 1 5 3 3 3 2
ÖÇ 2 5 5 3 4 4 2
ÖÇ 3 5 4 4 4 3 2
ÖÇ 4 3 4 2 3 2
ÖÇ 5 3 3 3 3 3 2 2 2
ÖÇ 6 3 3 3 3 3 2
ÖÇ 7 5 5 4 4 4 2 3
ÖÇ 8 3 3 3 3
ÖÇ 9 3 4 4 4
* Katkı Düzeyi : 1 Çok düşük 2 Düşük 3 Orta 4 Yüksek 5 Çok yüksek