Undergraduate
Faculty of Engineering and Architecture
Computer Engineering
Anlık RSS Bilgilendirmesi İçin Tıklayınız.Düzenli bilgilendirme E-Postaları almak için listemize kaydolabilirsiniz.


Analysis of Algorithms

Course CodeSemester Course Name LE/RC/LA Course Type Language of Instruction ECTS
CSE0416 Analysis of Algorithms 2/0/2 DE English 6
Course Goals
Students should develop proficiency in fundamental algorithmic techniques and analysis as well as the ability to implement the algorithms in a programming language.  Further, they should understand computational limitations such as NP-completeness, and how to tackle such real-world algorithmic problems via randomized and approximation techniques.
Prerequisite(s) -
Corequisite(s) -
Special Requisite(s) mathematical maturity and programming proficiency
Instructor(s) Dr. Yusuf Altunel
Course Assistant(s) -
Schedule Theory: Cuma 09:00 - 10:45 Lab: Cuma 11:00 - 12:45
Office Hour(s) Ofis hour: Cuma 12:45 – 13:30 (45 Min) Hybrid: AK 2D 213
Teaching Methods and Techniques 42 hours of lecture including exams and quizzes.

14 hours of discussion
     
Principle Sources

Text Book
Introduction to the Design and Analysis of Algorithms 3e, Anany Levitin, Addison-Wesley, 2012, 592 pp. ISBN-10: 0132316811, ISBN-13: 9780132316811.

Lab Book

 
Data Structures and Algorithms in Python, Michael T. Goodrich, Roberto Tamassia, Michael H. Goldwasser, Wiley, 2013.      

Other Sources

Other Resources
Python Data Structures and Algorithms, Benjamin Baka, Packt Publishing, 2017. Annotated Algorithms in Python with Applications in Pyhsics, Biology, and Finance, 2e, Massimo Di Pierro, 2013. Python Algorithms Mastering Basic Algorithms in the Python Language, Magnus Lie Hetland, Apress, 2010 Python and Algorithms, Mari Wahl, University of New York at Stony Brook, 2013. An Introduction to Analysis of Algorithms, 2e, Michael Soltys, World Scientific Publishing Co. Pte. Ltd. 2012. Algorithms 4e, Robert Sedgewick and Kevin Wayne, Princeton University, 2011      

