Email: levent.bayindir@atauni.edu.tr

BIM-203 – Veri Yapıları ve Algoritmalar

Bu dersin amacı öğrencilere programlamanın önemli altyapılarından olan veri yapıları ve algoritmaları öğretmektir. Öğrenciler bu ders kapsamında, karşılaştıkları problemlerde eldeki veri yapılarından hangilerini kullanmalarının daha iyi olduğunu, eğer bu veri yapıları ihtiyacı karşılamıyorsa ne tür bir veri yapısı tasarlamaları gerektiğini öğrenecektir. Derste ayrıca algoritmalar arası nasıl bir karşılaştırma yapılabileceği, hesaplama karmaşıklığının nasıl bulunacağı öğretilecektir. İşlenen konular teorik olarak anlatılmanın yanında bu veri yapıları ve algoritmaların Python programlama dilinde nasıl pratik kullanıma geçirilebileceğini de öğreneceklerdir.

Ders Asistanı: Arş. Gör. Şeyma YÜCEL ALTAY
Ofis saati:


Duyurular

  • 03.01.2018 Vize notlarınızı bu dosyadan öğrenebilirsiniz.
  • 11.12.2017 Proje 1 ile ilgili duyurular:
    • Proje metninde bahsedilen ve telefonla kaydı yapılacak sunum için sınıf ayarlanmayacaktır. Eşleştirilen gruplar kendi aralarında anlaşarak ayarladıkları sessiz ve rahat bir ortamda sunumlarını yapacaklardır. Sunumlar kişisel bilgisayarınız kullanılarak yapılacaktır. Sunumlar için grup eşleşmeleri (hangi grubun hangi gruba sunacağı) asistanınızın odasının kapısında duyurulacaktır (en geç yarın). Oradan takip ediniz.
    • 3 ve 4’üncü aşamaları için değerlendirmelerin hangi tarih ve saatte yapılacağı asistanınızın kapısında duyurulacakıtr.
    • Önceki aşamalara ait notlar ve diğer ödev notlarınız asistanınızın kapısında duyurulacaktır.
    • Herhangi bir maduriyet yaşamamanız için asistanınızın kapısındaki duyuruları takip etmeniz gerekmektedir.
  • 31.10.2017 Proje 1 grup ve konu dağılımlarının güncellenmiş haline buradan ulaşabilirsiniz.
  • 30.10.2017 Proje 1’in ilk ve ikinci aşamalarının teslim tarihi vizelerden dolayı şu şekilde değiştirilmiştir. Aşama 1: 19.11.2017 ve Aşama 2: 30.11.2017. Diğer aşamaların teslim tarihleri değiştirilmemiştir.
  • 30.10.2017 Proje 3 son teslim tarihi 04.11.2017 olarak değiştirilmiştir.
  • 30.10.2017 Proje 1 gruplarına ve konu dağılımına buradan ulaşabilirsiniz. Proje 1 teslim tarihleri değiştirilmemiştir.
  • 23.10.2017 Proje 3 dokümanına buradan ulaşabilirsiniz. Teslim tarihi: 01.11.2017
  • 23.10.2017 Proje 1 dokümanına buradan ulaşabilirsiniz. Teslim tarihleri doküman içerisindedir.
  • 16.09.2017 Dersin web sayfası yeni dönem için güncellendi.

Ders Saati ve Yeri

    • Örgün Öğretim: Perşembe, 14-17 arası, TRSE1
    • İkinci Öğretim: Pazartesi, 19-22 arası, E2

Notlandırma

Notlandırma yüzdeleri, %50-50 ve %60-40 not sistemlerinin her ikisi için de geçerlidir.

    • Ödevler ve Proje (%30)
    • Vize (%20)
    • Final (%50)

Ödevler ve Proje

  • Derste 4 ödev (toplam %15) ve 1 proje (%15) verilecektir.
  • Ödevler 1-2 haftalık sürelerde yapılacak küçük çapta uygulamalardır. Ödevlerin amacı öğrencinin veri yapıları konusunda uygulama yaparak bilgi ve tecrübesini arttırmasıdır.
  • Proje ise çeşitli aşamlar halinde dönem boyunca üzerinde çalışılacak bağıl olarak daha kapsamlı ve zor bir uygulamadır. Uygulamanın aşamaları projeden projeye farklılık gösterebilecektir.
  • Proje aşamalarındaki çıktılar ve teslim tarihleri dersin hocası ve asistanı tarafından belirlenecek ve sözlü olarak da değerlendirilecektir.
  • Projenin amacı ise öğrencinin bir veya daha fazla gerçek hayat problemi üzerinde çalışarak, büyük çaplı işlerin adım adım nasıl çözüldüğünü gözlemlemesi, kendisini iş hayatına hazırlayacak becerileri kendi başına elde etmesi gerektiği ve bunu kendi başına ve/veya grup olarak yapabileceğini algılamasını sağlamaktır.
  • Proje öğrenciden öğrenciye farklılık gösterdiğinden, öğrenciler farklı zorluk derecelerinde işler yapabileceklerdir. O nedenle proje değerlendirmesi ulaşılan sonuçtan çok öğrencinin proje süresince sarfettiği çaba ve kazandığı tecrübeler ışığında değerlendirilecektir.

