DATA
STRUCTURES
Duyuru 17: Bütünleme Sınavı
Sonuçları ve Ortalamalar (Güncelleme (01.02.2019): Final Listesinden
Bütünleme Listesine aktarırken gözden kaçan öğrenciler listeye eklenmiştir)
Dönem içi durum ve sınav kağıtları
gibi unsurlar dikkate alınarak gerekli kanaat kullanılmıştır.
Not: Tarık TAŞPINAR, EBYS not girişi kısmında kaydın görünmüyor.
Dekanlık öğrenci işleri bürosuna danışarak bana bilgi verirsen ona göre işlem
yapabilirim.
Duyuru 16: Final Sınavı
Sonuçları ve Ortalamalar
Harf notu yükseltmek için
istekte bulunmayınız. Final Sınavı notuna 3 puan eklenmiş ve bonus ödevler verilmiştir. Bütünleme Sınavına girme
seçeneği de bulunmaktadır.
Proje notu işlenmemiş
öğrenciler, a) Proje Raporu teslim etmemiş b) Kodları
yüklememiş veya c) İlgili Projede kontrole gelmemiş olabilirler. Bu durumda olan
az sayıda öğrenci, ilgili lab. asistanları
ile 2 gün içinde görüşebilirlerse değerlendirmede belli ölçüde dikkate
alınabilir.
Bütünleme Sınavı içeriğinin Final Sınavı
içeriği ve şablonuna yakın olması planlanmıştır. Aynı şekilde son konular
ağırlıklı olacak, konulara göre puan dağılımı yakın olabilecektir. Huffman Kodlama Ağacı ve Şekilli sorular benzer
içeriklerle farklı değer ve yapılarda sorulabilecektir. Tanımlar,
karşılaştırmalar, program yazma ve çoktan seçmeli sorular da olacaktır. Bir
kısmı tamamen değiştirilebilecektir (Farklı problem, tanım ve karşılaştırmalar
gibi). Dönemiçi ortalaması 20 ve üstü olan
öğrencilerin bütünlemeye çok iyi çalışmaları durumunda dersi geçme ihtimali
bulunmaktadır. Dersi geçme amaçlı sınava girecek öğrencilerin 60 ortalamaya
yaklaşmaları durumunda belli bir puana kadar kanaat kullanılabilecektir. Not
yükseltmek için girmek isteyenlerin ise daha iyi hazırlanmaları gerekmektedir,
ek puan verilmeyecektir.
Duyuru 15: Final Sınavı Öncesi
Notlar
Duyuru 14: Proje 3 Notları
Duyuru 13: Final Sınavı İçeriği
Tahmini içerik (Değişebilir):
1)
Çizgeler konusunda verilen bir veya iki problemin (çizge dolaşma, en kısa yol
vb. konularla bağlantılı) çözümü / metot yazımı ve açıklanması (15) [kod]
2)
Java/C#’ta istenen bileşik
veri yapısının tanımlanması, … (5) [kod]
3)
Huffman
Kodlama Ağacı: Verilen bir metnin Huffman
Ağacının Oluşturulması (şekil çizerek) ve metot yazımı (20) [kod+şekil]
4)
Tanımlar, Karşılaştırma, Yorum (10)
5)
Şekilli Sorular [Heap
Ekleme ve Silme, AVL Tree Ekleme, B-Tree Ekleme] (15)
6)
Çoktan Seçmeli Test (36)
Deneme sınavından %45 zor olması düşünülmektedir.
Kaynaklar
Ders Notları, Slaytları
Ders Kitabı (Lafore)
Sınıfta Anlatılanlar ve Tahtaya Yazılanlar
Proje 3B, 3A, 4B ve 4A, Practise
Exam, Quiz 2012 ve Quiz 2011, Practise Questions for Final Exam (Complexity, Advanced Trees); ilgili dosyalara MOODLE’dan
ulaşılabilir.
Short Answers and
Multiple Choices
(bağlantısındaki ilgili konular).
Yöntem:
Özellikle
son haftaların ders notlarındaki kavramları öğrenin, işlemleri anlayın.
Alıştırmaları
çözün, Kod/Algoritma Yazarak Çalışın, Veri Yapıları üzerinde şekil çizerek veya
çizgelerde tablo kullanarak işlem yapın.
Derste geçen yerleri ders kitabından da okuyun.
Test soruları için Ders kitabı bölüm sonu Questions bölümündeki sorulara da çalışılabilir. Ancak
sınavda, daha kaliteli test soruları yer alabilecektir.
Soruları paylaşarak çözmek ve çözümleri paylaşarak
tartışmak veriminizi artırabilir.
Sınava çalışın, ancak yorgun/uykusuz gelmeyin (tüm
finaller için önceden çalışma planı yapın). Soruları anlayabilmek ve fikir
yürütebilmek için biraz dinlenmiş olmak yararlı olmaktadır.
Final Sınavı İçin Ağırlıklı Konular:
·
Tanımlar,
Karşılaştırma, Yorum, Veri Yapıları Üzerinde İşlemler, Kod Yazımı
·
Çizgeler,
Dengeli Ağaçlar, Algoritmaların Karşılaştırılması (Karmaşıklık) ve Diğer Son (Arasınav sonrası) Konular Ağırlıklı
·
Kodlaması/Sözdekodu Bilinmesi Gereken Çizge Algoritmaları: 1) Dijkstra’s SP, 2) Breadth-First
Traverse, 3) Depth-First Traverse, 4) 1 adet Minimum Spanning
Tree Algoritması, 5) Floyd-Warshall
Bunların Kodlanabilmesi Soru Çözümünde Yardımcı
Olacaktır. Tümü derste anlatılmıştır. Java Kodları Ders kitabında yer
almaktadır. Oradan da okunması yararlı olacaktır. Finale özgü olarak, düzgün
bir şekilde yazılan SözdeKod (Pseudocode)
veya C dili kodu da kabul edilecektir. SözdeKod’lar
ders slaytlarında verilerek anlatılmıştır; C dili ile yazmayı tercih edenler,
belirtilen algoritmaların kodlarını internetten bulabilirler. Sınavda, C#,
Java, C ve SözdeKod’dan istediğinizi tercih
edebileceksiniz.
Diğerlerinin Mantıkları, İşleyişi, Özellikleri ve
Tanımlarının Bilinmesi Yeterli
·
Ağaçlar [Heap, AVL Tree, BTree, B+Tree, Huffman Encoding Tree, Trie]
·
NP-Complete
Problemler, Hash Table, Dynamic Programming, …
·
Öncelikli
Kuyruk [Hazır Öncelikli Kuyruk Kullanımı da sorulabilir]
·
Sıralama
Mantıkları
·
ArrayList, List veya Vektörler [Eleman ekleme ve silme komutları vs. bilinmelidir, sınavda
hatırlanamazsa ekle ve sil metotları denilerek kullanılabilir], Diziler
·
Kuyruk, Yığıt
***********************************
Bağlaçlı Listeler [sorulması
çok düşük olasılık], Özyineleme [sorulması çok düşük olasılık]
Final Sınavına Dahil
Olmayanlar:
Visual Studio IDE, Eclipse, NetBeans ortamları
C#/Java ile GUI Tasarımı, Formlar
C#/Java Debugging Seçenekleri
Dillerin tarihçesi
Kalıtım (Inheritance)
İndeksleyiciler (Indexers)
Hazır Comparator/Comparable Sınıfları
C#/Java Collections
içerisinde bulunan hazır Tree, HashTable,
LinkedList sınıflarının kullanımı
Dosya İşlemleri
Pointer’lar
Infix-Postfix
Çizim (GDI+ gibi)
Red-Black Tree Algoritmasının
Ekle Sil vs. Fonksiyonlarının Yazımı [Ancak
ne olduğu, karşılaştırma, tanımı vs. sorulabilir]
2-3-4 Tree Algoritmasının
Ekle Sil vs. Fonksiyonlarının Yazımı [Ancak
ne olduğu, karşılaştırma, tanımı vs. sorulabilir]
B-Tree’lerde Silme
Algoritması
İkili Arama
Ağacından Silme Algoritmasının / kodunun yazımı (Ancak mantığını bilmek
gerekli, şekilli sorularda yer alabilir)
Mühendislik Sunumu
Mobil
Programlama Sunumu
Python
Genetik
Algoritmalar
Yapay Sinir
Ağları
Finalde genelde metotları ile birlikte bütün bir sınıf
tasarımının yapılması istenmemektedir, metot/yöntem/algoritma geliştirilmesi
istenmektedir.
Bununla bağlantılı olarak çözümlerde sözdekod da kabul edildiği için, C# veya Java dilinin
kodlama detaylarına daha az çalışılması yeterli olmaktadır. Sözdekod
yerine C benzeri kodlamaya da izin verilmektedir.
Duyuru
12: Projeler Hakkında
P2B
ve P2A’yı aynı anda yapanların daha yüksek olan notu sayılmıştır.
P2A
kontrol ettirmemiş olanlar en kısa sürede dersin asistanlarına kontrol
ettirsinler.
P3A
kontrolü:
·
100 puanlık
kısmı tam yapıp en az 1 öneri sistemi tamamlayanlar projelerini 25.12.2018 Salı
günü dersten sonra dersin öğretim üyesine,
·
Diğer
öğrenciler Lab günü dersin asistanlarına
kontrol ettirebilirler.
P4A’nın
ise makine başında kontrolü yapılmamakta, rapor çıktısı ve moodle’a
yüklenen dosyalardan incelenerek notlandırılmaktadır.
Duyuru
11: Mazeret Arasınav Notları: Ufuk:34, Aygen:64,
Serhat:71
Duyuru 10: Proje 4’teki Bazı Araştırma Konuları için
Başlangıç Linkleri
DYNAMIC PROGRAMMING
(Dinamik Programlama)
Proje 4 son
yükleme tarihi 28 Aralık 2018 Cuma 21:00‘dir.
P4A dersin hocasına, P4B dersin asistanlarından herhangi birisine teslim
edilebilir.
Proje 4B, MST, BFT ve DFT için ders kitabındaki
örnekler kullanılabilir (inceleyip anladıktan sonra). Ayrıca, sadece MST kodunu
kısaca açıklamanız (sınıflar ve metotlar) ve proje ile beraber teslim etmeniz
de istenmektedir. MST için, Ch. 14 Weighted Graphs bölümündeki mstw kodu kullanılmalıdır (önceki bölümdeki değil), doğal
olarak. Prim’in Algoritmasının gerçekleştirimidir.
Proje 4B Rapor formatı:
·
Maddeler sıra
ile yapılacaktır.
·
Yazılması,
yapılması, çizimi istenen sorular kalemle yazılarak raporu oluşturacaktır.
İlgili kod parçaları yazılarak ve ekran görüntülerinin yazıcı çıktıları
alınarak raporda ilgili maddelere eklenmelidir.
·
Kodlar ayrıca MOODLE’a da yüklenecektir.
Duyuru 9: C’de Kod Örnekleri (Prim’s,
Kruskal’s, …)
http://www.cs.sunysb.edu/~skiena/algorist/book/programs/
http://compprog.wordpress.com/2007/11/09/
http://www.technical-recipes.com/2011/implementing-kruskals-algorithm-in-c/
http://www.codeproject.com/KB/recipes/Kruskal_Algorithm.aspx
http://ds4beginners.wordpress.com/2006/10/05/kruskals-algorithm-for-minimum-spanning-tree/
http://perkinsg.tripod.com/c_source_code/kruskal.c
Duyuru 8: QUIZ. Bu sene Quiz yapılmayacaktır. Ancak final sınavına hazırlık için Quiz’in yazıcı çıktısını alıp, çözerek konuları öğreniniz,
kendinizi test ediniz. Çizgeler için çalışma soruları içermektedir.
Not değeri olmadığı için teslim edilmeyecektir;
öğrenilmesi Final sınavında yararlı olabilecektir.
QUIZ’in çözümünde öncelikle soruların çok iyi okunması
gerekmektedir. Soruları anladıktan sonra, varsa ilgili terminoloji eksikliği
ders notlarından okunarak giderilmelidir. Örnek: Connected
Graph’ın (Bağlı Çizge) ne olduğu ders notlarında
bulunup ilgili derste tahtada örnekler verilerek de anlatılmıştır. Soruda ne
istendiği anlaşıldıktan nasıl yapılacağı planlanmalıdır.
1.
soruda, şeklin
altına öncelik kuyruğunu da adım adım çizerek çözmek daha teknik bir yöntemdir
(MST sunumu son slaydında olduğu gibi). Alternatif olarak (verilen az sayıda
düğüm içeren bir çizge olduğundan), her bir kenarın eklenişini yandaki
kutulara, çizge düğümleri ve o ana kadar eklenmiş olan kenarlarla birlikte
çizerek gösterme yöntemi tercih edilebilir. Bu durumda sorunun altındaki boş
bölüm, üç yeni çizge yerleştirmek için kullanılabilir.
Sorunun çözümünde, sınıfta belirttiğim yönteme göre,
GRAPHS-II sunumu 10 veya 12. sayfalardaki sözdekodlar
kullanılarak (ek yapılarak) basit bir metot geliştirilebilir/ sözdekod yazılabilir.
Duyuru 7: Proje 3A ve Proje 3B için Yer
Ağaçlarını oluştururken, listede veya ilgili veri yapısında Yer Adını Tree sınıfından ayrı tutmak yerine ağacın içinde
tanımlarsanız işlemleriniz kolaylaşabilecektir (ayrı bir sınıf oluşturmanıza
gerek kalmaz).
Duyuru 6: Arasınav Sonuçları
Arasınav Soru, Cevap ve Kaynak Kodları için MOODLE’a
bakınız. Kağıdını görmek isteyenler, 13.12.2018 Perşembe günü 15:00 gibi öğretim üyesine uğrayabilirler.
Duyuru 5: Arasınav Hakkında
Ağırlıklı Konular
Ağaçlar,
Özyineleme
ArrayList / List
Yığıt, Kuyruklar, Öncelikli Kuyruklar
Dizi
Infix, Postfix
Bağlaçlı Listeler
IEEE 754 Standardı
Kaynaklar
Ders Notları
Ders Kitabı (Lafore)
Sınıfta Anlatılanlar
Ders Notlarındaki (diğer kitap veya kaynaklardan da
araştırabilirsiniz) Alıştırmaları Çözün, Kod Yazarak Çalışın. Soruları
paylaşarak çözmek ve çözümleri paylaşarak tartışmak veriminizi artırabilir.
2011-2012 Fall Midterm
Exam : Questions , Answers and Source
Codes
2010-2011 Fall Midterm
Exam : Questions , Answers and Source
Codes
2009-2010 Fall Midterm
Exam : Questions , Answers and Source Codes
2008-2009 Fall Midterm
Exam : Questions , Answers and Source Codes
2012-2013 Fall Midterm
Exam : MOODLE’da
2013-2014 Fall Midterm
Exam : MOODLE’da
2014-2015 Fall Midterm
Exam : MOODLE’da
2015-2016 Fall Midterm
Exam : MOODLE’da
2016-2017 Fall Midterm
Exam : MOODLE’da
2017-2018 Fall Midterm
Exam : MOODLE’da
Test soruları için Ders kitabı bölüm sonu Questions bölümündeki sorulara çalışılabilir. Ancak sınavda,
daha kaliteli test soruları yer alabilecektir.
Muhtemel İçerik (1 ve 2. sorular C#/Java’da Kod yazımı
şeklinde) [İçerik, puanlamalar ve soru sayısı değişebilir]
1) Ağaçlar + Özyineleme (Metot, Düğüm, Sınıf yazımı)
[35%]
2) ArrayList / List + Yığıt, Kuyruk, Öncelikli Kuyruk ve sınıf yapısı (sınıf kodu
yazımı) (bileşik veri yapısı) (Sınıf, metot, metoda değer aktarma, sınıf
değişkeni tanımlama, gibi temel kavramlar bilinmeli) [25%]
3) Ağaç ekleme / silme (kodsuz / verilen işlemleri
şekildeki ağaç üzerinde gerçekleştirerek ağacın yeni şeklini çizme) [10%]
4)
Çoktan Seçmeli
TEST (8 + 1 soruluk) [%30]
Sınava Dahil Olmayanlar
Visual Studio IDE, Eclipse, NetBeans ortamları
C#/Java ile GUI Tasarımı, Formlar
C#/Java Debugging Seçenekleri
Python
Kalıtım (Inheritance)
İndeksleyiciler (Indexers)
Hazır Comparator/Comparable Sınıfları
Hazır LinkedList Sınıfı
Dosya İşlemleri
Ağaçtan Silme Algoritması (Arasınavda, 2013-2014 arasınavındaki
gibi bir şekil verilerek ağaçtan belirtilen düğümün silinmesi istenebilir.
Olmayan, ağaçtan silinme algoritmasının veya kodunun yazılmasıdır. Silme
mantığının bilinmesi arasınav için yeterlidir.)
Dillerin tarihçesi
Arasınava özgü olarak : Sözdekod
(Pseudocode) standardı bilmeye gerek yok.
Ancak C#/java kodu yazamayanlar,
standarda uygun algoritma yazarlarsa yarı puana kadar değerlendirilebilir
Mühendislik
(Engineering) Sunumu
Alıştırmalar ve
Çalışma Soruları
Duyuru 4: ÖNEMLİ
Data Structures dersi Proje 1
Kontrolleri 08.11.2018 Perşembe günü yapılacaktır. Kontrol çizelgesine
https://drive.google.com/open?id=1W57lan8BGxaSjL_ytsR7jHDxRZDbQ-FL
adresinden ulaşabileceksiniz.
Bağlantıda başta yer alan bilgilendirmeyi okumanız
önerilir.
Projeler 13:00'ten başlayarak
kontrol edileceğinden dolayı lab 6 etkinliği haftaya
yapılacaktır.
Duyuru 3: Veri Yapıları (ve Algoritmalar) Etkileşimli
Görselleştirme Araçları (İlgilenenler ve özellikle denemelerle öğrenenler için
yararlı)
https://www.cs.usfca.edu/~galles/visualization/Algorithms.html
https://www.cs.usfca.edu/~galles/visualization/
https://5mins.wordpress.com/2011/04/29/data-structure-visualizations/
http://btv.melezinek.cz/home.html
https://www.educative.io/collection/10370001/760001
Duyuru 2: Lab.
dersinden önce MOODLE üzerinden derste verilecek
şifreyle (_18 ile biten ) Data Structures dersine
kayıtlanma işleminizi tamamlamış olmanız önerilir. 2018-2019 öğretim yılı Data Structures (DS_204_2018) dersine kayıtlanmalısınız.
Duyuru 1: Data Structures Dersi Lab. Grupları
Dersin ilk Labı, 4 Ekim 2018 Perşembe günü yapılacaktır.
Diğer derslerinizle lab. oturumunuz arasında herhangi
bir çakışma durumu varsa:
·
Diğer saatteki (size uygun) lab
oturumlarından bir arkadaşınızı bulun, karşılıklı yer değişimi konusunda
anlaşın.
·
Yer değişikliği isteğinizi dersin asistanına lab.
saati başında veya ders asistanlarının herhangi
birisinin ofis saatinde belirtin.
Bu işleminizi 5
Ekim’den önce gerçekleştirin.