Faculty of Engineering and Natural Sciences · Computer Engineering · Undergraduate
Course Objective
The aim of this course is to provide students with fundamental knowledge and skills in designing algorithms, evaluating their accuracy, and analyzing their efficiency. The course covers key topics such as time and memory complexity, asymptotic notation, search and sort algorithms, recursive algorithms, greedy algorithms, divide and conquer, dynamic programming, and graph algorithms, enabling students to select, compare, and evaluate algorithms suitable for different problems.
Course Content
The concept of algorithms and algorithm analysis, asymptotic representations (Big-O, Θ, Ω), time and space complexity analysis, examination of sorting algorithms and their complexities, search algorithms and best-mean-worst-case analyses, time complexity of binary tree-based algorithms, graph representations and graph-based algorithms (BFS, DFS, shortest path and minimum spanning tree algorithms), greedy algorithm approach and its applications.
Course Learning Outcomes
- It implements graph-based algorithms.
- It describes the greedy algorithm approach.
- It defines the concepts of algorithm and algorithm analysis.
- It calculates the time complexity of algorithms.
- It calculates the domain/space complexity of algorithms.
- It analyzes the time complexity of sorting algorithms.
- It calculates the best, average, and worst-case complexities of search algorithms.
- It calculates the best, average, and worst-case complexities of search algorithms.
Core Area Distribution
Teaching Methods
Assessment & Evaluation
ECTS / Workload
| Activity | Quantity | Duration (h) | Total Workload |
|---|---|---|---|
| Course Duration (Including Exam Week) | 15 | 3 | 45 |
| Out of Class Study Period | 15 | 4 | 60 |
| Midterm | 1 | 2 | 2 |
| Quiz | 0 | 0 | 0 |
| Assignment | 2 | 4 | 8 |
| Practice | 10 | 2 | 20 |
| Final | 1 | 2 | 2 |
Course Schedule
| Week | Subject | Preparation |
|---|---|---|
| 1 | Introduction to Algorithm Analysis | Lecture notes |
| 2 | Analysis of Algorithms | Lecture notes |
| 3 | Algorithm Analysis (Resolving Recursive Relationships) | Lecture notes |
| 4 | Generative functions, methods of division and domination | lecture notes |
| 5 | Sort and analyze | lecture notes |
| 6 | The smallest k number + dynamic programming method | lecture notes |
| 7 | Dynamic programming | lecture notes |
| 8 | Midterm exam | Midterm exam |
| 9 | Longest Common Subsequence (Dynamic programming) | lecture notes |
| 10 | Greedy Algorithms | lecture notes |
| 11 | Greedy Algorithms | lecture notes |
| 12 | Greedy Algorithms (Huffman Coding) | lecture notes |
| 13 | Backtracking Algorithms, Branch and Bound Algorithms, and basic definitions of graphics | lecture notes |
| 14 | Display and navigate graphs + Topological Sorting and Strongly Connected Components | lecture notes |
| 15 | Finding Shortest Paths in Graph+ Find the shortest path between two vertices+ Finding tree spanning a minimum | Lectures notes |
| 16 | Final Exam | Final Exam |


