Data Structures and Algorithms II 2026

Материал из Public ATP Wiki
Версия от 20:42, 26 августа 2026; Milana (обсуждение | вклад) (Новая страница: «==Course Description== The purpose of the "Algorithms and Data Structures" course is to familiarize students with standard algorithms used in software development and data analysis. Within the course, both theoretical aspects of algorithm design and details of their implementation are considered. Students will learn to argue solutions of algorithmic problems, write time- and memory-efficient implementations of algorithms, and pass code reviews. The course co...»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигации Перейти к поиску

Course Description

The purpose of the "Algorithms and Data Structures" course is to familiarize students with standard algorithms used in software development and data analysis. Within the course, both theoretical aspects of algorithm design and details of their implementation are considered. Students will learn to argue solutions of algorithmic problems, write time- and memory-efficient implementations of algorithms, and pass code reviews. The course covers algorithms for working with graphs, computational geometry, combinatorics, and number theory.

Сourse team

Lecturer - Petr Kulagin Assistant - Dib Bashar

Syllabus

Week Topic Contest
1 Graphs. Main definitions. Breadth first search (BFS). Wave algorithm Revision contest (does not affect the grade)
2 Depth first search (DFS). Cycle search, topological sort, strongly connected component extraction, graph condensation DFS, BFS.
3 Shortest paths in weighted graphs. Dijkstra, Floyd, and Ford-Bellman algorithms. Path recovery
4 Spanning trees. Disjoint set systems. Prim, Kruskal, and Boruvka algorithms Shortest paths, spanning trees.
5 Flow definition. Ford-Fulkerson theorem. Edmonds-Karp algorithm.
6 Flows. Dinic's algorithm. Flows, matchings.
7 Matchings. Kuhn's algorithm for finding the maximum matching. Stor-Wagner's algorithm for finding the minimum cut. Revision contest (does not affect the grade)
8 Test 1. Graphs.Geometric primitives: point, line, segment, circle. Vectors. Dot and cross products. Finding intersections and calculating distances. (Beginning) Geometry–1. Primitives.
9 Geometric primitives: point, line, segment, circle. Vectors. Dot and cross products. Finding intersections and calculating distances.
10 Testing a polygon for convexity and finding its area. Algorithms for constructing a convex hull. Geometry-2.
11 Finding a pair of closest and a pair of distant points. Minkowski sum.
12 Test - 2. Geometry.Combinatorics. Permutations, combinations, arrangements, subsets. Finding the next and previous objects, finding objects by number. (Beginning). Combinatorics.
13 Combinatorics. Permutations, combinations, arrangements, subsets. Finding the next and previous objects, finding an object by number. (Continued).

Regular bracket sequences. Catalan numbers.

14 Number theory. Modular arithmetic. Algorithms for computing the greatest common divisor (GCD) and least common mimic (LCM). Linear factorization of the GCD. Solving linear Diophantine equations with two unknowns. Sieve of Eratosthenes. Binary exponentiation algorithm. Chinese remainder theorem. Number theory.
15 Final lesson. Final test.

Algorithms for minimizing energy on graphs. ||

Form of control

Differentiated credit + exam.

The course includes 7 contests, 3 theoretical tasks, 2 code review tasks, 2 tests for understanding basic definitions and algorithms, and a final quiz. The course does not provide for automatic passing. An exam is scheduled for the course.

Exam format

During the exam, the student will receive a ticket consisting of 3 questions from different topics of the course with varying levels of difficulty. Preparation time is 1.5 hours. During this time, the student must fully complete the ticket in writing in English. After that, the answer to the examiner begins. After answering the ticket, the student may be asked questions on other topics of the course, as well as be offered to solve problems.

Evaluation criteri

To get a satisfactory rating, a student must score at least 50% points and solve at least 1 problem in each contest, as well as pass 1 code review. To get an excellent score, a student must score at least 85% points and solve at least half of the tasks in each contest, as well as pass 2 code reviews. To get a positive score on the final test, a student must score at least 50% of the points. To get an excellent score on the exam, a student must answer 3 questions from the ticket, solve the proposed tasks. To get a good score on the exam, a student must answer 2 questions from the ticket, and answer the additional questions well. To get a satisfactory score on the exam, a student must answer 1 question from the ticket, know the basic definitions and statements.