Course Schedules
Week Contents Learning Methods
1. Week Introduction: What Is an Algorithm?, Fundamentals of Algorithmic Problem Solving, Important Problem Types, Fundamental Data Structures Lecture and Examples
2. Week Fundamentals of the Analysis of Algorithm Efficiency: The Analysis Framework, Asymptotic Notations and Basic Efficiency Classes, Mathematical Analysis of Nonrecursive Algorithms, Mathematical Analysis of Recursive Algorithms Computing the nth Fibonacci Number, Empirical Analysis of Algorithms, Algorithm Visualization Lecture and Examples
3. Week Brute Force and Exhaustive Search: Selection Sort, Sequential Search and Brute-Force String Matching, Closest-Pair and Convex-Hull Problems by Brute Force, Exhaustive Search, Depth-First Search and Breadth-First Search Lecture and Examples
4. Week Decrease-and-Conquer: Descriptions, Insertion Sort, Topological Sorting, Algorithms for Generating Combinatorial Objects, Decrease-by-a-Constant-Factor Algorithms, Variable-Size-Decrease Algorithms Lecture and Examples
5. Week Divide-and-Conquer: Mergesort, Quicksort, Binary Tree Travesals and Related Properties, Multiplication of Large Integers, The Closest-Pair and Convex-Hull Problems Lecture and Examples
6. Week Transform-and-Conquer:Presorting, Gaussian Elimination, Balanced Search Trees Heaps and Heapsort, Horner’s Rule and Binary Exponentiation, Problem Reduction Lecture and Examples
7. Week Space and Time Trade-Offs: Input Enhancements, Prestructuring, Horspool’s Algorithm, Boyer-Moore’s Algorithm, Hashing Lecture and Examples
8. Week Midterm Week
9. Week Dynamic Programming: Definition of Dynamic Programming, Fibonacci Numbers, Coin-row problem, Path Counting, Other Examples, Knapsack Problem by DP, Optimal Binary Search Trees, Warshall’s Algorithm, Floyd’s Algorithm Lecture and Examples
10. Week Dynamic Programming: Definition of Dynamic Programming, Fibonacci Numbers, Coin-row problem, Path Counting, Other Examples, Knapsack Problem by DP, Optimal Binary Search Trees, Warshall’s Algorithm, Floyd’s Algorithm Lecture and Examples
11. Week Greedy Technique: Applications of the Greedy Strategy, Change-Making Problem, Minimum Spanning Tree, Prim's MST Algorithm, Kruskal's MST Algorithm, Shortest Paths Algorithms, Dijkstra’s algorithm, Coding Problem Lecture and Examples
12. Week Iterative Improvement: Definition & Examples, Linear Programming, Geometric Solution, The Simplex Method, Maximum Flow Problem, Augmenting Path, Vertex Labeling, Time Efficiency, Network Cuts, Bipartite Graphs, Matching in a Graph, Stable Marriage Problem Lecture and Examples
13. Week Limitations of Algorithm Power: Lower Bounds, Decision Trees, Adversary Arguments, Classifying Problem Complexity, Problem Types: Optimization and Decision, Class P, Class NP, NP-Complete Problems, P = NP ? Dilemma Lecture and Examples
14. Week Coping with the Limitations of Algorithm Power: Tackling Difficult Combinatorial Problems Exact Solution Strategies, Backtracking, Branch-and-Bound, Approximation Approach, Numerical Algorithms Lecture and Examples
15. Week Final Exam Week
16. Week
17. Week
Assessments
Evaluation tools Quantity Weight(%)
Midterm(s) 1 30
Project(s) 1 30
Final Exam 1 40


Program Outcomes
PO-1Adequate knowledge in mathematics, science and engineering subjects pertaining to the relevant discipline; ability to use theoretical and applied information in these areas to model and solve engineering problems.
PO-2Ability to identify, formulate, and solve complex engineering problems; ability to select and apply proper analysis and modelling methods for this purpose.
PO-3Ability to design a complex system, process, device or product under realistic constraints and conditions, in such a way so as to meet the desired result; ability to apply modern design methods for this purpose. (Realistic constraints and conditions may include factors such as economic and environmental issues, sustainability, manufacturability, ethics, health, safety issues, and social and political issues according to the nature of the design.)
PO-4Ability to devise, select, and use modern techniques and tools needed for engineering practice; ability to employ information technologies effectively.
PO-5Ability to design and conduct experiments, gather data, analyse and interpret results for investigating engineering problems.
PO-6Ability to work efficiently in intra-disciplinary and multi-disciplinary teams; ability to work individually.
PO-7Ability to communicate effectively, both orally and in writing; knowledge of a minimum of one foreign language.
PO-8Recognition of the need for lifelong learning; ability to access information, to follow developments in science and technology, and to continue to educate him/herself.
PO-9Awareness of professional and ethical responsibility.
PO-10Information about business life practices such as project management, risk management, and change management; awareness of entrepreneurship, innovation, and sustainable development.
PO-11Knowledge about contemporary issues and the global and societal effects of engineering practices on health, environment, and safety; awareness of the legal consequences of engineering solutions.
Learning Outcomes
LO-1Understand design techniques: divide-and-conquer, greedy method, dynamic programming.
LO-2Understand complexity considerations: time, space, upper, lower bounds, asymptotic complexity, amortized analysis, NP-completeness.
LO-3Understand data structure considerations, sorting and searching algorithms, string searching algorithms, graph algorithms.
LO-4Special topics from randomized algorithms, approximation algorithms, and cryptography.
Course Assessment Matrix:
Program Outcomes - Learning Outcomes Matrix
 PO 1PO 2PO 3PO 4PO 5PO 6PO 7PO 8PO 9PO 10PO 11
LO 1
LO 2
LO 3
LO 4