Subject · Computer science

Alqoritmin analizi və hazırlanması üsullarıTopics

İF-40174y8 creditsSpring semesterMandatory2025-2026

Topic plan

The subject's topics and the learning outcomes attached to each one.

15 topics
  1. 1. Asymptotic analysis and linear search

    Lecture

    In the subject, the concept of algorithm, which is the foundation of programming and computer science, the mathematical analysis methods applied to measure its effectiveness, and primary search mechanisms are studied. students analyze the fundamental properties of an algorithm, such as finiteness, determinism, and efficiency, as well as the concepts of time and memory complexity, which determine how well the code uses resources. in the main part of the lesson, the asymptotic notations of the worst case, the best case and the average case, which mathematically express the growth rate of functions, as well as the working principle and complexity of the linear search algorithm based on sequential checking of elements in the data set are practically investigated.

    Topic learning outcomes

    • Mathematical bases of algorithm analysis; algorithm analysis methods for best, worst and average cases; should know search and sorting algorithms (sequential search, binary search, etc.) and their analysis.
    Open resource: Asymptotic analysis and linear search (opens in a new tab)
  2. 2. Recursion and binary search

    Lecture

    In the subject, the principle of recursion, which is a mechanism for solving complex problems by dividing them into small sub-problems, and the binary search algorithm, which provides fast search in ordered arrays, are studied. students analyze the process of calling a function itself, the principles of memory management of recursive calls, and the concept of a precondition that prevents an infinite loop. in the main part of the lesson, the logical structure of the binary search, which narrows the search space by dividing the dataset in half at each step, its recursive and iterative implementation, as well as the asymptotic analysis of the time and memory complexity of this algorithm are practically investigated.

    Topic learning outcomes

    • Mathematical bases of algorithm analysis; algorithm analysis methods for best, worst and average cases; should know search and sorting algorithms (sequential search, binary search, etc.) and their analysis.
    • Must have skills in finding optimal algorithm and solving simple recurrent relations. "greedy" should know the methods of developing algorithms, their application and the evaluation of their complexity.
    Open resource: Recursion and binary search (opens in a new tab)
  3. 3. Sorting algorithms i: bubble, selection and insertion sort

    Lecture

    In the subject, the fundamental sorting algorithms that ensure the arrangement of data in a certain order in computer science are studied. students analyze the working principles of bubble sorting based on comparison and displacement of neighboring elements, selective sorting which finds the smallest element at each step and places it in the appropriate position, and insertion sort algorithms that work with card game logic. in the main part of the lesson, the visual execution steps, comparison and displacement counts of these three algorithms through internal loops, as well as the time and memory complexity indicators in the best, average and worst case scenarios are analytically investigated.

    Topic learning outcomes

    • Mathematical bases of algorithm analysis; algorithm analysis methods for best, worst and average cases; should know search and sorting algorithms (sequential search, binary search, etc.) and their analysis.
    • Must be able to write and analyze pseudocode of search and sorting algorithms.
    Open resource: Sorting algorithms i: bubble, selection and insertion sort (opens in a new tab)
  4. 4. Sorting algorithms ii. the concept of divide & conquer. quick sort, heap sort, merge sort algorithms

    Lecture

    Advanced algorithmic approaches and optimized sorting techniques applied for fast sorting of large volumes of data are studied in the subject. students analyze the divide and conquer philosophy, which is based on solving a complex problem by breaking it down into smaller subproblems. in the main part of the lesson, the working principles of quick sort, which divides the array into two parts by choosing a pivot point, heap sort, which arranges the data into a binary tree structure, and merge sort, which divides the array until there is only one element and then combines it in an orderly manner, as well as their logarithmic time complexity indicators, are practically investigated.

    Topic learning outcomes

    • Mathematical bases of algorithm analysis; algorithm analysis methods for best, worst and average cases; should know search and sorting algorithms (sequential search, binary search, etc.) and their analysis.
    • Must be able to write and analyze pseudocode of search and sorting algorithms.
    Open resource: Sorting algorithms ii. the concept of divide & conquer. quick sort, heap sort, merge sort algorithms (opens in a new tab)
  5. 5. Dynamic programming i: basic principles, memoization and tabulation

    Lecture

    In the subject, a dynamic programming strategy widely used in computer science is studied for the optimal solution of tasks consisting of complex and repeating sub-problems. students analyze the role of overlapping subproblems and optimal substructure principles to improve algorithm efficiency. in the main part of the lesson, the memoization technique, which ensures that the calculated results are stored in memory and reused from top to bottom, and the tabulation method, which builds an iterative solution by collecting resources in a table structure from bottom to top, as well as the effect of these approaches on time and memory complexity, are practically investigated.

    Topic learning outcomes

    • He should know the main classes of algorithms, algorithms related to dynamic programming.
  6. 6. Dynamic programming ii: coin change and 0/1 knapsack problems

    Lecture

    The application of the basic principles of dynamic programming to classic optimization and combinatorics tasks is studied in the subject. students analyze the mathematical model and state transitions of the coin change problem, which requires forming a given amount with the minimum number of coins. in the main part of the lesson, the dynamic programming matrix of the 0/1 knapsack problem, which expresses the scenario of filling a knapsack with a certain weight capacity with items that will bring the maximum value, is established, and the mechanism of building an optimal solution algorithm based on the states of selection or non-selection of items (0 or 1) is practically investigated.

    Topic learning outcomes

    • He should know the main classes of algorithms, algorithms related to dynamic programming.
  7. 7. Greedy algorithms i

    Lecture

    The subject studies the greedy algorithmic paradigm, which is widely used in solving optimization problems, based on making only the best-seeming choice for the current moment without considering the future consequences at each step. students analyze the conditions under which local optimal choices lead to a global optimal solution, as well as the structural differences of this approach from dynamic programming and other algorithmic strategies. in the main part of the lesson, the working mechanism of the greedy method, its advantages in terms of speed and memory, as well as the basic mathematical and logical models by which this paradigm can be successfully applied, are practically investigated.

    Topic learning outcomes

    • Must have skills in finding optimal algorithm and solving simple recurrent relations. he should know the methods of developing "stingy" algorithms, their implementation and the estimation of their complexity.
    Open resource: Greedy algorithms i (opens in a new tab)
  8. 8. Greedy algorithms II

    Lecture

    The subject studies the most popular applications of the greedy paradigm, fractional knapsack, and huffman coding algorithms used for data compression. students analyze the fractional knapsack problem, which allows items to be partitioned into a bag, and why the greedy approach provides the global optimal solution here, as opposed to the 0/1 knapsack. in the main part of the lesson, the construction mechanism of huffman coding, which builds an optimal binary tree (huffman tree) based on the frequency of symbols, performs lossless compression of data with minimal memory consumption, and the time complexity of both algorithms are practically investigated.

    Topic learning outcomes

    • Must have skills in finding optimal algorithm and solving simple recurrent relations. he should know the methods of developing "stingy" algorithms, their implementation and the estimation of their complexity.
    Open resource: Greedy algorithms II (opens in a new tab)
  9. 9. Graph algorithms i

    Lecture

    The subject studies the graph data structure and fundamental search algorithms used in computer science to model real-world networks, social relationships, and maps. students analyze the adjacency list and adjacency matrix structures, which are efficient methods of storing graphs in program memory, and their advantages in terms of memory and speed. in the main part of the lesson, the working principles of the transverse search, which finds the shortest paths by visiting the vertices of the graph level by level, and the depth search algorithms, which go as deep as possible in one direction and then return, are practically investigated.

    Open resource: Graph algorithms i (opens in a new tab)
  10. 10. Graph algorithms II

    Lecture

    Fundamental algorithms used for calculating the optimal and shortest distances between vertices determined on graph structures are studied in the subject. students analyze the working principle of dijkstra's algorithm, which rapidly finds the shortest paths from one vertex to all other vertices in graphs without negative weighted edges. in the main part of the lesson, the bellman-ford algorithm, which works in situations where there are negative weighted threads, and can also determine the presence of negative cycles within the graph, the time complexity and application areas of both approaches are practically investigated.

  11. 11. Backtracking and combinatorial algorithms

    Lecture

    In the subject, the backtracking algorithmic approach and combinatorial tasks based on the return principle are studied by systematically examining all possible candidate solutions, identifying wrong or useless directions at an early stage. students analyze the modeling of the search space in the form of a tree structure and the branch pruning mechanism. in the main part of the lesson, the n-queens task, which requires the placement of queens on the chessboard in such a way that they do not hit each other, the hamiltonian cycle problem, which builds a closed cycle by passing through all the vertices of the graph only once, and the working principles of subset generation algorithms, which ensure the creation of all possible subsets of the given set, are practically explored.

  12. 12. Randomized and approximate algorithms

    Lecture

    The subject studies randomized algorithms that use the power of randomness to solve complex calculation and optimization problems in a short time, and approximate algorithms that offer a near-optimal solution to difficult problems belonging to the np-complete class in a reasonable time. students analyze the randomized quicksort algorithm, which eliminates the worst-case scenario risk by randomly selecting a support element, and the basic principles of the monte carlo method, which calculates complex mathematical fields and probabilities through random sampling. in the main part of the lesson, the vertex cover task, which is one of the np-complete problems, which requires finding the minimum number of vertices to cover all the lines in the graph, and the working mechanism of the greedy-based approach, which offers a 2-fold approximate optimal solution for this task, are practically investigated.

  13. 13. Multiprocessing

    Lecture

    In the subject, the principles of maximally effective use of modern multi-core central processor (cpu) architecture and the multiprocessing paradigm are studied to increase the execution speed of computationally heavy and large-scale algorithms. students analyze ways to break the limits of a single core into parallel processes with independent memory space and how this differs structurally from the multithreading approach. in the main part of the lesson, the distribution of algorithmic processes with high CPU intensity to different physical cores, inter-process communication (ipc) mechanisms, data synchronization and calculation of the maximum acceleration limit that can be achieved through amdal's law are practically investigated.

  14. 14. Np and nondeterminism

    Lecture

    The topic studies complexity classes and uncertainty principles to understand the p versus NP problem, one of the most fundamental unsolved questions in computer science and mathematics. students analyze the class p, which includes problems solved in deterministic polynomial time, and the class np, whose solution is found in polynomial time on non-deterministic machines, but the correctness of the proposed solution can be quickly verified deterministically. in the main part of the lesson, the np-hard category, which is at least as difficult as all problems in np, the np-complete concepts that satisfy both NP and np-hard conditions and form the most complex core of this class, and the reduction methods that provide transitions between them are practically investigated.

  15. 15. Final revision and exam preparation

    Lecture

    The subject provides a comprehensive review of all fundamental and advanced algorithmic topics covered throughout the semester, including recursive and binary search systems, sorting techniques, dynamic programming methods, graph and shortest path algorithms, as well as backtracking, randomization, multiprocessing, and NP complexity classes. students review the asymptotic analysis of the time and memory complexity of various algorithms. in the main part of the lesson, solving analytical problems according to real exam scenarios, analysis of typical programming errors, code optimization strategies and the methodology of answering theoretical questions are practically investigated.