2021 - 2022 / 501003522015 - ANALYSIS OF ALGORITHMS / ANALYSIS OF ALGORITHMS
GENEL TANIM / GENERAL DESCRIPTION
Ders Adı / Course Name ANALYSIS OF ALGORITHMS / ANALYSIS OF ALGORITHMS Ders Kodu / Course Code 501003522015
Ders Türü / Course Type
Ders Seviyesi / Course Level First Cycle / First Cycle
Ders Akts Kredi / ECTS 4.00
Haftalık Ders Saati (Kuramsal) / Course Hours For Week (Theoretical)
3.00
Haftalık Uygulama Saati / Course
Hours For Week (Objected) 0.00 Haftalık Laboratuar Saati / Course
Hours For Week (Laboratory) 0.00 Dersin Verildiği Yıl / Year 3
Öğretim Sistemi / Teaching System Face to Face / Face to Face Eğitim Dili / Education Language English / English
Ön Koşulu Olan Ders(ler) /
Precondition Courses 107 Algoritma ve Programlama I, 112 Algoritma ve Programlama II 107 Algorithms and Programming I, 112 Algorithms and Programming II Amacı / Purpose Bu ders, gerçek yaşam problemlerine çözüm tasarlamada kullanılabilecek temel
algoritmalar ve algoritma tasarım tekniklerini öğretir. Bu dersin amacı, öğrencilerin (i) bir problem için derste tartışılan metodları kullanarak yeni algoritmalar tasarlayabilmesi,(ii) bir algoritmayı bellek kullanımı ve çalışma süresi gibi çeşitli performans kriterlerine göre analiz edebilmesi ,(iii) çözülecek problem için en uygun algoritmayı seçebilmesi (iv) bir algoritmayı verimli bir şekilde uygulayabilmesi,için bilgi ve yetenekler kazandırmaktır.
This course teaches students to use the fundamental algorithms and algorithm design techniques in designing solutions to real-life problems. The purposes of this course, students (i) to design new algorithms for a problem using methods discussed in the course, (ii) to analyze an algorithm according to various performance criteria such as memory usage and running time, (iii) to choose the most appropriate algorithm for the problem to be solved (iv) to teach the knowledge and skills for an efficient way to apply an algorithm
İçeriği / Content Temel tanımlar ve veri yapıları. Algoritma analizine giriş. Zaman ve Uzam karmaşıklığı.
Standard algoritma tasarım teknikleri: Böl-ve-Ele Geçir metodu, dinamik programlama, Dallan-ve-Sınırla, Geri-adım-atma, İteratif İyileştirme vb. metodlar. Temel algoritmalar;
sıralama ve arama algoritmaları, çizge algoritmaları. Karmaşıklık sınıflarına giriş. NP-Zor ve NP-Tam Problemlerine giriş.
Basic definitions and data structures. Introduction to algorithms analysis. Complexity of time and space. Standard algorithm design techniques: Divide-and-Conquer method, dynamic programming, Branch-and-Bound, back-step-throwing, Iterative Improvement etc. methods. Basic algorithms; sorting and searching algorithms, graph algorithms. Introduction to complexity classes. Introduction to NP-hard and NP- Complete Problems
Önerilen Diğer Hususlar / Recommended Other Considerations
C ve Java programlama bilgisi C and Java programming information
Staj Durumu / Internship Status Yok None
Kitabı / Malzemesi / Önerilen Kaynaklar / Books / Materials / Recommended Reading
DERS KİTABI:
Introduction to the Design & Analysis of Algorithms , Anany Levitin, Addison Wesley; 2 edition, 2006 ISBN-10: 0321358287 ISBN-13: 978-0321358288
YARDIMCI KİTAPLAR:
Algorithm Design, Jon Kleinberg, Éva Tardos, Addison Wesley; 2006; ISBN-10:
0321372913 ISBN-13:9780321372918
Introduction to Algorithms, Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein, The MIT Press; 2nd edition, 2001 ISBN-10: 0262032937 ISBN-13: 978- 0262032933
TEXTBOOK:
Introduction to the Design & Analysis of Algorithms, Anany Levitin, Addison Wesley, 2 edition, 2006 ISBN-10: 0321358287 ISBN-13: 978-0321358288
HELP BOOKS:
Algorithm Design, Jon Kleinberg, Éva Tardos, Addison Wesley, 2006; ISBN-10:
0321372913 ISBN-13: 9780321372918
Introduction to Algorithms, Thomas H. Cormen, Charles E. Leiserson, Ronald L.
Rivest, Clifford Stein, The MIT Press, 2nd edition, 2001 ISBN-10: 0262032937 ISBN- 13: 978-0262032933
Öğretim Üyesi (Üyeleri) / Faculty
Member (Members) Doç. Dr. Hasan Bulut
ÖĞRENME ÇIKTILARI / LEARNING OUTCOMES
1 Algoritma analizi için gerekli matematiksel bilgileri kullanabilme To use the mathematical information necessary for the algorithm analysis
2 Algoritmaların uzamsal ve zamansal karmaşıklığını analiz edebilme To analyze spatial and temporal complexity of algorithms
3 Algoritmaların uzamsal ve zamansal karmaşıklığını gözönüne alarak değişiklikler yapıp performası
artırabilme To increase performance making changes based on spatial and temporal complexity of algorithms
4 Algoritma tasarım tekniklerini kavrayabilme To understand the algorithm design techniques
5 Algoritma tasarım teknikleri kullanarak yeni problemler için algoritmalar tasarlayabilme To design algorithms for new problems by algorithm design techniques
6 Çözülecek problem için en uygun algoritmik tekniği seçebilme To select the most suitable algorithmic technique for the problem to be solved
7 Bir problemi alt problemlere bölebilme To divide a problem to sub-problems
HAFTALIK DERS İÇERİĞİ / DETAILED COURSE OUTLINE
Hafta / Week
1
Teorik Dersler / Theoretical Öğretim Yöntem ve
Teknikleri/Teaching Methods Techniques
Ön Hazırlık / Preliminary
Uygulama Lab
Algoritma Analizinin Temelleri Basics of Algorithm Analysis
. Analysis Framework: O, Θ, Ω notations
. Mathematical Analysis: recursion and non-recursion algorithms
2
Teorik Dersler / Theoretical Öğretim Yöntem ve
Teknikleri/Teaching Methods Techniques
Ön Hazırlık / Preliminary
Uygulama Lab
Algoritma Analizinin Temelleri Basics of Algorithm Analysis
. Analysis Framework: O, Θ, Ω notations
. Mathematical Analysis: recursion and non-recursion algorithms
3
Teorik Dersler / Theoretical Öğretim Yöntem ve
Teknikleri/Teaching Methods Techniques
Ön Hazırlık / Preliminary
Uygulama Lab
Kaba Kuvvet Brute Force
. Brute Force Algorithm . Consumer search method
4
Teorik Dersler / Theoretical Öğretim Yöntem ve
Teknikleri/Teaching Methods Techniques
Ön Hazırlık / Preliminary
Uygulama Lab
Böl ve fethet Divide and Conquer
. Divide and Conquer: Merge Sort . Quick Sort, Binary Search
5
Teorik Dersler / Theoretical Öğretim Yöntem ve
Teknikleri/Teaching Methods Techniques
Ön Hazırlık / Preliminary
Uygulama Lab
Azalt ve Fethet Decrease and Conquer
. One-to-Decrease: Insertion Sort, DFS/BFS, topological sorting
6
Teorik Dersler / Theoretical Öğretim Yöntem ve
Teknikleri/Teaching Methods Techniques
Ön Hazırlık / Preliminary
Uygulama Lab
Dönüştür ve Fethet Transform and Conquer
. Simplification Example: Önsıralama, Gaussian Elimination, Balanced Search Trees
. Change Presentation: Horner's rule and the binary exponent . Problem Reduction
7
Teorik Dersler / Theoretical Öğretim Yöntem ve
Teknikleri/Teaching Methods Techniques
Ön Hazırlık / Preliminary
Uygulama Lab
Uzay ve Zaman Değişimi Space and Time Trade-off
. Space/Time Trade-off: Sequence matching, Hashing, B-Trees
8
Teorik Dersler / Theoretical Öğretim Yöntem ve
Teknikleri/Teaching Methods Techniques
Ön Hazırlık / Preliminary
Uygulama Lab
Midterm exam
Midterm exam
9
Teorik Dersler / Theoretical Öğretim Yöntem ve
Teknikleri/Teaching Methods Techniques
Ön Hazırlık / Preliminary
Uygulama Lab
Dinamik Programlama Dynamic Programming
. Binomial Coefficients, Warshall and Floyd Algorithm, Knapsack Problem
10
Teorik Dersler / Theoretical Öğretim Yöntem ve
Teknikleri/Teaching Methods Techniques
Ön Hazırlık / Preliminary
Uygulama Lab
Dinamik Programlama Dynamic Programming
. Binomial Coefficients, Warshall and Floyd Algorithm, Knapsack Problem
11
Teorik Dersler / Theoretical Öğretim Yöntem ve
Teknikleri/Teaching Methods Techniques
Ön Hazırlık / Preliminary
Uygulama Lab
Açgözlü Tekniği Greedy Technique
. Ambitious Algorithms: Prim and Kruskal algorithms, Dijkstra's Algorithm, Huffman Trees
12
Teorik Dersler / Theoretical Öğretim Yöntem ve
Teknikleri/Teaching Methods Techniques
Ön Hazırlık / Preliminary
Uygulama Lab
Açgözlü Tekniği Ambitious Technique
. Ambitious Algorithms: Prim and Kruskal algorithms, Dijkstra's Algorithm, Huffman Trees
13
Teorik Dersler / Theoretical Öğretim Yöntem ve
Teknikleri/Teaching Methods Techniques
Ön Hazırlık / Preliminary
Uygulama Lab
Yinelemeli İyileştirme Iterative Improvement
. Iterative Improvement: Simplex Method, Maximum Flow, Maximum Matching, Stable Marriage Problem
14
Teorik Dersler / Theoretical Öğretim Yöntem ve
Teknikleri/Teaching Methods Techniques
Ön Hazırlık / Preliminary
Uygulama Lab
Algoritma Gücünün Sınırlamaları Limitations of Algorithm Power
. Sub-limit arguments, P, NP and NP-complete problems, Numerical Algorithms
15
Teorik Dersler / Theoretical Öğretim Yöntem ve
Teknikleri/Teaching Methods Techniques
Ön Hazırlık / Preliminary
Uygulama Lab
Algoritma Gücünün Sınırlamalarıyla Başa Çıkmak Coping with the Limitations of Algorithm Power
. Back-step-throwing, Branch-and-bound, Non-Linear Equations . Approximation Algorithms for NP-hard problems, genetic algorithms
16
Teorik Dersler / Theoretical Öğretim Yöntem ve
Teknikleri/Teaching Methods Techniques
Ön Hazırlık / Preliminary
Uygulama Lab
Final Sınavı
Final Exam
DEĞERLENDİRME / EVALUATION
Yarıyıl (Yıl) İçi Etkinlikleri / Term (or Year) Learning Activities Sayı /
Number
Katkı Yüzdesi / Percentage of Contribution (%)
100 1
Ara Sınav / Midterm Examination
Toplam / Total: 1 100
Başarı Notuna Katkı Yüzdesi / Contribution to Success Grade(%): 40
Yarıyıl (Yıl) Sonu Etkinlikleri / End Of Term (or Year) Learning Activities Sayı /
Number
Katkı Yüzdesi / Percentage of Contribution (%)
100 1
Final Sınavı / Final Examination
Toplam / Total: 1 100
Başarı Notuna Katkı Yüzdesi / Contribution to Success Grade(%): 60
Etkinliklerinin Başarı Notuna Katkı Yüzdesi(%) Toplamı / Total Percentage of Contribution (%) to Success Grade: 100
Değerlendirme Tipi / Evaluation Type:
İŞ YÜKÜ / WORKLOADS
Ara Sınav / Midterm Examination 1 2.00 2.00
Final Sınavı / Final Examination 1 2.00 2.00
Quiz / Quiz 4 1.00 4.00
Derse Katılım / Attending Lectures 14 3.00 42.00
Ödev Problemleri için Bireysel Çalışma / Individual Study for Homework Problems 8 2.00 16.00
Ara Sınav İçin Bireysel Çalışma / Individual Study for Mid term Examination 1 14.00 14.00
Final Sınavı içiin Bireysel Çalışma / Individual Study for Final Examination 1 20.00 20.00
Okuma / Reading 14 1.00 14.00
Quiz için Bireysel Çalışma / Individual Study for Quiz 2 3.00 6.00
Sayı / Number
Süresi (Saat) / Duration
(Hours)
Toplam İş Yükü (Saat) / Total
Work Load (Hour) Etkinlikler / Workloads
Toplam / Total: 46 48.00 120.00
Dersin AKTS Kredisi = Toplam İş Yükü (Saat) / 30.00 (Saat/AKTS) = 120.00/30.00 = 4.00 ~ 4.00 / Course ECTS Credit = Total Workload (Hour) / 30.00 (Hour / ECTS) = 120.00 / 30.00 = 4.00 ~ 4.00
PROGRAM VE ÖĞRENME ÇIKTISI / PROGRAM LEARNING OUTCOMES
Öğrenme Çıktıları / Learning Outcomes Program Çıktıları / Program Outcomes1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 1.1.9 1.1.1 1.1.1 1.1.1 1.1.1 1.Algoritma analizi için gerekli matematiksel bilgileri kullanabilme /
To use the mathematical information necessary for the algorithm
analysis 3 5 5
2. Algoritmaların uzamsal ve zamansal karmaşıklığını analiz edebilme / To analyze spatial and temporal complexity of
algorithms 4 3 2 5 4 5
3.Algoritmaların uzamsal ve zamansal karmaşıklığını gözönüne alarak değişiklikler yapıp performası artırabilme / To increase performance making changes based on spatial and temporal complexity of algorithms
4 4 5
4.Algoritma tasarım tekniklerini kavrayabilme / To understand the
algorithm design techniques 3 5
5.Algoritma tasarım teknikleri kullanarak yeni problemler için algoritmalar tasarlayabilme / To design algorithms for new
problems by algorithm design techniques 3 5 2 5 5 5
6.Çözülecek problem için en uygun algoritmik tekniği seçebilme / To select the most suitable algorithmic technique for the problem to
be solved 5 4 5 5 3 4 3 5 5
7.Bir problemi alt problemlere bölebilme / To divide a problem to
sub-problems 2 5
Katkı Düzeyi / Contribution Level : 1-Çok Düşük / Very low, 2-Düşük / Low, 3-Orta / Moderate, 4-Yüksek / High, 5-Çok Yüksek / Very high