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

 

Proje 2 Notları

 

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

BTREES

DYNAMIC PROGRAMMING (Dinamik Programlama)

ARTIFICIAL NEURAL NETWORKS

GENETIC ALGORITHMS

TRIE

STRONGLY CONNECTED COMPONENT

AVL-Tree Insertion

 

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

http://visualgo.net/

http://algoviz.org/

 

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.