General information
- Subject code
- İFS-2226yn
- Credits
- 6
- Student workload
- 135
- Semester
- Autumn semester
- Academic year
- 2
- Subject type
- Elective
- Form of education
- Full-time
- Language of instruction
- Azerbaijani
- In-class hours
- a) 15 saat - mühazirə b) 15 saat - seminar c) 15 saat - laboratoriya
- Out-of-class hours
- a) 60 saat – sərbəst iş b) 75 saat- layihə işi və ya məsləhət saatı
About the subject
The subject involves the formation of theoretical knowledge and practical skills in students on algorithmic thinking, systematic problem solving and the development of efficient software solutions. within the subject, the main principles, characteristics and classification of algorithms, as well as the analysis of time and space complexity, are studied. basic data structures such as arrays, lists, stacks, queues, linked lists, trees, and graphs and their interactions with algorithms are reviewed. students are introduced to sorting, search, graph, and shortest path algorithms, as well as basic algorithmic strategies such as divide and conquer, greedy approaches, dynamic programming, and backtracking. the subject is aimed at developing students' abilities to analyze the characteristics of a given problem, choose the appropriate data structure and algorithmic approach, evaluate the effectiveness of algorithms, and develop optimized solutions.
Teaching methods
- lecture
- laboratory work
- seminar
- presentations
- problem-based learning
- interactive discussion
- case study
- teamwork
- project-based learning
Course learning outcomes (CLO)
CLO 1: Must acquire fundamental knowledge about the basic concepts of algorithms, features, description methods, concept of complexity and types of data structures.
CLO 2: Must know linear and non-linear data structures (arrays, linked lists, stacks, queues, trees, graphs, hash tables, etc.), distinguish their application areas and have the ability to choose the appropriate structure.
CLO 3: Must know the working principles of basic algorithms such as search, sort, recursion, graph and tree algorithms, analyze and compare their time and memory complexity.
CLO 4: Must acquire skills to design, implement, test and optimize algorithms and data structures in various programming languages.
CLO 5: He should choose the appropriate algorithm and data structure for solving calculation problems, evaluate the efficiency of algorithms and apply them in solving practical problems.
CLO 6: He should apply modern algorithmic approaches in the process of algorithmic thinking, problem solving and software development, and should have the ability to justify the optimal solution by comparing different solution methods.
Topic plan
- 1.Introduction to algorithms and data structures. algorithmically unsolvable problemsLecture
The main characteristics of algorithms and the main types of data structures are studied within the subject. the relationship between algorithms and data structures and the effect of choosing an appropriate data structure on algorithm efficiency are considered. the concept of algorithmic intractable problems and the issue of the impossibility of solving all computational problems by algorithmic methods are explained. the concept of recursion, the working principle of recursive calls and their application in solving various problems are also examined. the logic of their operation is analyzed through the construction of recursive algorithms and suitable solution examples.
- 2.Data structuresLecture
The main data structures used for organizing, storing and processing data in memory are studied within the subject. the structure of arrays and lists, the main features of element access, addition, deletion and search operations are considered. the working principles of stack and queue structures, LIFO and FIFO approaches, respectively, and the main application areas are explained. it also examines the structure of linked lists, the concepts of nodes and links, the main characteristics of one-way and two-way linked lists, and their differences from other data structures.
- 3.Optimization and parallelization in algorithmsLecture
Within the framework of the topic, the principles of efficiency evaluation, optimization and parallel execution of algorithms are studied. the analysis of the time and space complexity of the algorithms, the assessment of the demand for computing resources depending on the size of the input data are considered. the analysis of the asymptotic behavior of algorithms is explained through big o, omega and theta notation. development of parallel algorithms, partitioning of computations into parallel tasks, and basic parallel processing models are explored. also, the mapreduce approach for distributed processing of large volumes of data and the main features of data structures used in parallel computing environments are reviewed.
- 4.Approaches to building algorithmsLecture
Within the framework of the topic, the main approaches used in building algorithms for solving various problems are studied. a divide-and-conquer approach based on breaking down complex problems into smaller sub-problems is considered. at each stage, the working principle and application features of the greedy approach based on making the most suitable choice for the current situation are explained. a dynamic programming approach based on storing and reusing the results of repeated subproblems is investigated. a backtracking approach based on the principle of systematically checking possible solutions and backtracking on unsuitable options is also considered.
- 5.Sorting and search algorithmsLecture
The main algorithms used for searching and organizing data in a certain sequence are studied within the subject. the working principles, application conditions and efficiency of linear and binary search algorithms are reviewed. the working logic and characteristics of basic sorting algorithms such as bubble sort, selection sort, insertion sort, merge sort, quick sort and heap sort are explained. the optimization principles used in heapsort and timsort approaches are investigated. various ranking and search algorithms are comparatively analyzed in terms of time and space complexity, stability, data volume and structure. the principles of increasing the efficiency of search trees and optimizing search operations are also considered.
- 6.Acgöz alqoritmlər. dinamik proqramlaşdırmaLecture
Acgöz (greedy) alqoritmlərin əsas prinsipləri, lokal optimal seçimin edilməsi və bu seçimin qlobal optimal həllə gətirib çıxarması şərtləri araşdırılır. minimum örtü, interval seçimi, kəsrli bel çantası və digər optimallaşdırma məsələlərinin həllində acgöz yanaşmanın tətbiqi öyrənilir.dinamik proqramlaşdırmanın əsas prinsipləri, alt məsələlərə bölmə, təkrarlanan alt məsələlərin müəyyənləşdirilməsi və optimal altstruktur xüsusiyyəti araşdırılır. memoizasiya və cədvəlləşdirmə (tabulation) yanaşmaları və onların optimallaşdırma məsələlərində tətbiqi öyrənilir.
- • clo1: explains the key characteristics of the main periods of azerbaijani history.
- • clo3: develops an objective position on relevant historical issues.
- • clo2: clarifies selected controversial issues in azerbaijani history.
- • clo4: demonstrates the required basic knowledge and formulates independent views on course topics.
- • clo5:relates azerbaijan's ancient history to the modern era.
- 7.Graph algorithms. algorithms for finding the shortest pathLecture
Within the framework of the subject, the basic concepts of graph theory and the basic algorithms used on graph structures are studied. basic concepts such as vertex, edge, directed and undirected graph, weighted graph, and connectivity are reviewed. traversing graphs using depth-first search (dfs) and breadth-first search (bfs) methods and the application fields of these algorithms are explained. the problem of determining the shortest path on a graph, the working principles and application features of dijkstra and a* search algorithms are investigated. also, the floyd–warshall algorithm for computing the shortest paths between all pairs of vertices is reviewed, as well as the optimal substructure and overlapping subproblems principles of this algorithm related to dynamic programming.
Reading list
- Steven s. skiena – the algorithm design manual (springer, 3rd edition, 2020)
- Robert sedgewick, kevin wayne – algorithms (addison-wesley, 4th edition, 2011)
- Geeksforgeeks(opens in a new tab)
- Cormen, t. h., leiserson, c. e., rivest, r. l., & stein, c. (2009). introduction to algorithms (3rd ed.). MIT press.
- Skiena, s. s. (2020). the algorithm design manual (3rd ed.). springer.
- Sedgewick, r., & wayne, k. (2011). algorithms (4th ed.). addison-wesley professional.
- Miller, b. n., & ranum, d. l. (2014). problem solving with algorithms and data structures using python. franklin, beedle & associates.
- Courses / resources(opens in a new tab)
- https://leetcode.com/(opens in a new tab)
- https://www.geeksforgeeks.org/%20-%20DSA%20Tutorial%20/%20Quizzes%20/(opens in a new tab)
- Https://visualgo.net/en
- https://visualgo.net/en(opens in a new tab)
Assessment
| Form | Description | Score | Related CLO |
|---|---|---|---|
| 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 | FTN 1-7 |
| 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 | FTN-- |
| İmtahan | İmtahan şifahi, yazılı, yazılı-elektron, test üsulu ilə keçirilir | 50 bal | FTN 1-7 |