Ders Kitapları

    • Data Structures and Algorithms in Python, M. T. Goodrich, R. Tamassia ve M. H. Goldwasser, Wiley, 2013.
    • Introducing Python – Modern Computing in Simple Packages, Bill Lubanovic, O’Reilly Media, 2015.

Ders Çizelgesi ve Ders Notları

Hafta Konu(lar)
1 Temel Python Programlama (1/2)
IPython, Anaconda, PyCharm, Comments, Basic Types: Integer, Float, Complex, Boolean and Fraction, Operators, Operator Presedence, Type Conversion, Reserved Words, String, Getting User Input and Control Flow: if/elif/else, for/range, while/break/continue, List, Dictionary, Tuple and Set
2 Temel Python Programlama (2/2)
Functions: Function definition, Return statement, Parameters, Passing by value, Global variables, Variable number of parameters, Docstrings, Functions are objects and Methods, Exception handling, Object-oriented programming, Reusing code: scripts and modules, Scripts, Importing objects from modules, Star import, Creating modules, Module caching, ‘main’ and module loading, Scripts or modules? How to organize your code and Packages, Good practices, Input and Output
3 Algorithm Analysis
ExperimentalStudies, The Seven Functions Used in This Course, Asymptotic Analysis, Simple Justification Techniques
4 Recursion
Illustrative Examples, Analyzing Recursive Algorithms, Recursion Run Amok, Further Examples of Recursion, Designing Recursive Algorithms, Eliminating Tail Recursion
5 Array-Based Sequences
Python’s Sequence Types, Low-Level Arrays, Dynamic Arrays and Amortization, Efficiency of Python’s SequenceTypes, Using Array-Based Sequences, Multidimensional Data Sets
6 Stacks, Queues, and Deques
Stack, Queues, Double-Ended Queues
7 Linked Lists
Singly Linked Lists, Circularly Linked Lists, Doubly Linked Lists,
The Positional List ADT, Sorting a Positional List, Case Study: Maintaining Access Frequencies, Link-Based vs. Array-Based Sequences
8 VİZE
9 Trees
General Trees, Binary Trees, Implementing Trees, Tree Traversal Algorithms, CaseStudy: An Expression Tree
10 Priority Queues
The Priority Queue Abstract Data Type, Implementing a Priority Queue, Heaps, Sorting with a Priority Queue, Adaptable Priority Queues
11 Maps, Hash Tables, and Skip Lists
Maps and Dictionaries, Hash Tables, Sorted Maps, Skip Lists, Sets, Multisets, and Multimaps
12 Search Trees
Binary Search Trees, Balanced Search Trees, AVL Trees, Splay Trees,
(2,4) Trees, Red-Black Trees
13 Sorting and Selection
Why Study Sorting Algorithms?, Merge-Sort, Quick-Sort, Studying Sorting through an Algorithmic Lens, Comparing Sorting Algorithms, Python’s Built-In Sorting Functions, Selection

Ders Kitabında Atlanan Kısımlar

Ders kitabından olabildiğince çok konu işlenebilmesi için bazı bölümlerin atlanması gerekmektedir. Atlanan bölümler aşağıda listelenmiştir.

  • Bölüm 1 ve 2: Tüm alt bölümler. Bu bölümlerde Python anlatılmaktadır. Python anlatımında kendi ders notlarımı (Jupyter defterleri) kullanıyorum.
  • Bölüm 3: 3.3 altındaki Big-Omega ve Big-Theta anlatılmamaktadır. “3.4 Simple Justification Techniques” bölümü de anlatılmamaktadır.
  • Bölüm 4: 4.2 altındaki “Analyzing Recursive Algorithms” bölümü anlatılmamaktadır.

Diğer Kaynaklar

Contact us

We're not around right now. But you can send us an email and we'll get back to you, asap.

Questions, issues or concerns? I'd love to help you!

Click ENTER to chat