Ümumi məlumat
- Fənn kodu
- IFS-2226yn-EN
- Kredit
- 6
- Tələbənin iş yükü
- 135
- Semestr
- Payız semestri
- Akademik il
- 2
- Fənnin tipi
- Seçmə
- Təhsil forması
- Əyani
- Tədris dili
- İngilis
- Auditoriyadaxili saatlar
- a) 15 hours – lectures; b) 15 hours – seminars; c) 15 hours – laboratory sessions
- Auditoriyadan kənar saatlar
- a) 60 hours – independent study; b) 75 hours – project work and/or consultation hours
Fənn haqqında
The course is designed to develop students' theoretical knowledge and practical skills in algorithmic thinking, systematic problem-solving, and the development of efficient software solutions. The course covers the fundamental principles, characteristics, and classification of algorithms, as well as the analysis of time and space complexity. Major data structures, including arrays, lists, stacks, queues, linked lists, trees, and graphs, and their interaction with algorithms are examined. Students are introduced to sorting, searching, graph, and shortest-path algorithms, as well as fundamental algorithmic strategies such as divide and conquer, greedy algorithms, dynamic programming, and backtracking. The course aims to develop students' ability to analyze the characteristics of a given problem, select an appropriate data structure and algorithmic approach, evaluate algorithm efficiency, and develop optimized solutions.
Tədris metodları
- mühazirə
- seminar
- interaktiv müzakirə
- komanda işi
- case study
- problem-based learning
- layihə əsaslı öyrənmə
- təqdimatlar
Fənn təlim nəticələri (CLO)
CLO 1: Gain fundamental knowledge of the basic concepts and characteristics of algorithms, methods of algorithm representation, the concept of complexity, and types of data structures.
CLO 2: Understand linear and non-linear data structures (arrays, linked lists, stacks, queues, trees, graphs, hash tables, etc.), distinguish their application areas, and develop the ability to select an appropriate data structure for a given problem.
CLO 3: Understand the operating principles of fundamental algorithms, including searching, sorting, recursion, graph, and tree algorithms; analyze and compare their time and space complexities.
CLO 4: Develop the ability to design, implement, test, and optimize algorithms and data structures using different programming languages.
CLO 5: Select appropriate algorithms and data structures for solving computational problems, evaluate algorithm efficiency, and apply them to practical problems.
CLO 6: Apply modern algorithmic approaches in algorithmic thinking, problem-solving, and software development processes; compare different solution methods and justify an optimal solution.
Mövzu planı
- 1.Introduction to Algorithms and Data Structures. Undecidable ProblemsMühazirə
This topic introduces the fundamental characteristics of algorithms and the main types of data structures. The relationship between algorithms and data structures and the impact of selecting an appropriate data structure on algorithm efficiency are examined. The concept of algorithmically undecidable problems and the impossibility of solving all computational problems using algorithmic methods are explained. The concept of recursion, the operating principles of recursive calls, and their applications in solving various problems are also examined. The logic of recursive algorithms is analyzed through the construction of recursive solutions and relevant examples.
- 2.Data StructuresMühazirə
This topic covers the fundamental data structures used for organizing, storing, and processing data in memory. The structure of arrays and lists, as well as the fundamental characteristics of accessing, inserting, deleting, and searching for elements, are examined. The operating principles of stack and queue structures, the LIFO and FIFO approaches, respectively, and their main areas of application are explained. The structure of linked lists, the concepts of nodes and links, and the fundamental characteristics of singly and doubly linked lists are also examined and compared with other data structures.
- 3.Optimization and Parallelization in AlgorithmsMühazirə
This topic covers the principles of evaluating, optimizing, and executing algorithms in parallel. The analysis of time and space complexity and the assessment of computational resource requirements depending on the size of input data are examined. The asymptotic behavior of algorithms is analyzed using Big O, Omega, and Theta notations. The development of parallel algorithms, the division of computations into parallel tasks, and fundamental parallel processing models are examined. The MapReduce approach for distributed processing of large-scale data and the fundamental characteristics of data structures used in parallel computing environments are also discussed.
- 4.Approaches to Algorithm DesignMühazirə
This topic covers the fundamental approaches used to design algorithms for solving various problems. The divide-and-conquer approach, which solves complex problems by dividing them into smaller subproblems, is examined. The operating principles and application characteristics of the greedy approach, which selects the most appropriate option at each stage, are explained. Dynamic programming, which is based on storing and reusing the results of overlapping subproblems, is examined. The backtracking approach, which systematically explores possible solutions and returns from unsuitable choices, is also discussed.
- 5.Sorting and Searching AlgorithmsMühazirə
This topic covers the fundamental algorithms used for searching and organizing data in a specific order. The operating principles, application conditions, and efficiency of linear and binary search algorithms are examined. The logic and characteristics of major sorting algorithms, including Bubble Sort, Selection Sort, Insertion Sort, Merge Sort, Quick Sort, and Heap Sort, are explained. Optimization principles used in Heapsort and TimSort are examined. Different sorting and searching algorithms are comparatively analyzed in terms of time and space complexity, stability, data size, and data structure. The principles of improving the efficiency of search trees and optimizing search operations are also examined.
- 6.Greedy Algorithms. Dynamic ProgrammingMühazirə
The fundamental principles of greedy algorithms, local optimal selection, and the conditions under which such a selection leads to a globally optimal solution are examined. The application of greedy approaches to optimization problems such as minimum spanning trees, interval scheduling, the fractional knapsack problem, and other related problems is studied.The fundamental principles of dynamic programming, decomposition into subproblems, identification of overlapping subproblems, and the optimal substructure property are examined. Memoization and tabulation approaches and their applications to optimization problems are studied.
- 7.Graph Algorithms. Shortest Path AlgorithmsMühazirə
This topic covers the fundamental concepts of graph theory and the main algorithms used for operating on graph structures. Basic concepts such as vertices, edges, directed and undirected graphs, weighted graphs, and connectivity are examined. Graph traversal using Depth-First Search (DFS) and Breadth-First Search (BFS), as well as the application areas of these algorithms, are explained. The shortest-path problem, the operating principles and application characteristics of Dijkstra's and A* search algorithms are explored. In addition, the Floyd–Warshall algorithm for calculating shortest paths between all pairs of vertices is examined, along with its relationship to dynamic programming and the principles of optimal substructure and overlapping subproblems.
Ədəbiyyat
- Skiena, S. S. The Algorithm Design Manual. Springer, 3rd Edition, 2020.
- Sedgewick, R., & Wayne, K. Algorithms. Addison-Wesley, 4th Edition, 2011.
- GeeksforGeeks. Algorithms and Data Structures Resources.
- Cormen, T. H., Leiserson, C. E., Rivest, R. L., & Stein, C. Introduction to Algorithms. 3rd Edition. MIT Press, 2009
- Skiena, S. S. The Algorithm Design Manual. 3rd Edition. Springer, 2020.
- Sedgewick, R., & Wayne, K. Algorithms. 4th Edition. Addison-Wesley Professional, 2011.
- Miller, B. N., & Ranum, D. L. Problem Solving with Algorithms and Data Structures Using Python. Franklin, Beedle & Associates, 2014.
- MIT OpenCourseWare. Algorithms and Data Structures – Courses and Educational Resources.
Qiymətləndirmə
| Qiymətləndirmə forması | Açıqlama | Bal | Uyğun FTN |
|---|---|---|---|
| Cari qiymətləndirmə | Cari qiymətləndirmə - fənn üzrə tələbənin semestr müddətində fəaliyyətinin qiymətləndirilməsi olmaqla, mühazirə və məşğələ (laboratoriya) dərs materiallarının mənimsənilmə səviyyəsini qiymətləndirilir. | 30 bal | CLO 1-5 |
| Davamiyyət | Tələbə fənn üzrə dərslərin 25%-dən çoxunda iştirak etmədiyi halda imtahana buraxılmır. | 10 bal | - |
| Tələbənin sərbəst işi | Tələbəyə fənn üzrə semestr ərzində 1 sərbəst işin (zəruri hallarda sərbəst işlərin sayı artırıla bilər) yerinə yetirilməsi tapşırığı verilir. | 10 bal | CLO-- |
| İmtahan | İmtahan şifahi, yazılı, yazılı-elektron, test üsulu ilə keçirilir | 50 bal | CLO 1-5 |