Prerequisites and co-requisites |
None |
Language of instruction |
English |
Type |
Elective |
Level of Course |
Bachelor's |
Lecturer |
Asst. Prof. Furkan GÖZÜKARA |
Mode of Delivery |
Face to Face |
Suggested Subject |
None |
Professional practise ( internship ) |
None |
Objectives of the Course |
To gain broad knowledge on the algorithm classes in various domains, and techniques for designing and evaluating efficient algorithms. |
Contents of the Course |
Definition and properties of Algorithms. Design, analysis, and representation of Algorithms. Data abstraction. Pseudo code conventions. Models of computation. Mathematical Foundations: Growth of functions, asymptotic notations. Study of recursive algorithms and associated recurrence relations (substitution method, iteration method, master method, recursion trees). Design paradigms for algorithms: Brute-Force (Exhaustive Search), Divide-and-Conquer (Merge Sort, Binary Search Tree) Dynamic Programming (Matrix-Chain multiplication, LCS-length, 01-Knapsack Problem). Greedy algorithms (Greedy Activity Selector, Fractional Knapsack Problem). Graph Algorithms: Representation of sets and graphs. Breadth-first search, depth-first search. |
# |
Learning Outcomes |
1 |
possess the mathematical knowledge and skills necessary to the analysis of algorithms:
Reinforce mathematical fundamentals including techniques for solving summations and recurrences and the asymptotic growth rate of functions. |
2 |
gain insight into algorithmic design and how it is affected by and/or affects algorithmic logic, structure, and performance:
Apply proof techniques and mathematical concepts to demonstrate the correctness and assess the performance of standard algorithms. |
3 |
demonstrate their ability to carry out a complete algorithmic design process (design, analysis, implementation, results):
Address problems involving algorithmic design, analysis, and implementation. |
4 |
gain an understanding of certain classes of algorithms, along with models for future algorithmic work:
Introduce a number of standard algorithms, both classical and modern, as objects for algorithmic analysis. |
# |
Subjects |
Teaching Methods and Technics |
1 |
Definition and properties of Algorithms. Design, analysis, and representation of Algorithms. |
Lecture, discussion, presentation |
2 |
Data abstraction. Pseudo code conventions. Models of computation. |
Lecture, discussion, presentation |
3 |
Mathematical Foundations: Growth of functions, asymptotic notations. |
Lecture, discussion, presentation |
4 |
Study of recursive algorithms and associated recurrence relations (substitution method, iteration method). |
Lecture, discussion, presentation |
5 |
Study of recursive algorithms and associated recurrence relations (master method). |
Lecture, discussion, presentation |
6 |
Study of recursive algorithms and associated recurrence relations (recursion trees). |
Lecture, discussion, presentation |
7 |
Midterm |
Exam |
8 |
Brute-Force (Exhaustive Search), Divide-and-Conquer (Merge Sort, Binary Search Tree). |
Lecture, discussion, presentation |
9 |
Dynamic Programming (Matrix-Chain Multiplication, LCS-length, 0-1 Knapsack Problem). |
Lecture, discussion, presentation |
10 |
Greedy algorithms (Greedy Activity Selector) |
Lecture, discussion, presentation |
11 |
Fractional Knapsack Problem. |
Lecture, discussion, presentation |
12 |
Graph Algorithms: Representation of sets and graphs. |
Lecture, discussion, presentation |
13 |
Breadth-first search, depth-first search. |
Lecture, discussion, presentation |
14 |
|
|
15 |
|
|
16 |
Final Exam |
Exam |
# |
Learning Outcomes |
Program Outcomes |
Method of Assessment |
1 |
possess the mathematical knowledge and skills necessary to the analysis of algorithms:
Reinforce mathematical fundamentals including techniques for solving summations and recurrences and the asymptotic growth rate of functions. |
1͵2͵3͵4 |
1͵2 |
2 |
gain insight into algorithmic design and how it is affected by and/or affects algorithmic logic, structure, and performance:
Apply proof techniques and mathematical concepts to demonstrate the correctness and assess the performance of standard algorithms. |
1͵2͵3͵4 |
1͵2 |
3 |
demonstrate their ability to carry out a complete algorithmic design process (design, analysis, implementation, results):
Address problems involving algorithmic design, analysis, and implementation. |
1͵2͵3͵4 |
1͵2 |
4 |
gain an understanding of certain classes of algorithms, along with models for future algorithmic work:
Introduce a number of standard algorithms, both classical and modern, as objects for algorithmic analysis. |
1͵2͵3͵4 |
1͵2 |