<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://wiki.cs.hse.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nkmakarov</id>
	<title>Wiki - Факультет компьютерных наук - Вклад [ru]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.cs.hse.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nkmakarov"/>
	<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Nkmakarov"/>
	<updated>2026-09-20T21:51:44Z</updated>
	<subtitle>Вклад</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2026/2027&amp;diff=97697</id>
		<title>Algorithms and Data Structures DSBA 2026/2027</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2026/2027&amp;diff=97697"/>
		<updated>2026-09-19T15:56:26Z</updated>

		<summary type="html">&lt;p&gt;Nkmakarov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
&lt;br /&gt;
This page contains basic information for the course Algorithms and Data Structures 2 in 2026/2027 academic year at Bachelor’s Programme in &#039;&#039;&#039;Data Science and Business Analytics&#039;&#039;&#039; (DSBA).&lt;br /&gt;
&lt;br /&gt;
= Teachers and assistants =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Group !! 251 !! 252 !! 253 !! 254 !! 255 !! 256&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer || colspan=&amp;quot;6&amp;quot; style=&amp;quot;text-align:center;&amp;quot; | [https://t.me/nkmakarov Nikita Makarov]&lt;br /&gt;
|-&lt;br /&gt;
| Seminar Instructor&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:center;&amp;quot; | [https://t.me/vvk101 Vladimir Kurenkov]&lt;br /&gt;
| [https://t.me/Tony_zaika Anton Shnipov]&lt;br /&gt;
| [https://t.me/l_AnnaPronina_l Anna Pronina]&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:center;&amp;quot; | [https://t.me/seemur Simon Kondakov]&lt;br /&gt;
|-&lt;br /&gt;
| Teaching Assistant&lt;br /&gt;
| [https://t.me/leon1dl Leonid Pavlov]&lt;br /&gt;
| [https://t.me/marshmel_m Maria Sudarikova]&lt;br /&gt;
| [https://t.me/CITNAD Dmitriy Gusev]&lt;br /&gt;
| [https://t.me/an4stic Anastasia Bronnikova]&lt;br /&gt;
| [https://t.me/dandelii Maria Samoylova]&lt;br /&gt;
| [https://t.me/ihelpe Yana Pavlova]&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer Assistant || colspan=&amp;quot;6&amp;quot; style=&amp;quot;text-align:center;&amp;quot; | [https://t.me/yankiiesss Yana Arseneva]&lt;br /&gt;
|}&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
You may find [https://docs.google.com/spreadsheets/d/1PeiFEfWqn1XlL9qGyLEoYXrZZVTlliexcuZyXVyOE78/edit?gid=0#gid=0 your grades].&lt;br /&gt;
&lt;br /&gt;
== Formula ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Final Grade = E * 0.4 + HW * 0.2 + Q * 0.2 + S * 0.2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039; - exam grade: rational number [0, 10] = sum of the grade for the oral and written parts, out of 5 each&lt;br /&gt;
* &#039;&#039;&#039;HW&#039;&#039;&#039; - homework grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;Q&#039;&#039;&#039; - lecture quizzes grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039; - seminar practice grade: rational number [0, 10]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;rounding&#039;&#039;&#039;: each element in the formulae is rounded up&lt;br /&gt;
&lt;br /&gt;
== Plagiarism policy ==&lt;br /&gt;
&lt;br /&gt;
If plagiarism is detected, the assessment element will be assigned a score of &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the student is suspected of preparing the task not on his own, the teacher has the right to initiate additional verification or defense of this particular assessment element. Then such an assessment element will be graded based on the additional verification or the defense.&lt;br /&gt;
&lt;br /&gt;
= Home assignments =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Contest !! Deadline !! Topic&lt;br /&gt;
|-&lt;br /&gt;
| || || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Lectures =&lt;br /&gt;
&lt;br /&gt;
Lectures are held on &#039;&#039;&#039;Saturday, 14:40-17:40&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Lecture Materials ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 5&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Exact string matching, naive algorithm, the preprocessing approach, Z-algorithm, the simplest linear-time algorithm&lt;br /&gt;
* The Knuth-Morris-Pratt algorithm&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 1, 2, 3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 12&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* The Boyer-Moore algorithm&lt;br /&gt;
* The Aho-Corasick algorithm&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 2, 3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 19&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Suffix trees: basic definition, naive algorithm to build&lt;br /&gt;
* Suffix trees: Ukkonen&#039;s algorithm&lt;br /&gt;
* Suffix trees applications: generalized suffix tree, the longest common substring for two strings, matching statistics&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 5, 6, 7&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== List of topics for exam ==&lt;br /&gt;
&lt;br /&gt;
* [тема 1]&lt;br /&gt;
* [тема 2]&lt;br /&gt;
* [тема 3]&lt;/div&gt;</summary>
		<author><name>Nkmakarov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_1_DSBA_2025/2026&amp;diff=96849</id>
		<title>Algorithms and Data Structures 1 DSBA 2025/2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_1_DSBA_2025/2026&amp;diff=96849"/>
		<updated>2026-06-14T17:24:20Z</updated>

		<summary type="html">&lt;p&gt;Nkmakarov: List of topics for exam&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
This page contains basic information for the course Algorithms and Data Structures 1 in 2025/2026 academic year at Bachelor’s Programme in &#039;&#039;&#039;Data Science and Business Analytics&#039;&#039;&#039; (DSBA).&lt;br /&gt;
&lt;br /&gt;
The full syllabus can be accessed at [https://www.hse.ru/ba/data/courses/1072953806.html this page]. &lt;br /&gt;
&lt;br /&gt;
= Teachers and assistants = &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Group !! 251 !! 252 !! 253 !! 254 !! 255 !! 256 !! 257&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; | [https://www.hse.ru/org/persons/528651897 Nikita Makarov]&lt;br /&gt;
|-&lt;br /&gt;
| Seminar Instructor&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; | [https://www.hse.ru/org/persons/191485259 Vladimir Kurenkov]&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | [https://t.me/seemur Simon Kondakov]&lt;br /&gt;
|-&lt;br /&gt;
| Teaching Assistant&lt;br /&gt;
| tg: [https://t.me/leon1dl @leon1dl]&lt;br /&gt;
| tg: [https://t.me/yksee @yksee]&lt;br /&gt;
| tg: [https://t.me/NaviMash @NaviMash]&lt;br /&gt;
| tg: [https://t.me/polina_gur @polina_gur]&lt;br /&gt;
| tg: [https://t.me/d_poIy @d_poIy]&lt;br /&gt;
| tg: [https://t.me/Mellodizzz @Mellodizzz]&lt;br /&gt;
| tg: [https://t.me/Ignkos @Ignkos]&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer Assistant&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; | [https://t.me/ilyamaranin @ilyamaranin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
You may find [https://docs.google.com/spreadsheets/d/1gNh2U8CpNMmzElsEsvcixd7GORehiour6SQlFfzRdhc/edit?usp=sharing your grades].&lt;br /&gt;
&lt;br /&gt;
== Formula ==&lt;br /&gt;
&#039;&#039;&#039;Final Grade = E * 0.4 + HW * 0.2 + Q * 0.2 + S * 0.2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039; - exam grade: rational number [0, 10] = sum of the grade for the oral and written parts, out of 5 each&lt;br /&gt;
* &#039;&#039;&#039;HW&#039;&#039;&#039; - homework grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;Q&#039;&#039;&#039; - lecture quizzes grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039; - seminar practice grade: rational number [0, 10]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;rounding&#039;&#039;&#039;: each element in the formulae is rounded up&lt;br /&gt;
&lt;br /&gt;
== Plagiarism policy ==&lt;br /&gt;
&lt;br /&gt;
If plagiarism is detected, the assessment element will be assigned a score of &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the student is suspected of preparing the task not on his own, the teacher has the right to initiate additional verification or defense of this particular assessment element. Then such an assessment element will be graded based on the additional verification or the defense.&lt;br /&gt;
&lt;br /&gt;
= Home assignments =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Contest !! Deadline !! Topic&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Lectures = &lt;br /&gt;
Lectures are held on Saturdays from 13:00 till 16:00.&lt;br /&gt;
&lt;br /&gt;
== Lecture Materials ==&lt;br /&gt;
&#039;&#039;&#039;Apr 18&#039;&#039;&#039;&lt;br /&gt;
* Introduction to the course&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, quicksort&lt;br /&gt;
* Lower bounds of sorting&lt;br /&gt;
* Counting sort&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 2, 3, 4, 7, 8&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Apr 25&#039;&#039;&#039;&lt;br /&gt;
* Radix sort&lt;br /&gt;
* Binary search trees, basic operations (searching, insertion, deletion, rotation), tree traversal (inorder, preorder, postorder)&lt;br /&gt;
* AVL-trees, main properties, searching, insertion&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 12, Knuth, vol. 3, ch. 6.2.3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;May 16&#039;&#039;&#039;&lt;br /&gt;
* AVL-trees, main properties, insertion, deletion&lt;br /&gt;
* Red-black trees, main properties, insertion&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 13, Knuth, vol. 3, ch. 6.2.3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;May 23&#039;&#039;&#039;&lt;br /&gt;
* Red-black trees, deletion&lt;br /&gt;
* Tries, main properties, basic operations, compact tries, PATRICIA trie&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 13, Mehta, ch. 28&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;May 30&#039;&#039;&#039;&lt;br /&gt;
* Quiz #1 (sorting, trees)&lt;br /&gt;
* PATRICIA trie, deletion&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jun 6&#039;&#039;&#039;&lt;br /&gt;
* B-trees, main properties, basic operations, 2-3-4 trees&lt;br /&gt;
* Treaps, basic operations, split and merge operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 18, Seidel, Aragon, &amp;quot;Randomized Search Trees&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jun 13&#039;&#039;&#039;&lt;br /&gt;
* Treap with implicit keys&lt;br /&gt;
* Segment tree&lt;br /&gt;
* Fenwick tree&lt;br /&gt;
* Hash tables, collisions, collision resolution by chaining&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Aragon, &amp;quot;Randomized Search Trees&amp;quot;, Mehta, ch. 11, 18, Cormen, ch. 11&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 4==&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Lower bounds of sorting using comparisons&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, heap sort, counting sort, radix sort&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, basic operations (insert, delete, rotate, find min/max)&lt;br /&gt;
* AVL-trees, basic operations&lt;br /&gt;
* Red-black trees, basic operations&lt;br /&gt;
* Treaps, basic operations&lt;br /&gt;
* Treap with implicit keys&lt;br /&gt;
* Tries, compact tries, basic operations&lt;br /&gt;
* 2-3-4 trees, basic operations&lt;br /&gt;
* B-trees, basic operations&lt;br /&gt;
* Segment tree, basic operations&lt;br /&gt;
* Hash tables, collisions, collision resolution by chaining&lt;/div&gt;</summary>
		<author><name>Nkmakarov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_1_DSBA_2025/2026&amp;diff=96848</id>
		<title>Algorithms and Data Structures 1 DSBA 2025/2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_1_DSBA_2025/2026&amp;diff=96848"/>
		<updated>2026-06-14T17:22:02Z</updated>

		<summary type="html">&lt;p&gt;Nkmakarov: Update list of lectures&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
This page contains basic information for the course Algorithms and Data Structures 1 in 2025/2026 academic year at Bachelor’s Programme in &#039;&#039;&#039;Data Science and Business Analytics&#039;&#039;&#039; (DSBA).&lt;br /&gt;
&lt;br /&gt;
The full syllabus can be accessed at [https://www.hse.ru/ba/data/courses/1072953806.html this page]. &lt;br /&gt;
&lt;br /&gt;
= Teachers and assistants = &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Group !! 251 !! 252 !! 253 !! 254 !! 255 !! 256 !! 257&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; | [https://www.hse.ru/org/persons/528651897 Nikita Makarov]&lt;br /&gt;
|-&lt;br /&gt;
| Seminar Instructor&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; | [https://www.hse.ru/org/persons/191485259 Vladimir Kurenkov]&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | [https://t.me/seemur Simon Kondakov]&lt;br /&gt;
|-&lt;br /&gt;
| Teaching Assistant&lt;br /&gt;
| tg: [https://t.me/leon1dl @leon1dl]&lt;br /&gt;
| tg: [https://t.me/yksee @yksee]&lt;br /&gt;
| tg: [https://t.me/NaviMash @NaviMash]&lt;br /&gt;
| tg: [https://t.me/polina_gur @polina_gur]&lt;br /&gt;
| tg: [https://t.me/d_poIy @d_poIy]&lt;br /&gt;
| tg: [https://t.me/Mellodizzz @Mellodizzz]&lt;br /&gt;
| tg: [https://t.me/Ignkos @Ignkos]&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer Assistant&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; | [https://t.me/ilyamaranin @ilyamaranin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
You may find [https://docs.google.com/spreadsheets/d/1gNh2U8CpNMmzElsEsvcixd7GORehiour6SQlFfzRdhc/edit?usp=sharing your grades].&lt;br /&gt;
&lt;br /&gt;
== Formula ==&lt;br /&gt;
&#039;&#039;&#039;Final Grade = E * 0.4 + HW * 0.2 + Q * 0.2 + S * 0.2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039; - exam grade: rational number [0, 10] = sum of the grade for the oral and written parts, out of 5 each&lt;br /&gt;
* &#039;&#039;&#039;HW&#039;&#039;&#039; - homework grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;Q&#039;&#039;&#039; - lecture quizzes grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039; - seminar practice grade: rational number [0, 10]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;rounding&#039;&#039;&#039;: each element in the formulae is rounded up&lt;br /&gt;
&lt;br /&gt;
== Plagiarism policy ==&lt;br /&gt;
&lt;br /&gt;
If plagiarism is detected, the assessment element will be assigned a score of &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the student is suspected of preparing the task not on his own, the teacher has the right to initiate additional verification or defense of this particular assessment element. Then such an assessment element will be graded based on the additional verification or the defense.&lt;br /&gt;
&lt;br /&gt;
= Home assignments =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Contest !! Deadline !! Topic&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Lectures = &lt;br /&gt;
Lectures are held on Saturdays from 13:00 till 16:00.&lt;br /&gt;
&lt;br /&gt;
== Lecture Materials ==&lt;br /&gt;
&#039;&#039;&#039;Apr 18&#039;&#039;&#039;&lt;br /&gt;
* Introduction to the course&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, quicksort&lt;br /&gt;
* Lower bounds of sorting&lt;br /&gt;
* Counting sort&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 2, 3, 4, 7, 8&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Apr 25&#039;&#039;&#039;&lt;br /&gt;
* Radix sort&lt;br /&gt;
* Binary search trees, basic operations (searching, insertion, deletion, rotation), tree traversal (inorder, preorder, postorder)&lt;br /&gt;
* AVL-trees, main properties, searching, insertion&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 12, Knuth, vol. 3, ch. 6.2.3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;May 16&#039;&#039;&#039;&lt;br /&gt;
* AVL-trees, main properties, insertion, deletion&lt;br /&gt;
* Red-black trees, main properties, insertion&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 13, Knuth, vol. 3, ch. 6.2.3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;May 23&#039;&#039;&#039;&lt;br /&gt;
* Red-black trees, deletion&lt;br /&gt;
* Tries, main properties, basic operations, compact tries, PATRICIA trie&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 13, Mehta, ch. 28&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;May 30&#039;&#039;&#039;&lt;br /&gt;
* Quiz #1 (sorting, trees)&lt;br /&gt;
* PATRICIA trie, deletion&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jun 6&#039;&#039;&#039;&lt;br /&gt;
* B-trees, main properties, basic operations, 2-3-4 trees&lt;br /&gt;
* Treaps, basic operations, split and merge operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 18, Seidel, Aragon, &amp;quot;Randomized Search Trees&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jun 13&#039;&#039;&#039;&lt;br /&gt;
* Treap with implicit keys&lt;br /&gt;
* Segment tree&lt;br /&gt;
* Fenwick tree&lt;br /&gt;
* Hash tables, collisions, collision resolution by chaining&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Aragon, &amp;quot;Randomized Search Trees&amp;quot;, Mehta, ch. 11, 18, Cormen, ch. 11&lt;/div&gt;</summary>
		<author><name>Nkmakarov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_1_DSBA_2025/2026&amp;diff=96783</id>
		<title>Algorithms and Data Structures 1 DSBA 2025/2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_1_DSBA_2025/2026&amp;diff=96783"/>
		<updated>2026-06-06T18:45:00Z</updated>

		<summary type="html">&lt;p&gt;Nkmakarov: Update list of lectures&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
This page contains basic information for the course Algorithms and Data Structures 1 in 2025/2026 academic year at Bachelor’s Programme in &#039;&#039;&#039;Data Science and Business Analytics&#039;&#039;&#039; (DSBA).&lt;br /&gt;
&lt;br /&gt;
The full syllabus can be accessed at [https://www.hse.ru/ba/data/courses/1072953806.html this page]. &lt;br /&gt;
&lt;br /&gt;
= Teachers and assistants = &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Group !! 251 !! 252 !! 253 !! 254 !! 255 !! 256 !! 257&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; | [https://www.hse.ru/org/persons/528651897 Nikita Makarov]&lt;br /&gt;
|-&lt;br /&gt;
| Seminar Instructor&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; | [https://www.hse.ru/org/persons/191485259 Vladimir Kurenkov]&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | [https://t.me/seemur Simon Kondakov]&lt;br /&gt;
|-&lt;br /&gt;
| Teaching Assistant&lt;br /&gt;
| tg: [https://t.me/leon1dl @leon1dl]&lt;br /&gt;
| tg: [https://t.me/yksee @yksee]&lt;br /&gt;
| tg: [https://t.me/NaviMash @NaviMash]&lt;br /&gt;
| tg: [https://t.me/polina_gur @polina_gur]&lt;br /&gt;
| tg: [https://t.me/d_poIy @d_poIy]&lt;br /&gt;
| tg: [https://t.me/Mellodizzz @Mellodizzz]&lt;br /&gt;
| tg: [https://t.me/Ignkos @Ignkos]&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer Assistant&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; | [https://t.me/ilyamaranin @ilyamaranin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
You may find [https://docs.google.com/spreadsheets/d/1gNh2U8CpNMmzElsEsvcixd7GORehiour6SQlFfzRdhc/edit?usp=sharing your grades].&lt;br /&gt;
&lt;br /&gt;
== Formula ==&lt;br /&gt;
&#039;&#039;&#039;Final Grade = E * 0.4 + HW * 0.2 + Q * 0.2 + S * 0.2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039; - exam grade: rational number [0, 10] = sum of the grade for the oral and written parts, out of 5 each&lt;br /&gt;
* &#039;&#039;&#039;HW&#039;&#039;&#039; - homework grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;Q&#039;&#039;&#039; - lecture quizzes grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039; - seminar practice grade: rational number [0, 10]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;rounding&#039;&#039;&#039;: each element in the formulae is rounded up&lt;br /&gt;
&lt;br /&gt;
== Plagiarism policy ==&lt;br /&gt;
&lt;br /&gt;
If plagiarism is detected, the assessment element will be assigned a score of &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the student is suspected of preparing the task not on his own, the teacher has the right to initiate additional verification or defense of this particular assessment element. Then such an assessment element will be graded based on the additional verification or the defense.&lt;br /&gt;
&lt;br /&gt;
= Home assignments =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Contest !! Deadline !! Topic&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Lectures = &lt;br /&gt;
Lectures are held on Saturdays from 13:00 till 16:00.&lt;br /&gt;
&lt;br /&gt;
== Lecture Materials ==&lt;br /&gt;
&#039;&#039;&#039;Apr 18&#039;&#039;&#039;&lt;br /&gt;
* Introduction to the course&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, quicksort&lt;br /&gt;
* Lower bounds of sorting&lt;br /&gt;
* Counting sort&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 2, 3, 4, 7, 8&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Apr 25&#039;&#039;&#039;&lt;br /&gt;
* Radix sort&lt;br /&gt;
* Binary search trees, basic operations (searching, insertion, deletion, rotation), tree traversal (inorder, preorder, postorder)&lt;br /&gt;
* AVL-trees, main properties, searching, insertion&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 12, Knuth, vol. 3, ch. 6.2.3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;May 16&#039;&#039;&#039;&lt;br /&gt;
* AVL-trees, main properties, insertion, deletion&lt;br /&gt;
* Red-black trees, main properties, insertion&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 13, Knuth, vol. 3, ch. 6.2.3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;May 23&#039;&#039;&#039;&lt;br /&gt;
* Red-black trees, deletion&lt;br /&gt;
* Tries, main properties, basic operations, compact tries, PATRICIA trie&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 13, Mehta, ch. 28&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;May 30&#039;&#039;&#039;&lt;br /&gt;
* Quiz #1 (sorting, trees)&lt;br /&gt;
* PATRICIA trie, deletion&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jun 6&#039;&#039;&#039;&lt;br /&gt;
* B-trees, main properties, basic operations, 2-3-4 trees&lt;br /&gt;
* Treaps, basic operations, split and merge operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 18, Seidel, Aragon, &amp;quot;Randomized Search Trees&amp;quot;&lt;/div&gt;</summary>
		<author><name>Nkmakarov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_1_DSBA_2025/2026&amp;diff=96704</id>
		<title>Algorithms and Data Structures 1 DSBA 2025/2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_1_DSBA_2025/2026&amp;diff=96704"/>
		<updated>2026-05-30T16:59:01Z</updated>

		<summary type="html">&lt;p&gt;Nkmakarov: Update list of lectures&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
This page contains basic information for the course Algorithms and Data Structures 1 in 2025/2026 academic year at Bachelor’s Programme in &#039;&#039;&#039;Data Science and Business Analytics&#039;&#039;&#039; (DSBA).&lt;br /&gt;
&lt;br /&gt;
The full syllabus can be accessed at [https://www.hse.ru/ba/data/courses/1072953806.html this page]. &lt;br /&gt;
&lt;br /&gt;
= Teachers and assistants = &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Group !! 251 !! 252 !! 253 !! 254 !! 255 !! 256 !! 257&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; | [https://www.hse.ru/org/persons/528651897 Nikita Makarov]&lt;br /&gt;
|-&lt;br /&gt;
| Seminar Instructor&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; | [https://www.hse.ru/org/persons/191485259 Vladimir Kurenkov]&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | [https://t.me/seemur Simon Kondakov]&lt;br /&gt;
|-&lt;br /&gt;
| Teaching Assistant&lt;br /&gt;
| tg: [https://t.me/leon1dl @leon1dl]&lt;br /&gt;
| tg: [https://t.me/yksee @yksee]&lt;br /&gt;
| tg: [https://t.me/NaviMash @NaviMash]&lt;br /&gt;
| tg: [https://t.me/polina_gur @polina_gur]&lt;br /&gt;
| tg: [https://t.me/d_poIy @d_poIy]&lt;br /&gt;
| tg: [https://t.me/Mellodizzz @Mellodizzz]&lt;br /&gt;
| tg: [https://t.me/Ignkos @Ignkos]&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer Assistant&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; | [https://t.me/ilyamaranin @ilyamaranin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
You may find [https://docs.google.com/spreadsheets/d/1gNh2U8CpNMmzElsEsvcixd7GORehiour6SQlFfzRdhc/edit?usp=sharing your grades].&lt;br /&gt;
&lt;br /&gt;
== Formula ==&lt;br /&gt;
&#039;&#039;&#039;Final Grade = E * 0.4 + HW * 0.2 + Q * 0.2 + S * 0.2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039; - exam grade: rational number [0, 10] = sum of the grade for the oral and written parts, out of 5 each&lt;br /&gt;
* &#039;&#039;&#039;HW&#039;&#039;&#039; - homework grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;Q&#039;&#039;&#039; - lecture quizzes grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039; - seminar practice grade: rational number [0, 10]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;rounding&#039;&#039;&#039;: each element in the formulae is rounded up&lt;br /&gt;
&lt;br /&gt;
== Plagiarism policy ==&lt;br /&gt;
&lt;br /&gt;
If plagiarism is detected, the assessment element will be assigned a score of &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the student is suspected of preparing the task not on his own, the teacher has the right to initiate additional verification or defense of this particular assessment element. Then such an assessment element will be graded based on the additional verification or the defense.&lt;br /&gt;
&lt;br /&gt;
= Home assignments =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Contest !! Deadline !! Topic&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Lectures = &lt;br /&gt;
Lectures are held on Saturdays from 13:00 till 16:00.&lt;br /&gt;
&lt;br /&gt;
== Lecture Materials ==&lt;br /&gt;
&#039;&#039;&#039;Apr 18&#039;&#039;&#039;&lt;br /&gt;
* Introduction to the course&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, quicksort&lt;br /&gt;
* Lower bounds of sorting&lt;br /&gt;
* Counting sort&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 2, 3, 4, 7, 8&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Apr 25&#039;&#039;&#039;&lt;br /&gt;
* Radix sort&lt;br /&gt;
* Binary search trees, basic operations (searching, insertion, deletion, rotation), tree traversal (inorder, preorder, postorder)&lt;br /&gt;
* AVL-trees, main properties, searching, insertion&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 12, Knuth, vol. 3, ch. 6.2.3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;May 16&#039;&#039;&#039;&lt;br /&gt;
* AVL-trees, main properties, insertion, deletion&lt;br /&gt;
* Red-black trees, main properties, insertion&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 13, Knuth, vol. 3, ch. 6.2.3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;May 23&#039;&#039;&#039;&lt;br /&gt;
* Red-black trees, deletion&lt;br /&gt;
* Tries, main properties, basic operations, compact tries, PATRICIA trie&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 13, Mehta, ch. 28&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;May 30&#039;&#039;&#039;&lt;br /&gt;
* Quiz #1 (sorting, trees)&lt;br /&gt;
* PATRICIA trie, deletion&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28&lt;/div&gt;</summary>
		<author><name>Nkmakarov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_1_DSBA_2025/2026&amp;diff=96644</id>
		<title>Algorithms and Data Structures 1 DSBA 2025/2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_1_DSBA_2025/2026&amp;diff=96644"/>
		<updated>2026-05-24T14:31:11Z</updated>

		<summary type="html">&lt;p&gt;Nkmakarov: Update list of lectures&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
This page contains basic information for the course Algorithms and Data Structures 1 in 2025/2026 academic year at Bachelor’s Programme in &#039;&#039;&#039;Data Science and Business Analytics&#039;&#039;&#039; (DSBA).&lt;br /&gt;
&lt;br /&gt;
The full syllabus can be accessed at [https://www.hse.ru/ba/data/courses/1072953806.html this page]. &lt;br /&gt;
&lt;br /&gt;
= Teachers and assistants = &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Group !! 251 !! 252 !! 253 !! 254 !! 255 !! 256 !! 257&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; | [https://www.hse.ru/org/persons/528651897 Nikita Makarov]&lt;br /&gt;
|-&lt;br /&gt;
| Seminar Instructor&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; | [https://www.hse.ru/org/persons/191485259 Vladimir Kurenkov]&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | [https://t.me/seemur Simon Kondakov]&lt;br /&gt;
|-&lt;br /&gt;
| Teaching Assistant&lt;br /&gt;
| tg: [https://t.me/leon1dl @leon1dl]&lt;br /&gt;
| tg: [https://t.me/yksee @yksee]&lt;br /&gt;
| tg: [https://t.me/NaviMash @NaviMash]&lt;br /&gt;
| tg: [https://t.me/polina_gur @polina_gur]&lt;br /&gt;
| tg: [https://t.me/d_poIy @d_poIy]&lt;br /&gt;
| tg: [https://t.me/Mellodizzz @Mellodizzz]&lt;br /&gt;
| tg: [https://t.me/Ignkos @Ignkos]&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer Assistant&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; | [https://t.me/ilyamaranin @ilyamaranin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
You may find [https://docs.google.com/spreadsheets/d/1gNh2U8CpNMmzElsEsvcixd7GORehiour6SQlFfzRdhc/edit?usp=sharing your grades].&lt;br /&gt;
&lt;br /&gt;
== Formula ==&lt;br /&gt;
&#039;&#039;&#039;Final Grade = E * 0.4 + HW * 0.2 + Q * 0.2 + S * 0.2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039; - exam grade: rational number [0, 10] = sum of the grade for the oral and written parts, out of 5 each&lt;br /&gt;
* &#039;&#039;&#039;HW&#039;&#039;&#039; - homework grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;Q&#039;&#039;&#039; - lecture quizzes grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039; - seminar practice grade: rational number [0, 10]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;rounding&#039;&#039;&#039;: each element in the formulae is rounded up&lt;br /&gt;
&lt;br /&gt;
== Plagiarism policy ==&lt;br /&gt;
&lt;br /&gt;
If plagiarism is detected, the assessment element will be assigned a score of &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the student is suspected of preparing the task not on his own, the teacher has the right to initiate additional verification or defense of this particular assessment element. Then such an assessment element will be graded based on the additional verification or the defense.&lt;br /&gt;
&lt;br /&gt;
= Home assignments =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Contest !! Deadline !! Topic&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Lectures = &lt;br /&gt;
Lectures are held on Saturdays from 13:00 till 16:00.&lt;br /&gt;
&lt;br /&gt;
== Lecture Materials ==&lt;br /&gt;
&#039;&#039;&#039;Apr 18&#039;&#039;&#039;&lt;br /&gt;
* Introduction to the course&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, quicksort&lt;br /&gt;
* Lower bounds of sorting&lt;br /&gt;
* Counting sort&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 2, 3, 4, 7, 8&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Apr 25&#039;&#039;&#039;&lt;br /&gt;
* Radix sort&lt;br /&gt;
* Binary search trees, basic operations (searching, insertion, deletion, rotation), tree traversal (inorder, preorder, postorder)&lt;br /&gt;
* AVL-trees, main properties, searching, insertion&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 12, Knuth, vol. 3, ch. 6.2.3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;May 16&#039;&#039;&#039;&lt;br /&gt;
* AVL-trees, main properties, insertion, deletion&lt;br /&gt;
* Red-black trees, main properties, insertion&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 13, Knuth, vol. 3, ch. 6.2.3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;May 23&#039;&#039;&#039;&lt;br /&gt;
* Red-black trees, deletion&lt;br /&gt;
* Tries, main properties, basic operations, compact tries, PATRICIA trie&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 13, Mehta, ch. 28&lt;/div&gt;</summary>
		<author><name>Nkmakarov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_1_DSBA_2025/2026&amp;diff=96567</id>
		<title>Algorithms and Data Structures 1 DSBA 2025/2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_1_DSBA_2025/2026&amp;diff=96567"/>
		<updated>2026-05-16T15:50:05Z</updated>

		<summary type="html">&lt;p&gt;Nkmakarov: Update list of lectures&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
This page contains basic information for the course Algorithms and Data Structures 1 in 2025/2026 academic year at Bachelor’s Programme in &#039;&#039;&#039;Data Science and Business Analytics&#039;&#039;&#039; (DSBA).&lt;br /&gt;
&lt;br /&gt;
The full syllabus can be accessed at [https://www.hse.ru/ba/data/courses/1072953806.html this page]. &lt;br /&gt;
&lt;br /&gt;
= Teachers and assistants = &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Group !! 251 !! 252 !! 253 !! 254 !! 255 !! 256 !! 257&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; | [https://www.hse.ru/org/persons/528651897 Nikita Makarov]&lt;br /&gt;
|-&lt;br /&gt;
| Seminar Instructor&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; | [https://www.hse.ru/org/persons/191485259 Vladimir Kurenkov]&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | [https://t.me/seemur Simon Kondakov]&lt;br /&gt;
|-&lt;br /&gt;
| Teaching Assistant&lt;br /&gt;
| tg: [https://t.me/leon1dl @leon1dl]&lt;br /&gt;
| tg: [https://t.me/yksee @yksee]&lt;br /&gt;
| tg: [https://t.me/NaviMash @NaviMash]&lt;br /&gt;
| tg: [https://t.me/polina_gur @polina_gur]&lt;br /&gt;
| tg: [https://t.me/d_poIy @d_poIy]&lt;br /&gt;
| tg: [https://t.me/Mellodizzz @Mellodizzz]&lt;br /&gt;
| tg: [https://t.me/Ignkos @Ignkos]&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer Assistant&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; | [https://t.me/ilyamaranin @ilyamaranin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
You may find [https://docs.google.com/spreadsheets/d/1gNh2U8CpNMmzElsEsvcixd7GORehiour6SQlFfzRdhc/edit?usp=sharing your grades].&lt;br /&gt;
&lt;br /&gt;
== Formula ==&lt;br /&gt;
&#039;&#039;&#039;Final Grade = E * 0.4 + HW * 0.2 + Q * 0.2 + S * 0.2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039; - exam grade: rational number [0, 10] = sum of the grade for the oral and written parts, out of 5 each&lt;br /&gt;
* &#039;&#039;&#039;HW&#039;&#039;&#039; - homework grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;Q&#039;&#039;&#039; - lecture quizzes grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039; - seminar practice grade: rational number [0, 10]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;rounding&#039;&#039;&#039;: each element in the formulae is rounded up&lt;br /&gt;
&lt;br /&gt;
== Plagiarism policy ==&lt;br /&gt;
&lt;br /&gt;
If plagiarism is detected, the assessment element will be assigned a score of &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the student is suspected of preparing the task not on his own, the teacher has the right to initiate additional verification or defense of this particular assessment element. Then such an assessment element will be graded based on the additional verification or the defense.&lt;br /&gt;
&lt;br /&gt;
= Home assignments =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Contest !! Deadline !! Topic&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Lectures = &lt;br /&gt;
Lectures are held on Saturdays from 13:00 till 16:00.&lt;br /&gt;
&lt;br /&gt;
== Lecture Materials ==&lt;br /&gt;
&#039;&#039;&#039;Apr 18&#039;&#039;&#039;&lt;br /&gt;
* Introduction to the course&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, quicksort&lt;br /&gt;
* Lower bounds of sorting&lt;br /&gt;
* Counting sort&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 2, 3, 4, 7, 8&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Apr 25&#039;&#039;&#039;&lt;br /&gt;
* Radix sort&lt;br /&gt;
* Binary search trees, basic operations (searching, insertion, deletion, rotation), tree traversal (inorder, preorder, postorder)&lt;br /&gt;
* AVL-trees, main properties, searching, insertion&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 12, Knuth, vol. 3, ch. 6.2.3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;May 16&#039;&#039;&#039;&lt;br /&gt;
* AVL-trees, main properties, insertion, deletion&lt;br /&gt;
* Red-black trees, main properties, insertion&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 13, Knuth, vol. 3, ch. 6.2.3&lt;/div&gt;</summary>
		<author><name>Nkmakarov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_1_DSBA_2025/2026&amp;diff=96566</id>
		<title>Algorithms and Data Structures 1 DSBA 2025/2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_1_DSBA_2025/2026&amp;diff=96566"/>
		<updated>2026-05-16T15:49:39Z</updated>

		<summary type="html">&lt;p&gt;Nkmakarov: Update list of lectures&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
This page contains basic information for the course Algorithms and Data Structures 1 in 2025/2026 academic year at Bachelor’s Programme in &#039;&#039;&#039;Data Science and Business Analytics&#039;&#039;&#039; (DSBA).&lt;br /&gt;
&lt;br /&gt;
The full syllabus can be accessed at [https://www.hse.ru/ba/data/courses/1072953806.html this page]. &lt;br /&gt;
&lt;br /&gt;
= Teachers and assistants = &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Group !! 251 !! 252 !! 253 !! 254 !! 255 !! 256 !! 257&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; | [https://www.hse.ru/org/persons/528651897 Nikita Makarov]&lt;br /&gt;
|-&lt;br /&gt;
| Seminar Instructor&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; | [https://www.hse.ru/org/persons/191485259 Vladimir Kurenkov]&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | [https://t.me/seemur Simon Kondakov]&lt;br /&gt;
|-&lt;br /&gt;
| Teaching Assistant&lt;br /&gt;
| tg: [https://t.me/leon1dl @leon1dl]&lt;br /&gt;
| tg: [https://t.me/yksee @yksee]&lt;br /&gt;
| tg: [https://t.me/NaviMash @NaviMash]&lt;br /&gt;
| tg: [https://t.me/polina_gur @polina_gur]&lt;br /&gt;
| tg: [https://t.me/d_poIy @d_poIy]&lt;br /&gt;
| tg: [https://t.me/Mellodizzz @Mellodizzz]&lt;br /&gt;
| tg: [https://t.me/Ignkos @Ignkos]&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer Assistant&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; | [https://t.me/ilyamaranin @ilyamaranin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
You may find [https://docs.google.com/spreadsheets/d/1gNh2U8CpNMmzElsEsvcixd7GORehiour6SQlFfzRdhc/edit?usp=sharing your grades].&lt;br /&gt;
&lt;br /&gt;
== Formula ==&lt;br /&gt;
&#039;&#039;&#039;Final Grade = E * 0.4 + HW * 0.2 + Q * 0.2 + S * 0.2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039; - exam grade: rational number [0, 10] = sum of the grade for the oral and written parts, out of 5 each&lt;br /&gt;
* &#039;&#039;&#039;HW&#039;&#039;&#039; - homework grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;Q&#039;&#039;&#039; - lecture quizzes grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039; - seminar practice grade: rational number [0, 10]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;rounding&#039;&#039;&#039;: each element in the formulae is rounded up&lt;br /&gt;
&lt;br /&gt;
== Plagiarism policy ==&lt;br /&gt;
&lt;br /&gt;
If plagiarism is detected, the assessment element will be assigned a score of &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the student is suspected of preparing the task not on his own, the teacher has the right to initiate additional verification or defense of this particular assessment element. Then such an assessment element will be graded based on the additional verification or the defense.&lt;br /&gt;
&lt;br /&gt;
= Home assignments =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Contest !! Deadline !! Topic&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Lectures = &lt;br /&gt;
Lectures are held on Saturdays from 13:00 till 16:00.&lt;br /&gt;
&lt;br /&gt;
== Lecture Materials ==&lt;br /&gt;
&#039;&#039;&#039;Apr 18&#039;&#039;&#039;&lt;br /&gt;
* Introduction to the course&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, quicksort&lt;br /&gt;
* Lower bounds of sorting&lt;br /&gt;
* Counting sort&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 2, 3, 4, 7, 8&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Apr 25&#039;&#039;&#039;&lt;br /&gt;
* Radix sort&lt;br /&gt;
* Binary search trees, basic operations (searching, insertion, deletion, rotation), tree traversal (inorder, preorder, postorder)&lt;br /&gt;
* AVL-trees, main properties, searching, insertion&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 12, Knuth, vol. 3, ch. 6.2.3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;May 16&#039;&#039;&#039;&lt;br /&gt;
* AVL-trees, main properties, searching, insertion, deletion&lt;br /&gt;
* Red-black trees, main properties, insertion&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 13, Knuth, vol. 3, ch. 6.2.3&lt;/div&gt;</summary>
		<author><name>Nkmakarov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_1_DSBA_2025/2026&amp;diff=96393</id>
		<title>Algorithms and Data Structures 1 DSBA 2025/2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_1_DSBA_2025/2026&amp;diff=96393"/>
		<updated>2026-04-25T16:13:47Z</updated>

		<summary type="html">&lt;p&gt;Nkmakarov: Update list of lectures&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
This page contains basic information for the course Algorithms and Data Structures 1 in 2025/2026 academic year at Bachelor’s Programme in &#039;&#039;&#039;Data Science and Business Analytics&#039;&#039;&#039; (DSBA).&lt;br /&gt;
&lt;br /&gt;
The full syllabus can be accessed at [https://www.hse.ru/ba/data/courses/1072953806.html this page]. &lt;br /&gt;
&lt;br /&gt;
= Teachers and assistants = &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Group !! 251 !! 252 !! 253 !! 254 !! 255 !! 256 !! 257&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; | [https://www.hse.ru/org/persons/528651897 Nikita Makarov]&lt;br /&gt;
|-&lt;br /&gt;
| Seminar Instructor&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; | [https://www.hse.ru/org/persons/191485259 Vladimir Kurenkov]&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | [https://t.me/seemur Simon Kondakov]&lt;br /&gt;
|-&lt;br /&gt;
| Teaching Assistant&lt;br /&gt;
| tg: [https://t.me/leon1dl @leon1dl]&lt;br /&gt;
| tg: [https://t.me/yksee @yksee]&lt;br /&gt;
| tg: [https://t.me/NaviMash @NaviMash]&lt;br /&gt;
| tg: [https://t.me/polina_gur @polina_gur]&lt;br /&gt;
| tg: [https://t.me/d_poIy @d_poIy]&lt;br /&gt;
| tg: [https://t.me/Mellodizzz @Mellodizzz]&lt;br /&gt;
| tg: [https://t.me/Ignkos @Ignkos]&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer Assistant&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; | [https://t.me/ilyamaranin @ilyamaranin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
You may find [https://docs.google.com/spreadsheets/d/1gNh2U8CpNMmzElsEsvcixd7GORehiour6SQlFfzRdhc/edit?usp=sharing your grades].&lt;br /&gt;
&lt;br /&gt;
== Formula ==&lt;br /&gt;
&#039;&#039;&#039;Final Grade = E * 0.4 + HW * 0.2 + Q * 0.2 + S * 0.2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039; - exam grade: rational number [0, 10] = sum of the grade for the oral and written parts, out of 5 each&lt;br /&gt;
* &#039;&#039;&#039;HW&#039;&#039;&#039; - homework grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;Q&#039;&#039;&#039; - lecture quizzes grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039; - seminar practice grade: rational number [0, 10]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;rounding&#039;&#039;&#039;: each element in the formulae is rounded up&lt;br /&gt;
&lt;br /&gt;
== Plagiarism policy ==&lt;br /&gt;
&lt;br /&gt;
If plagiarism is detected, the assessment element will be assigned a score of &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the student is suspected of preparing the task not on his own, the teacher has the right to initiate additional verification or defense of this particular assessment element. Then such an assessment element will be graded based on the additional verification or the defense.&lt;br /&gt;
&lt;br /&gt;
= Home assignments =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Contest !! Deadline !! Topic&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Lectures = &lt;br /&gt;
Lectures are held on Saturdays from 13:00 till 16:00.&lt;br /&gt;
&lt;br /&gt;
== Lecture Materials ==&lt;br /&gt;
&#039;&#039;&#039;Apr 18&#039;&#039;&#039;&lt;br /&gt;
* Introduction to the course&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, quicksort&lt;br /&gt;
* Lower bounds of sorting&lt;br /&gt;
* Counting sort&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 2, 3, 4, 7, 8&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Apr 25&#039;&#039;&#039;&lt;br /&gt;
* Radix sort&lt;br /&gt;
* Binary search trees, basic operations (searching, insertion, deletion, rotation), tree traversal (inorder, preorder, postorder)&lt;br /&gt;
* AVL-trees, main properties, searching, insertion&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 12, Knuth, vol. 3, ch. 6.2.3&lt;/div&gt;</summary>
		<author><name>Nkmakarov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_1_DSBA_2025/2026&amp;diff=96392</id>
		<title>Algorithms and Data Structures 1 DSBA 2025/2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_1_DSBA_2025/2026&amp;diff=96392"/>
		<updated>2026-04-25T16:06:31Z</updated>

		<summary type="html">&lt;p&gt;Nkmakarov: Update list of lectures&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
This page contains basic information for the course Algorithms and Data Structures 1 in 2025/2026 academic year at Bachelor’s Programme in &#039;&#039;&#039;Data Science and Business Analytics&#039;&#039;&#039; (DSBA).&lt;br /&gt;
&lt;br /&gt;
The full syllabus can be accessed at [https://www.hse.ru/ba/data/courses/1072953806.html this page]. &lt;br /&gt;
&lt;br /&gt;
= Teachers and assistants = &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Group !! 251 !! 252 !! 253 !! 254 !! 255 !! 256 !! 257&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; | [https://www.hse.ru/org/persons/528651897 Nikita Makarov]&lt;br /&gt;
|-&lt;br /&gt;
| Seminar Instructor&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; | [https://www.hse.ru/org/persons/191485259 Vladimir Kurenkov]&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | [https://t.me/seemur Simon Kondakov]&lt;br /&gt;
|-&lt;br /&gt;
| Teaching Assistant&lt;br /&gt;
| tg: [https://t.me/leon1dl @leon1dl]&lt;br /&gt;
| tg: [https://t.me/yksee @yksee]&lt;br /&gt;
| tg: [https://t.me/NaviMash @NaviMash]&lt;br /&gt;
| tg: [https://t.me/polina_gur @polina_gur]&lt;br /&gt;
| tg: [https://t.me/d_poIy @d_poIy]&lt;br /&gt;
| tg: [https://t.me/Mellodizzz @Mellodizzz]&lt;br /&gt;
| tg: [https://t.me/Ignkos @Ignkos]&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer Assistant&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; | [https://t.me/ilyamaranin @ilyamaranin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
You may find [https://docs.google.com/spreadsheets/d/1gNh2U8CpNMmzElsEsvcixd7GORehiour6SQlFfzRdhc/edit?usp=sharing your grades].&lt;br /&gt;
&lt;br /&gt;
== Formula ==&lt;br /&gt;
&#039;&#039;&#039;Final Grade = E * 0.4 + HW * 0.2 + Q * 0.2 + S * 0.2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039; - exam grade: rational number [0, 10] = sum of the grade for the oral and written parts, out of 5 each&lt;br /&gt;
* &#039;&#039;&#039;HW&#039;&#039;&#039; - homework grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;Q&#039;&#039;&#039; - lecture quizzes grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039; - seminar practice grade: rational number [0, 10]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;rounding&#039;&#039;&#039;: each element in the formulae is rounded up&lt;br /&gt;
&lt;br /&gt;
== Plagiarism policy ==&lt;br /&gt;
&lt;br /&gt;
If plagiarism is detected, the assessment element will be assigned a score of &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the student is suspected of preparing the task not on his own, the teacher has the right to initiate additional verification or defense of this particular assessment element. Then such an assessment element will be graded based on the additional verification or the defense.&lt;br /&gt;
&lt;br /&gt;
= Home assignments =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Contest !! Deadline !! Topic&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Lectures = &lt;br /&gt;
Lectures are held on Saturdays from 13:00 till 16:00.&lt;br /&gt;
&lt;br /&gt;
== Lecture Materials ==&lt;br /&gt;
&#039;&#039;&#039;Apr 18&#039;&#039;&#039;&lt;br /&gt;
* Introduction to the course&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, quicksort&lt;br /&gt;
* Lower bounds of sorting&lt;br /&gt;
* Counting sort&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 2, 3, 8&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Apr 25&#039;&#039;&#039;&lt;br /&gt;
* Radix sort&lt;br /&gt;
* Binary search trees, basic operations (searching, insertion, deletion, rotation), tree traversal (inorder, preorder, postorder)&lt;br /&gt;
* AVL-trees, main properties, searching, insertion&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 12, Knuth, vol. 3, ch. 6.2.3&lt;/div&gt;</summary>
		<author><name>Nkmakarov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=95864</id>
		<title>Algorithms and Data Structures DSBA 2025/2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=95864"/>
		<updated>2026-03-21T19:00:04Z</updated>

		<summary type="html">&lt;p&gt;Nkmakarov: Update list of topics&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
This page contains basic information for the course Algorithms and Data Structures in 2024/2025 academic year at Bachelor’s Programme in &#039;&#039;&#039;Data Science and Business Analytics&#039;&#039;&#039; (DSBA).&lt;br /&gt;
&lt;br /&gt;
The full syllabus can be accessed at [https://www.hse.ru/ba/data/courses/1071074261.html this page]. &lt;br /&gt;
&lt;br /&gt;
= Teachers and assistants = &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Group !! 241 !! 242 !! 243 !! 244 !! 245 !! 246&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://www.hse.ru/org/persons/528651897 Nikita Makarov]&lt;br /&gt;
|-&lt;br /&gt;
| Seminar Instructor&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | [https://www.hse.ru/org/persons/191485259 Vladimir Kurenkov]&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | [https://t.me/seemur Simon Kondakov]&lt;br /&gt;
|-&lt;br /&gt;
| Teaching Assistant&lt;br /&gt;
| tg: [https://t.me/leon1dl @leon1dl]&lt;br /&gt;
| tg: [https://t.me/Mellodizzz @Mellodizzz]&lt;br /&gt;
| tg: [https://t.me/yksee @yksee]&lt;br /&gt;
| tg: [https://t.me/polina_gur @polina_gur]&lt;br /&gt;
| tg: [https://t.me/d_poly @d_poly]&lt;br /&gt;
| tg: [https://t.me/NaviMash @NaviMash]&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer Assistant&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://t.me/svbudygin @svbudygin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
You may find [https://docs.google.com/spreadsheets/d/1Qh4uXaAZy-nX-dYlA_CtAo4zoWhvwC1ekL4p5-8As0A/edit?gid=1121952238#gid=1121952238 your grades].&lt;br /&gt;
&lt;br /&gt;
== Formula ==&lt;br /&gt;
&#039;&#039;&#039;Final Grade = M1 * 0.4 + M3 * 0.6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mi = E * 0.4 + HW * 0.2 + Q * 0.2 + S * 0.2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039; - exam grade: rational number [0, 10] = sum of the grade for the oral and written parts, out of 5 each&lt;br /&gt;
* &#039;&#039;&#039;HW&#039;&#039;&#039; - homework grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;Q&#039;&#039;&#039; - lecture quizzes grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039; - seminar practice grade: rational number [0, 10]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;rounding&#039;&#039;&#039;: each element in the formulae is rounded up&lt;br /&gt;
&lt;br /&gt;
== Plagiarism policy ==&lt;br /&gt;
&lt;br /&gt;
If plagiarism is detected, the assessment element will be assigned a score of &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the student is suspected of preparing the task not on his own, the teacher has the right to initiate additional verification or defense of this particular assessment element. Then such an assessment element will be graded based on the additional verification or the defense.&lt;br /&gt;
&lt;br /&gt;
= Home assignments =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Contest !! Deadline !! Topic&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Lectures = &lt;br /&gt;
Lectures are held on Saturdays from 14:40 till 17:40.&lt;br /&gt;
&lt;br /&gt;
== Lecture Materials ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 6&#039;&#039;&#039;&lt;br /&gt;
* Introduction to the course&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort&lt;br /&gt;
* Lower bounds of sorting&lt;br /&gt;
* Counting sort&lt;br /&gt;
* Radix sort&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 2, 3, 8&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 13&#039;&#039;&#039;&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, basic operations (insert, delete, rotate, find min/max)&lt;br /&gt;
* AVL-trees, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 12, Knuth, vol. 3, ch. 6.2.3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 27&#039;&#039;&#039;&lt;br /&gt;
* Red-black trees, basic operations&lt;br /&gt;
* Treaps, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 13&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 4&#039;&#039;&#039;&lt;br /&gt;
* Treaps, how to insert and to remove items using split and merge&lt;br /&gt;
* Treaps with implicit keys&lt;br /&gt;
* Tries, compact tries, basic operations&lt;br /&gt;
* 2-3-4 trees, basic operations: search, insert&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 11&#039;&#039;&#039;&lt;br /&gt;
* Quiz #1 (sorting, trees)&lt;br /&gt;
* 2-3-4 trees, basic operations: delete&lt;br /&gt;
* B-trees, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 18&#039;&#039;&#039;&lt;br /&gt;
* Hash tables, collisions, collision resolution by chaining, open addressing&lt;br /&gt;
* PATRICIA trie, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 25&#039;&#039;&#039;&lt;br /&gt;
* Exam in module 1&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 8&#039;&#039;&#039;&lt;br /&gt;
* Exact string matching, naive algorithm, the preprocessing approach, Z-algorithm, the simplest linear-time algorithm&lt;br /&gt;
* The Knuth-Morris-Pratt algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 1, 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 15&#039;&#039;&#039;&lt;br /&gt;
* The Boyer-Moore algorithm&lt;br /&gt;
* The Aho-Corasick algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 2, 3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 22&#039;&#039;&#039;&lt;br /&gt;
* Suffix trees: basic definition, naive algorithm to build&lt;br /&gt;
* Suffix trees: Ukkonen&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 5, 6&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 29&#039;&#039;&#039;&lt;br /&gt;
* Quiz #2 (string matching)&lt;br /&gt;
* Suffix trees applications: generalized suffix tree, the longest common substring for two and more strings&lt;br /&gt;
* Suffix arrays: building using suffix tree, exact string matching&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 6, 7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 6&#039;&#039;&#039;&lt;br /&gt;
* Suffix arrays: exact string matching&lt;br /&gt;
* Dynamic programming, two conveyors problem&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 7, Cormen, ch. 15&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 13&#039;&#039;&#039;&lt;br /&gt;
* Dynamic programming: two conveyors problem, matrix-chain multiplication, the longest common subsequence, the Levenstein distance&lt;br /&gt;
* Greedy algoirthms: an activity-selection problem, Huffman codes&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 15, 16&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 10&#039;&#039;&#039;&lt;br /&gt;
* Greedy algoirthms: the longest increasing subsequence, LCS-problem with greedy approach&lt;br /&gt;
* Greedy algorithms: Huffman codes, correctness of Huffman&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 16&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 17&#039;&#039;&#039;&lt;br /&gt;
* Text compression, models: static, semistatic, adaptive, symbolwise models, dictionary models&lt;br /&gt;
* Dictionary models: LZ-77, LZ-78, LZW&lt;br /&gt;
* Static and semistatic Huffman codes, tree serialization&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 1, 2, Atallah, ch. 12&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 24&#039;&#039;&#039;&lt;br /&gt;
* Adaptive Huffman codes&lt;br /&gt;
* Arithmetic coding&lt;br /&gt;
* RLE&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Atallah, ch. 12, Witten, ch. 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 31&#039;&#039;&#039;&lt;br /&gt;
* Quiz #3 (dynamic programming, greedy algorithms)&lt;br /&gt;
* RLE implementation&lt;br /&gt;
* Burrows-Wheeler transform&lt;br /&gt;
* Move to front&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feb 7&#039;&#039;&#039;&lt;br /&gt;
* Graphs, main definitions, representation of graphs&lt;br /&gt;
* Breadth-first search, single-source shortest paths in non-weighted graph&lt;br /&gt;
* Depth-first search, topological sort, strongly connected components&lt;br /&gt;
* Single-source shortest paths, Bellman-Ford algorithm, Dijkstra&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 22, 24&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feb 14&#039;&#039;&#039;&lt;br /&gt;
* Single-source shortest paths, Dijkstra&#039;s algorithm&lt;br /&gt;
* All-pairs shortest paths, &amp;quot;matrix multiplication&amp;quot;, Floyd-Warshall algorithm, Johnson&#039;s algorithm&lt;br /&gt;
* Maximum flow, main definitions&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 24, 25, 26&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feb 21&#039;&#039;&#039;&lt;br /&gt;
* Maximum flow, Ford-Fulkerson method, Edmonds-Karp algorithm&lt;br /&gt;
* Push-relabel algorithm&lt;br /&gt;
* Maximum bipartite matching, Ford-Fulkerson method, Kuhn&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 26&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mar 7&#039;&#039;&#039;&lt;br /&gt;
* Minimum spanning trees: Prim&#039;s algorithm, Kruskal&#039;s algorithm&lt;br /&gt;
* Disjoint sets: linked list representation, disjoint-set forest&lt;br /&gt;
* Polynomials, coefficient representation, point-value representation, main operations&lt;br /&gt;
* Discrete Fourier transform&lt;br /&gt;
* Fast Fourier transform&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 21, 23, 30&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mar 14&#039;&#039;&#039;&lt;br /&gt;
* Quiz #4 (graphs)&lt;br /&gt;
* Deterministic finite automata&lt;br /&gt;
* Nondeterministic finite automata&lt;br /&gt;
* Equivalence of DFA and NFA&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Hopcroft, ch. 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mar 21&#039;&#039;&#039;&lt;br /&gt;
* Finite automata with epsilon-transitions&lt;br /&gt;
* Regular expressions&lt;br /&gt;
* Converting RE to NFA with epsilon-transitions&lt;br /&gt;
* Converting DFA&#039;s to RE&lt;br /&gt;
* Context-free languages&lt;br /&gt;
* Context-free grammar, derivations using a grammar, leftmost and rightmost derivations&lt;br /&gt;
* Parse trees&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Hopcroft, ch. 3, 4, 5&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 1==&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Lower bounds of sorting using comparisons&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, heap sort, counting sort, radix sort&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, basic operations (insert, delete, rotate, find min/max)&lt;br /&gt;
* AVL-trees, basic operations&lt;br /&gt;
* Red-black trees, basic operations&lt;br /&gt;
* Treaps, basic operations&lt;br /&gt;
* Treaps with implicit keys&lt;br /&gt;
* Tries, compact tries, basic operations&lt;br /&gt;
* 2-3-4 trees, basic operations&lt;br /&gt;
* B-trees, basic operations&lt;br /&gt;
* Hash tables, collisions, collision resolution by chaining, open addressing&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 3==&lt;br /&gt;
* Exact string matching, naive algorithm, the preprocessing approach, Z-algorithm, the simplest linear-time algorithm, Knuth-Morris-Pratt algorithm, Boyer-Moore algorithm, Aho-Corasick algorithm&lt;br /&gt;
* Suffix trees: basic definition, naive algorithm to build, Ukkonen&#039;s algorithm&lt;br /&gt;
* Suffix trees applications: generalized suffix tree, the longest common substring for two and more strings&lt;br /&gt;
* Suffix arrays: building using suffix tree, exact string matching&lt;br /&gt;
* Dynamic programming, two conveyors problem, knapsack problem, matrix-chain multiplication, the longest common subsequence, the Levenstein distance&lt;br /&gt;
* Greedy algoirthms: an activity-selection problem, Huffman codes, the longest increasing subsequence, LCS-problem with greedy approach, knapsack problem&lt;br /&gt;
* Text compression, models: static, semistatic, adaptive, symbolwise models, dictionary models&lt;br /&gt;
* Symbolwise models: static and semistatic Huffman codes, tree serialization, adaptive Huffman codes, arithmetic coding&lt;br /&gt;
* Dictionary models: LZ-77, LZ-78, LZW&lt;br /&gt;
* Text modifications: RLE, Burrows-Wheeler transform, Move-to-front&lt;br /&gt;
* Graphs: main definitions, representation of graphs, breadth-first search, single-source shortest paths in non-weighted graph, depth-first search, topological sort, strongly connected components&lt;br /&gt;
* Minimum spanning trees: Prim&#039;s algorithm, Kruskal&#039;s algorithm&lt;br /&gt;
* Disjoint sets: linked list representation, disjoint-set forest&lt;br /&gt;
* Single-source shortest paths: Bellman-Ford algorithm, Dijkstra&#039;s algorithm&lt;br /&gt;
* All-pairs shortest paths: &amp;quot;matrix multiplication&amp;quot;, Floyd-Warshall algorithm, Johnson&#039;s algorithm&lt;br /&gt;
* Maximum flow: Ford-Fulkerson method, Edmonds-Karp algorithm, push-relabel algorithm&lt;br /&gt;
* Maximum bipartite matching: Ford-Fulkerson method, Kuhn&#039;s algorithm&lt;br /&gt;
* Polynomials: coefficient representation, point-value representation, discrete Fourier transform, fast Fourier transform&lt;br /&gt;
* Regular languages: deterministic finite automata, nondeterministic finite automata, equivalence of DFA and NFA, finite automata with epsilon-transitions, regular expressions, converting RE to NFA with epsilon-transitions, converting DFA&#039;s to RE&lt;/div&gt;</summary>
		<author><name>Nkmakarov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=95863</id>
		<title>Algorithms and Data Structures DSBA 2025/2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=95863"/>
		<updated>2026-03-21T18:59:02Z</updated>

		<summary type="html">&lt;p&gt;Nkmakarov: List of topics for exam&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
This page contains basic information for the course Algorithms and Data Structures in 2024/2025 academic year at Bachelor’s Programme in &#039;&#039;&#039;Data Science and Business Analytics&#039;&#039;&#039; (DSBA).&lt;br /&gt;
&lt;br /&gt;
The full syllabus can be accessed at [https://www.hse.ru/ba/data/courses/1071074261.html this page]. &lt;br /&gt;
&lt;br /&gt;
= Teachers and assistants = &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Group !! 241 !! 242 !! 243 !! 244 !! 245 !! 246&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://www.hse.ru/org/persons/528651897 Nikita Makarov]&lt;br /&gt;
|-&lt;br /&gt;
| Seminar Instructor&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | [https://www.hse.ru/org/persons/191485259 Vladimir Kurenkov]&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | [https://t.me/seemur Simon Kondakov]&lt;br /&gt;
|-&lt;br /&gt;
| Teaching Assistant&lt;br /&gt;
| tg: [https://t.me/leon1dl @leon1dl]&lt;br /&gt;
| tg: [https://t.me/Mellodizzz @Mellodizzz]&lt;br /&gt;
| tg: [https://t.me/yksee @yksee]&lt;br /&gt;
| tg: [https://t.me/polina_gur @polina_gur]&lt;br /&gt;
| tg: [https://t.me/d_poly @d_poly]&lt;br /&gt;
| tg: [https://t.me/NaviMash @NaviMash]&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer Assistant&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://t.me/svbudygin @svbudygin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
You may find [https://docs.google.com/spreadsheets/d/1Qh4uXaAZy-nX-dYlA_CtAo4zoWhvwC1ekL4p5-8As0A/edit?gid=1121952238#gid=1121952238 your grades].&lt;br /&gt;
&lt;br /&gt;
== Formula ==&lt;br /&gt;
&#039;&#039;&#039;Final Grade = M1 * 0.4 + M3 * 0.6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mi = E * 0.4 + HW * 0.2 + Q * 0.2 + S * 0.2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039; - exam grade: rational number [0, 10] = sum of the grade for the oral and written parts, out of 5 each&lt;br /&gt;
* &#039;&#039;&#039;HW&#039;&#039;&#039; - homework grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;Q&#039;&#039;&#039; - lecture quizzes grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039; - seminar practice grade: rational number [0, 10]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;rounding&#039;&#039;&#039;: each element in the formulae is rounded up&lt;br /&gt;
&lt;br /&gt;
== Plagiarism policy ==&lt;br /&gt;
&lt;br /&gt;
If plagiarism is detected, the assessment element will be assigned a score of &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the student is suspected of preparing the task not on his own, the teacher has the right to initiate additional verification or defense of this particular assessment element. Then such an assessment element will be graded based on the additional verification or the defense.&lt;br /&gt;
&lt;br /&gt;
= Home assignments =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Contest !! Deadline !! Topic&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Lectures = &lt;br /&gt;
Lectures are held on Saturdays from 14:40 till 17:40.&lt;br /&gt;
&lt;br /&gt;
== Lecture Materials ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 6&#039;&#039;&#039;&lt;br /&gt;
* Introduction to the course&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort&lt;br /&gt;
* Lower bounds of sorting&lt;br /&gt;
* Counting sort&lt;br /&gt;
* Radix sort&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 2, 3, 8&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 13&#039;&#039;&#039;&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, basic operations (insert, delete, rotate, find min/max)&lt;br /&gt;
* AVL-trees, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 12, Knuth, vol. 3, ch. 6.2.3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 27&#039;&#039;&#039;&lt;br /&gt;
* Red-black trees, basic operations&lt;br /&gt;
* Treaps, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 13&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 4&#039;&#039;&#039;&lt;br /&gt;
* Treaps, how to insert and to remove items using split and merge&lt;br /&gt;
* Treaps with implicit keys&lt;br /&gt;
* Tries, compact tries, basic operations&lt;br /&gt;
* 2-3-4 trees, basic operations: search, insert&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 11&#039;&#039;&#039;&lt;br /&gt;
* Quiz #1 (sorting, trees)&lt;br /&gt;
* 2-3-4 trees, basic operations: delete&lt;br /&gt;
* B-trees, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 18&#039;&#039;&#039;&lt;br /&gt;
* Hash tables, collisions, collision resolution by chaining, open addressing&lt;br /&gt;
* PATRICIA trie, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 25&#039;&#039;&#039;&lt;br /&gt;
* Exam in module 1&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 8&#039;&#039;&#039;&lt;br /&gt;
* Exact string matching, naive algorithm, the preprocessing approach, Z-algorithm, the simplest linear-time algorithm&lt;br /&gt;
* The Knuth-Morris-Pratt algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 1, 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 15&#039;&#039;&#039;&lt;br /&gt;
* The Boyer-Moore algorithm&lt;br /&gt;
* The Aho-Corasick algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 2, 3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 22&#039;&#039;&#039;&lt;br /&gt;
* Suffix trees: basic definition, naive algorithm to build&lt;br /&gt;
* Suffix trees: Ukkonen&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 5, 6&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 29&#039;&#039;&#039;&lt;br /&gt;
* Quiz #2 (string matching)&lt;br /&gt;
* Suffix trees applications: generalized suffix tree, the longest common substring for two and more strings&lt;br /&gt;
* Suffix arrays: building using suffix tree, exact string matching&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 6, 7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 6&#039;&#039;&#039;&lt;br /&gt;
* Suffix arrays: exact string matching&lt;br /&gt;
* Dynamic programming, two conveyors problem&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 7, Cormen, ch. 15&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 13&#039;&#039;&#039;&lt;br /&gt;
* Dynamic programming: two conveyors problem, matrix-chain multiplication, the longest common subsequence, the Levenstein distance&lt;br /&gt;
* Greedy algoirthms: an activity-selection problem, Huffman codes&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 15, 16&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 10&#039;&#039;&#039;&lt;br /&gt;
* Greedy algoirthms: the longest increasing subsequence, LCS-problem with greedy approach&lt;br /&gt;
* Greedy algorithms: Huffman codes, correctness of Huffman&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 16&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 17&#039;&#039;&#039;&lt;br /&gt;
* Text compression, models: static, semistatic, adaptive, symbolwise models, dictionary models&lt;br /&gt;
* Dictionary models: LZ-77, LZ-78, LZW&lt;br /&gt;
* Static and semistatic Huffman codes, tree serialization&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 1, 2, Atallah, ch. 12&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 24&#039;&#039;&#039;&lt;br /&gt;
* Adaptive Huffman codes&lt;br /&gt;
* Arithmetic coding&lt;br /&gt;
* RLE&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Atallah, ch. 12, Witten, ch. 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 31&#039;&#039;&#039;&lt;br /&gt;
* Quiz #3 (dynamic programming, greedy algorithms)&lt;br /&gt;
* RLE implementation&lt;br /&gt;
* Burrows-Wheeler transform&lt;br /&gt;
* Move to front&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feb 7&#039;&#039;&#039;&lt;br /&gt;
* Graphs, main definitions, representation of graphs&lt;br /&gt;
* Breadth-first search, single-source shortest paths in non-weighted graph&lt;br /&gt;
* Depth-first search, topological sort, strongly connected components&lt;br /&gt;
* Single-source shortest paths, Bellman-Ford algorithm, Dijkstra&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 22, 24&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feb 14&#039;&#039;&#039;&lt;br /&gt;
* Single-source shortest paths, Dijkstra&#039;s algorithm&lt;br /&gt;
* All-pairs shortest paths, &amp;quot;matrix multiplication&amp;quot;, Floyd-Warshall algorithm, Johnson&#039;s algorithm&lt;br /&gt;
* Maximum flow, main definitions&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 24, 25, 26&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feb 21&#039;&#039;&#039;&lt;br /&gt;
* Maximum flow, Ford-Fulkerson method, Edmonds-Karp algorithm&lt;br /&gt;
* Push-relabel algorithm&lt;br /&gt;
* Maximum bipartite matching, Ford-Fulkerson method, Kuhn&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 26&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mar 7&#039;&#039;&#039;&lt;br /&gt;
* Minimum spanning trees: Prim&#039;s algorithm, Kruskal&#039;s algorithm&lt;br /&gt;
* Disjoint sets: linked list representation, disjoint-set forest&lt;br /&gt;
* Polynomials, coefficient representation, point-value representation, main operations&lt;br /&gt;
* Discrete Fourier transform&lt;br /&gt;
* Fast Fourier transform&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 21, 23, 30&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mar 14&#039;&#039;&#039;&lt;br /&gt;
* Quiz #4 (graphs)&lt;br /&gt;
* Deterministic finite automata&lt;br /&gt;
* Nondeterministic finite automata&lt;br /&gt;
* Equivalence of DFA and NFA&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Hopcroft, ch. 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mar 21&#039;&#039;&#039;&lt;br /&gt;
* Finite automata with epsilon-transitions&lt;br /&gt;
* Regular expressions&lt;br /&gt;
* Converting RE to NFA with epsilon-transitions&lt;br /&gt;
* Converting DFA&#039;s to RE&lt;br /&gt;
* Context-free languages&lt;br /&gt;
* Context-free grammar, derivations using a grammar, leftmost and rightmost derivations&lt;br /&gt;
* Parse trees&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Hopcroft, ch. 3, 4, 5&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 1==&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Lower bounds of sorting using comparisons&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, heap sort, counting sort, radix sort&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, basic operations (insert, delete, rotate, find min/max)&lt;br /&gt;
* AVL-trees, basic operations&lt;br /&gt;
* Red-black trees, basic operations&lt;br /&gt;
* Treaps, basic operations&lt;br /&gt;
* Treaps with implicit keys&lt;br /&gt;
* Tries, compact tries, basic operations&lt;br /&gt;
* 2-3-4 trees, basic operations&lt;br /&gt;
* B-trees, basic operations&lt;br /&gt;
* Hash tables, collisions, collision resolution by chaining, open addressing&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 3==&lt;br /&gt;
* Exact string matching, naive algorithm, the preprocessing approach, Z-algorithm, the simplest linear-time algorithm, Knuth-Morris-Pratt algorithm, Boyer-Moore algorithm, Aho-Corasick algorithm&lt;br /&gt;
* Suffix trees: basic definition, naive algorithm to build, Ukkonen&#039;s algorithm&lt;br /&gt;
* Suffix trees applications: generalized suffix tree, the longest common substring for two and more strings&lt;br /&gt;
* Suffix arrays: building using suffix tree, exact string matching&lt;br /&gt;
* Dynamic programming, two conveyors problem, two conveyors problem, matrix-chain multiplication, the longest common subsequence, the Levenstein distance&lt;br /&gt;
* Greedy algoirthms: an activity-selection problem, Huffman codes, the longest increasing subsequence, LCS-problem with greedy approach&lt;br /&gt;
* Text compression, models: static, semistatic, adaptive, symbolwise models, dictionary models&lt;br /&gt;
* Symbolwise models: static and semistatic Huffman codes, tree serialization, adaptive Huffman codes, arithmetic coding&lt;br /&gt;
* Dictionary models: LZ-77, LZ-78, LZW&lt;br /&gt;
* Text modifications: RLE, Burrows-Wheeler transform, Move-to-front&lt;br /&gt;
* Graphs: main definitions, representation of graphs, breadth-first search, single-source shortest paths in non-weighted graph, depth-first search, topological sort, strongly connected components&lt;br /&gt;
* Minimum spanning trees: Prim&#039;s algorithm, Kruskal&#039;s algorithm&lt;br /&gt;
* Disjoint sets: linked list representation, disjoint-set forest&lt;br /&gt;
* Single-source shortest paths: Bellman-Ford algorithm, Dijkstra&#039;s algorithm&lt;br /&gt;
* All-pairs shortest paths: &amp;quot;matrix multiplication&amp;quot;, Floyd-Warshall algorithm, Johnson&#039;s algorithm&lt;br /&gt;
* Maximum flow: Ford-Fulkerson method, Edmonds-Karp algorithm, push-relabel algorithm&lt;br /&gt;
* Maximum bipartite matching: Ford-Fulkerson method, Kuhn&#039;s algorithm&lt;br /&gt;
* Polynomials: coefficient representation, point-value representation, discrete Fourier transform, fast Fourier transform&lt;br /&gt;
* Regular languages: deterministic finite automata, nondeterministic finite automata, equivalence of DFA and NFA, finite automata with epsilon-transitions, regular expressions, converting RE to NFA with epsilon-transitions, converting DFA&#039;s to RE&lt;/div&gt;</summary>
		<author><name>Nkmakarov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=95862</id>
		<title>Algorithms and Data Structures DSBA 2025/2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=95862"/>
		<updated>2026-03-21T18:48:21Z</updated>

		<summary type="html">&lt;p&gt;Nkmakarov: Update list of lectures&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
This page contains basic information for the course Algorithms and Data Structures in 2024/2025 academic year at Bachelor’s Programme in &#039;&#039;&#039;Data Science and Business Analytics&#039;&#039;&#039; (DSBA).&lt;br /&gt;
&lt;br /&gt;
The full syllabus can be accessed at [https://www.hse.ru/ba/data/courses/1071074261.html this page]. &lt;br /&gt;
&lt;br /&gt;
= Teachers and assistants = &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Group !! 241 !! 242 !! 243 !! 244 !! 245 !! 246&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://www.hse.ru/org/persons/528651897 Nikita Makarov]&lt;br /&gt;
|-&lt;br /&gt;
| Seminar Instructor&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | [https://www.hse.ru/org/persons/191485259 Vladimir Kurenkov]&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | [https://t.me/seemur Simon Kondakov]&lt;br /&gt;
|-&lt;br /&gt;
| Teaching Assistant&lt;br /&gt;
| tg: [https://t.me/leon1dl @leon1dl]&lt;br /&gt;
| tg: [https://t.me/Mellodizzz @Mellodizzz]&lt;br /&gt;
| tg: [https://t.me/yksee @yksee]&lt;br /&gt;
| tg: [https://t.me/polina_gur @polina_gur]&lt;br /&gt;
| tg: [https://t.me/d_poly @d_poly]&lt;br /&gt;
| tg: [https://t.me/NaviMash @NaviMash]&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer Assistant&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://t.me/svbudygin @svbudygin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
You may find [https://docs.google.com/spreadsheets/d/1Qh4uXaAZy-nX-dYlA_CtAo4zoWhvwC1ekL4p5-8As0A/edit?gid=1121952238#gid=1121952238 your grades].&lt;br /&gt;
&lt;br /&gt;
== Formula ==&lt;br /&gt;
&#039;&#039;&#039;Final Grade = M1 * 0.4 + M3 * 0.6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mi = E * 0.4 + HW * 0.2 + Q * 0.2 + S * 0.2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039; - exam grade: rational number [0, 10] = sum of the grade for the oral and written parts, out of 5 each&lt;br /&gt;
* &#039;&#039;&#039;HW&#039;&#039;&#039; - homework grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;Q&#039;&#039;&#039; - lecture quizzes grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039; - seminar practice grade: rational number [0, 10]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;rounding&#039;&#039;&#039;: each element in the formulae is rounded up&lt;br /&gt;
&lt;br /&gt;
== Plagiarism policy ==&lt;br /&gt;
&lt;br /&gt;
If plagiarism is detected, the assessment element will be assigned a score of &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the student is suspected of preparing the task not on his own, the teacher has the right to initiate additional verification or defense of this particular assessment element. Then such an assessment element will be graded based on the additional verification or the defense.&lt;br /&gt;
&lt;br /&gt;
= Home assignments =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Contest !! Deadline !! Topic&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Lectures = &lt;br /&gt;
Lectures are held on Saturdays from 14:40 till 17:40.&lt;br /&gt;
&lt;br /&gt;
== Lecture Materials ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 6&#039;&#039;&#039;&lt;br /&gt;
* Introduction to the course&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort&lt;br /&gt;
* Lower bounds of sorting&lt;br /&gt;
* Counting sort&lt;br /&gt;
* Radix sort&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 2, 3, 8&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 13&#039;&#039;&#039;&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, basic operations (insert, delete, rotate, find min/max)&lt;br /&gt;
* AVL-trees, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 12, Knuth, vol. 3, ch. 6.2.3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 27&#039;&#039;&#039;&lt;br /&gt;
* Red-black trees, basic operations&lt;br /&gt;
* Treaps, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 13&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 4&#039;&#039;&#039;&lt;br /&gt;
* Treaps, how to insert and to remove items using split and merge&lt;br /&gt;
* Treaps with implicit keys&lt;br /&gt;
* Tries, compact tries, basic operations&lt;br /&gt;
* 2-3-4 trees, basic operations: search, insert&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 11&#039;&#039;&#039;&lt;br /&gt;
* Quiz #1 (sorting, trees)&lt;br /&gt;
* 2-3-4 trees, basic operations: delete&lt;br /&gt;
* B-trees, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 18&#039;&#039;&#039;&lt;br /&gt;
* Hash tables, collisions, collision resolution by chaining, open addressing&lt;br /&gt;
* PATRICIA trie, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 25&#039;&#039;&#039;&lt;br /&gt;
* Exam in module 1&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 8&#039;&#039;&#039;&lt;br /&gt;
* Exact string matching, naive algorithm, the preprocessing approach, Z-algorithm, the simplest linear-time algorithm&lt;br /&gt;
* The Knuth-Morris-Pratt algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 1, 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 15&#039;&#039;&#039;&lt;br /&gt;
* The Boyer-Moore algorithm&lt;br /&gt;
* The Aho-Corasick algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 2, 3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 22&#039;&#039;&#039;&lt;br /&gt;
* Suffix trees: basic definition, naive algorithm to build&lt;br /&gt;
* Suffix trees: Ukkonen&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 5, 6&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 29&#039;&#039;&#039;&lt;br /&gt;
* Quiz #2 (string matching)&lt;br /&gt;
* Suffix trees applications: generalized suffix tree, the longest common substring for two and more strings&lt;br /&gt;
* Suffix arrays: building using suffix tree, exact string matching&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 6, 7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 6&#039;&#039;&#039;&lt;br /&gt;
* Suffix arrays: exact string matching&lt;br /&gt;
* Dynamic programming, two conveyors problem&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 7, Cormen, ch. 15&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 13&#039;&#039;&#039;&lt;br /&gt;
* Dynamic programming: two conveyors problem, matrix-chain multiplication, the longest common subsequence, the Levenstein distance&lt;br /&gt;
* Greedy algoirthms: an activity-selection problem, Huffman codes&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 15, 16&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 10&#039;&#039;&#039;&lt;br /&gt;
* Greedy algoirthms: the longest increasing subsequence, LCS-problem with greedy approach&lt;br /&gt;
* Greedy algorithms: Huffman codes, correctness of Huffman&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 16&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 17&#039;&#039;&#039;&lt;br /&gt;
* Text compression, models: static, semistatic, adaptive, symbolwise models, dictionary models&lt;br /&gt;
* Dictionary models: LZ-77, LZ-78, LZW&lt;br /&gt;
* Static and semistatic Huffman codes, tree serialization&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 1, 2, Atallah, ch. 12&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 24&#039;&#039;&#039;&lt;br /&gt;
* Adaptive Huffman codes&lt;br /&gt;
* Arithmetic coding&lt;br /&gt;
* RLE&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Atallah, ch. 12, Witten, ch. 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 31&#039;&#039;&#039;&lt;br /&gt;
* Quiz #3 (dynamic programming, greedy algorithms)&lt;br /&gt;
* RLE implementation&lt;br /&gt;
* Burrows-Wheeler transform&lt;br /&gt;
* Move to front&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feb 7&#039;&#039;&#039;&lt;br /&gt;
* Graphs, main definitions, representation of graphs&lt;br /&gt;
* Breadth-first search, single-source shortest paths in non-weighted graph&lt;br /&gt;
* Depth-first search, topological sort, strongly connected components&lt;br /&gt;
* Single-source shortest paths, Bellman-Ford algorithm, Dijkstra&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 22, 24&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feb 14&#039;&#039;&#039;&lt;br /&gt;
* Single-source shortest paths, Dijkstra&#039;s algorithm&lt;br /&gt;
* All-pairs shortest paths, &amp;quot;matrix multiplication&amp;quot;, Floyd-Warshall algorithm, Johnson&#039;s algorithm&lt;br /&gt;
* Maximum flow, main definitions&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 24, 25, 26&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feb 21&#039;&#039;&#039;&lt;br /&gt;
* Maximum flow, Ford-Fulkerson method, Edmonds-Karp algorithm&lt;br /&gt;
* Push-relabel algorithm&lt;br /&gt;
* Maximum bipartite matching, Ford-Fulkerson method, Kuhn&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 26&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mar 7&#039;&#039;&#039;&lt;br /&gt;
* Minimum spanning trees: Prim&#039;s algorithm, Kruskal&#039;s algorithm&lt;br /&gt;
* Disjoint sets: linked list representation, disjoint-set forest&lt;br /&gt;
* Polynomials, coefficient representation, point-value representation, main operations&lt;br /&gt;
* Discrete Fourier transform&lt;br /&gt;
* Fast Fourier transform&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 21, 23, 30&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mar 14&#039;&#039;&#039;&lt;br /&gt;
* Quiz #4 (graphs)&lt;br /&gt;
* Deterministic finite automata&lt;br /&gt;
* Nondeterministic finite automata&lt;br /&gt;
* Equivalence of DFA and NFA&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Hopcroft, ch. 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mar 21&#039;&#039;&#039;&lt;br /&gt;
* Finite automata with epsilon-transitions&lt;br /&gt;
* Regular expressions&lt;br /&gt;
* Converting RE to NFA with epsilon-transitions&lt;br /&gt;
* Converting DFA&#039;s to RE&lt;br /&gt;
* Context-free languages&lt;br /&gt;
* Context-free grammar, derivations using a grammar, leftmost and rightmost derivations&lt;br /&gt;
* Parse trees&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Hopcroft, ch. 3, 4, 5&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 1==&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Lower bounds of sorting using comparisons&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, heap sort, counting sort, radix sort&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, basic operations (insert, delete, rotate, find min/max)&lt;br /&gt;
* AVL-trees, basic operations&lt;br /&gt;
* Red-black trees, basic operations&lt;br /&gt;
* Treaps, basic operations&lt;br /&gt;
* Treaps with implicit keys&lt;br /&gt;
* Tries, compact tries, basic operations&lt;br /&gt;
* 2-3-4 trees, basic operations&lt;br /&gt;
* B-trees, basic operations&lt;br /&gt;
* Hash tables, collisions, collision resolution by chaining, open addressing&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 3==&lt;/div&gt;</summary>
		<author><name>Nkmakarov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=95779</id>
		<title>Algorithms and Data Structures DSBA 2025/2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=95779"/>
		<updated>2026-03-14T19:00:55Z</updated>

		<summary type="html">&lt;p&gt;Nkmakarov: Update list of lectures&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
This page contains basic information for the course Algorithms and Data Structures in 2024/2025 academic year at Bachelor’s Programme in &#039;&#039;&#039;Data Science and Business Analytics&#039;&#039;&#039; (DSBA).&lt;br /&gt;
&lt;br /&gt;
The full syllabus can be accessed at [https://www.hse.ru/ba/data/courses/1071074261.html this page]. &lt;br /&gt;
&lt;br /&gt;
= Teachers and assistants = &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Group !! 241 !! 242 !! 243 !! 244 !! 245 !! 246&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://www.hse.ru/org/persons/528651897 Nikita Makarov]&lt;br /&gt;
|-&lt;br /&gt;
| Seminar Instructor&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | [https://www.hse.ru/org/persons/191485259 Vladimir Kurenkov]&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | [https://t.me/seemur Simon Kondakov]&lt;br /&gt;
|-&lt;br /&gt;
| Teaching Assistant&lt;br /&gt;
| tg: [https://t.me/leon1dl @leon1dl]&lt;br /&gt;
| tg: [https://t.me/Mellodizzz @Mellodizzz]&lt;br /&gt;
| tg: [https://t.me/yksee @yksee]&lt;br /&gt;
| tg: [https://t.me/polina_gur @polina_gur]&lt;br /&gt;
| tg: [https://t.me/d_poly @d_poly]&lt;br /&gt;
| tg: [https://t.me/NaviMash @NaviMash]&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer Assistant&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://t.me/svbudygin @svbudygin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
You may find [https://docs.google.com/spreadsheets/d/1Qh4uXaAZy-nX-dYlA_CtAo4zoWhvwC1ekL4p5-8As0A/edit?gid=1121952238#gid=1121952238 your grades].&lt;br /&gt;
&lt;br /&gt;
== Formula ==&lt;br /&gt;
&#039;&#039;&#039;Final Grade = M1 * 0.4 + M3 * 0.6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mi = E * 0.4 + HW * 0.2 + Q * 0.2 + S * 0.2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039; - exam grade: rational number [0, 10] = sum of the grade for the oral and written parts, out of 5 each&lt;br /&gt;
* &#039;&#039;&#039;HW&#039;&#039;&#039; - homework grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;Q&#039;&#039;&#039; - lecture quizzes grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039; - seminar practice grade: rational number [0, 10]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;rounding&#039;&#039;&#039;: each element in the formulae is rounded up&lt;br /&gt;
&lt;br /&gt;
== Plagiarism policy ==&lt;br /&gt;
&lt;br /&gt;
If plagiarism is detected, the assessment element will be assigned a score of &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the student is suspected of preparing the task not on his own, the teacher has the right to initiate additional verification or defense of this particular assessment element. Then such an assessment element will be graded based on the additional verification or the defense.&lt;br /&gt;
&lt;br /&gt;
= Home assignments =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Contest !! Deadline !! Topic&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Lectures = &lt;br /&gt;
Lectures are held on Saturdays from 14:40 till 17:40.&lt;br /&gt;
&lt;br /&gt;
== Lecture Materials ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 6&#039;&#039;&#039;&lt;br /&gt;
* Introduction to the course&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort&lt;br /&gt;
* Lower bounds of sorting&lt;br /&gt;
* Counting sort&lt;br /&gt;
* Radix sort&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 2, 3, 8&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 13&#039;&#039;&#039;&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, basic operations (insert, delete, rotate, find min/max)&lt;br /&gt;
* AVL-trees, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 12, Knuth, vol. 3, ch. 6.2.3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 27&#039;&#039;&#039;&lt;br /&gt;
* Red-black trees, basic operations&lt;br /&gt;
* Treaps, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 13&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 4&#039;&#039;&#039;&lt;br /&gt;
* Treaps, how to insert and to remove items using split and merge&lt;br /&gt;
* Treaps with implicit keys&lt;br /&gt;
* Tries, compact tries, basic operations&lt;br /&gt;
* 2-3-4 trees, basic operations: search, insert&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 11&#039;&#039;&#039;&lt;br /&gt;
* Quiz #1 (sorting, trees)&lt;br /&gt;
* 2-3-4 trees, basic operations: delete&lt;br /&gt;
* B-trees, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 18&#039;&#039;&#039;&lt;br /&gt;
* Hash tables, collisions, collision resolution by chaining, open addressing&lt;br /&gt;
* PATRICIA trie, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 25&#039;&#039;&#039;&lt;br /&gt;
* Exam in module 1&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 8&#039;&#039;&#039;&lt;br /&gt;
* Exact string matching, naive algorithm, the preprocessing approach, Z-algorithm, the simplest linear-time algorithm&lt;br /&gt;
* The Knuth-Morris-Pratt algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 1, 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 15&#039;&#039;&#039;&lt;br /&gt;
* The Boyer-Moore algorithm&lt;br /&gt;
* The Aho-Corasick algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 2, 3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 22&#039;&#039;&#039;&lt;br /&gt;
* Suffix trees: basic definition, naive algorithm to build&lt;br /&gt;
* Suffix trees: Ukkonen&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 5, 6&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 29&#039;&#039;&#039;&lt;br /&gt;
* Quiz #2 (string matching)&lt;br /&gt;
* Suffix trees applications: generalized suffix tree, the longest common substring for two and more strings&lt;br /&gt;
* Suffix arrays: building using suffix tree, exact string matching&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 6, 7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 6&#039;&#039;&#039;&lt;br /&gt;
* Suffix arrays: exact string matching&lt;br /&gt;
* Dynamic programming, two conveyors problem&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 7, Cormen, ch. 15&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 13&#039;&#039;&#039;&lt;br /&gt;
* Dynamic programming: two conveyors problem, matrix-chain multiplication, the longest common subsequence, the Levenstein distance&lt;br /&gt;
* Greedy algoirthms: an activity-selection problem, Huffman codes&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 15, 16&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 10&#039;&#039;&#039;&lt;br /&gt;
* Greedy algoirthms: the longest increasing subsequence, LCS-problem with greedy approach&lt;br /&gt;
* Greedy algorithms: Huffman codes, correctness of Huffman&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 16&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 17&#039;&#039;&#039;&lt;br /&gt;
* Text compression, models: static, semistatic, adaptive, symbolwise models, dictionary models&lt;br /&gt;
* Dictionary models: LZ-77, LZ-78, LZW&lt;br /&gt;
* Static and semistatic Huffman codes, tree serialization&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 1, 2, Atallah, ch. 12&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 24&#039;&#039;&#039;&lt;br /&gt;
* Adaptive Huffman codes&lt;br /&gt;
* Arithmetic coding&lt;br /&gt;
* RLE&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Atallah, ch. 12, Witten, ch. 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 31&#039;&#039;&#039;&lt;br /&gt;
* Quiz #3 (dynamic programming, greedy algorithms)&lt;br /&gt;
* RLE implementation&lt;br /&gt;
* Burrows-Wheeler transform&lt;br /&gt;
* Move to front&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feb 7&#039;&#039;&#039;&lt;br /&gt;
* Graphs, main definitions, representation of graphs&lt;br /&gt;
* Breadth-first search, single-source shortest paths in non-weighted graph&lt;br /&gt;
* Depth-first search, topological sort, strongly connected components&lt;br /&gt;
* Single-source shortest paths, Bellman-Ford algorithm, Dijkstra&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 22, 24&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feb 14&#039;&#039;&#039;&lt;br /&gt;
* Single-source shortest paths, Dijkstra&#039;s algorithm&lt;br /&gt;
* All-pairs shortest paths, &amp;quot;matrix multiplication&amp;quot;, Floyd-Warshall algorithm, Johnson&#039;s algorithm&lt;br /&gt;
* Maximum flow, main definitions&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 24, 25, 26&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feb 21&#039;&#039;&#039;&lt;br /&gt;
* Maximum flow, Ford-Fulkerson method, Edmonds-Karp algorithm&lt;br /&gt;
* Push-relabel algorithm&lt;br /&gt;
* Maximum bipartite matching, Ford-Fulkerson method, Kuhn&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 26&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mar 7&#039;&#039;&#039;&lt;br /&gt;
* Minimum spanning trees: Prim&#039;s algorithm, Kruskal&#039;s algorithm&lt;br /&gt;
* Disjoint sets: linked list representation, disjoint-set forest&lt;br /&gt;
* Polynomials, coefficient representation, point-value representation, main operations&lt;br /&gt;
* Discrete Fourier transform&lt;br /&gt;
* Fast Fourier transform&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 21, 23, 30&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mar 14&#039;&#039;&#039;&lt;br /&gt;
* Quiz #4 (graphs)&lt;br /&gt;
* Deterministic finite automata&lt;br /&gt;
* Nondeterministic finite automata&lt;br /&gt;
* Equivalence of DFA and NFA&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Hopcroft, ch. 2&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 1==&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Lower bounds of sorting using comparisons&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, heap sort, counting sort, radix sort&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, basic operations (insert, delete, rotate, find min/max)&lt;br /&gt;
* AVL-trees, basic operations&lt;br /&gt;
* Red-black trees, basic operations&lt;br /&gt;
* Treaps, basic operations&lt;br /&gt;
* Treaps with implicit keys&lt;br /&gt;
* Tries, compact tries, basic operations&lt;br /&gt;
* 2-3-4 trees, basic operations&lt;br /&gt;
* B-trees, basic operations&lt;br /&gt;
* Hash tables, collisions, collision resolution by chaining, open addressing&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 3==&lt;/div&gt;</summary>
		<author><name>Nkmakarov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=95716</id>
		<title>Algorithms and Data Structures DSBA 2025/2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=95716"/>
		<updated>2026-03-07T18:29:47Z</updated>

		<summary type="html">&lt;p&gt;Nkmakarov: Update list of lectures&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
This page contains basic information for the course Algorithms and Data Structures in 2024/2025 academic year at Bachelor’s Programme in &#039;&#039;&#039;Data Science and Business Analytics&#039;&#039;&#039; (DSBA).&lt;br /&gt;
&lt;br /&gt;
The full syllabus can be accessed at [https://www.hse.ru/ba/data/courses/1071074261.html this page]. &lt;br /&gt;
&lt;br /&gt;
= Teachers and assistants = &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Group !! 241 !! 242 !! 243 !! 244 !! 245 !! 246&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://www.hse.ru/org/persons/528651897 Nikita Makarov]&lt;br /&gt;
|-&lt;br /&gt;
| Seminar Instructor&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | [https://www.hse.ru/org/persons/191485259 Vladimir Kurenkov]&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | [https://t.me/seemur Simon Kondakov]&lt;br /&gt;
|-&lt;br /&gt;
| Teaching Assistant&lt;br /&gt;
| tg: [https://t.me/leon1dl @leon1dl]&lt;br /&gt;
| tg: [https://t.me/Mellodizzz @Mellodizzz]&lt;br /&gt;
| tg: [https://t.me/yksee @yksee]&lt;br /&gt;
| tg: [https://t.me/polina_gur @polina_gur]&lt;br /&gt;
| tg: [https://t.me/d_poly @d_poly]&lt;br /&gt;
| tg: [https://t.me/rina_mlv @rina_mlv]&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer Assistant&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://t.me/svbudygin @svbudygin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
You may find [https://docs.google.com/spreadsheets/d/1Qh4uXaAZy-nX-dYlA_CtAo4zoWhvwC1ekL4p5-8As0A/edit?gid=1121952238#gid=1121952238 your grades].&lt;br /&gt;
&lt;br /&gt;
== Formula ==&lt;br /&gt;
&#039;&#039;&#039;Final Grade = M1 * 0.4 + M3 * 0.6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mi = E * 0.4 + HW * 0.2 + Q * 0.2 + S * 0.2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039; - exam grade: rational number [0, 10] = sum of the grade for the oral and written parts, out of 5 each&lt;br /&gt;
* &#039;&#039;&#039;HW&#039;&#039;&#039; - homework grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;Q&#039;&#039;&#039; - lecture quizzes grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039; - seminar practice grade: rational number [0, 10]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;rounding&#039;&#039;&#039;: each element in the formulae is rounded up&lt;br /&gt;
&lt;br /&gt;
== Plagiarism policy ==&lt;br /&gt;
&lt;br /&gt;
If plagiarism is detected, the assessment element will be assigned a score of &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the student is suspected of preparing the task not on his own, the teacher has the right to initiate additional verification or defense of this particular assessment element. Then such an assessment element will be graded based on the additional verification or the defense.&lt;br /&gt;
&lt;br /&gt;
= Home assignments =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Contest !! Deadline !! Topic&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Lectures = &lt;br /&gt;
Lectures are held on Saturdays from 14:40 till 17:40.&lt;br /&gt;
&lt;br /&gt;
== Lecture Materials ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 6&#039;&#039;&#039;&lt;br /&gt;
* Introduction to the course&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort&lt;br /&gt;
* Lower bounds of sorting&lt;br /&gt;
* Counting sort&lt;br /&gt;
* Radix sort&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 2, 3, 8&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 13&#039;&#039;&#039;&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, basic operations (insert, delete, rotate, find min/max)&lt;br /&gt;
* AVL-trees, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 12, Knuth, vol. 3, ch. 6.2.3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 27&#039;&#039;&#039;&lt;br /&gt;
* Red-black trees, basic operations&lt;br /&gt;
* Treaps, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 13&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 4&#039;&#039;&#039;&lt;br /&gt;
* Treaps, how to insert and to remove items using split and merge&lt;br /&gt;
* Treaps with implicit keys&lt;br /&gt;
* Tries, compact tries, basic operations&lt;br /&gt;
* 2-3-4 trees, basic operations: search, insert&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 11&#039;&#039;&#039;&lt;br /&gt;
* Quiz #1 (sorting, trees)&lt;br /&gt;
* 2-3-4 trees, basic operations: delete&lt;br /&gt;
* B-trees, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 18&#039;&#039;&#039;&lt;br /&gt;
* Hash tables, collisions, collision resolution by chaining, open addressing&lt;br /&gt;
* PATRICIA trie, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 25&#039;&#039;&#039;&lt;br /&gt;
* Exam in module 1&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 8&#039;&#039;&#039;&lt;br /&gt;
* Exact string matching, naive algorithm, the preprocessing approach, Z-algorithm, the simplest linear-time algorithm&lt;br /&gt;
* The Knuth-Morris-Pratt algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 1, 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 15&#039;&#039;&#039;&lt;br /&gt;
* The Boyer-Moore algorithm&lt;br /&gt;
* The Aho-Corasick algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 2, 3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 22&#039;&#039;&#039;&lt;br /&gt;
* Suffix trees: basic definition, naive algorithm to build&lt;br /&gt;
* Suffix trees: Ukkonen&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 5, 6&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 29&#039;&#039;&#039;&lt;br /&gt;
* Quiz #2 (string matching)&lt;br /&gt;
* Suffix trees applications: generalized suffix tree, the longest common substring for two and more strings&lt;br /&gt;
* Suffix arrays: building using suffix tree, exact string matching&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 6, 7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 6&#039;&#039;&#039;&lt;br /&gt;
* Suffix arrays: exact string matching&lt;br /&gt;
* Dynamic programming, two conveyors problem&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 7, Cormen, ch. 15&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 13&#039;&#039;&#039;&lt;br /&gt;
* Dynamic programming: two conveyors problem, matrix-chain multiplication, the longest common subsequence, the Levenstein distance&lt;br /&gt;
* Greedy algoirthms: an activity-selection problem, Huffman codes&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 15, 16&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 10&#039;&#039;&#039;&lt;br /&gt;
* Greedy algoirthms: the longest increasing subsequence, LCS-problem with greedy approach&lt;br /&gt;
* Greedy algorithms: Huffman codes, correctness of Huffman&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 16&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 17&#039;&#039;&#039;&lt;br /&gt;
* Text compression, models: static, semistatic, adaptive, symbolwise models, dictionary models&lt;br /&gt;
* Dictionary models: LZ-77, LZ-78, LZW&lt;br /&gt;
* Static and semistatic Huffman codes, tree serialization&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 1, 2, Atallah, ch. 12&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 24&#039;&#039;&#039;&lt;br /&gt;
* Adaptive Huffman codes&lt;br /&gt;
* Arithmetic coding&lt;br /&gt;
* RLE&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Atallah, ch. 12, Witten, ch. 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 31&#039;&#039;&#039;&lt;br /&gt;
* Quiz #3 (dynamic programming, greedy algorithms)&lt;br /&gt;
* RLE implementation&lt;br /&gt;
* Burrows-Wheeler transform&lt;br /&gt;
* Move to front&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feb 7&#039;&#039;&#039;&lt;br /&gt;
* Graphs, main definitions, representation of graphs&lt;br /&gt;
* Breadth-first search, single-source shortest paths in non-weighted graph&lt;br /&gt;
* Depth-first search, topological sort, strongly connected components&lt;br /&gt;
* Single-source shortest paths, Bellman-Ford algorithm, Dijkstra&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 22, 24&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feb 14&#039;&#039;&#039;&lt;br /&gt;
* Single-source shortest paths, Dijkstra&#039;s algorithm&lt;br /&gt;
* All-pairs shortest paths, &amp;quot;matrix multiplication&amp;quot;, Floyd-Warshall algorithm, Johnson&#039;s algorithm&lt;br /&gt;
* Maximum flow, main definitions&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 24, 25, 26&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feb 21&#039;&#039;&#039;&lt;br /&gt;
* Maximum flow, Ford-Fulkerson method, Edmonds-Karp algorithm&lt;br /&gt;
* Push-relabel algorithm&lt;br /&gt;
* Maximum bipartite matching, Ford-Fulkerson method, Kuhn&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 26&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mar 7&#039;&#039;&#039;&lt;br /&gt;
* Minimum spanning trees: Prim&#039;s algorithm, Kruskal&#039;s algorithm&lt;br /&gt;
* Disjoint sets: linked list representation, disjoint-set forest&lt;br /&gt;
* Polynomials, coefficient representation, point-value representation, main operations&lt;br /&gt;
* Discrete Fourier transform&lt;br /&gt;
* Fast Fourier transform&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 21, 23, 30&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 1==&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Lower bounds of sorting using comparisons&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, heap sort, counting sort, radix sort&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, basic operations (insert, delete, rotate, find min/max)&lt;br /&gt;
* AVL-trees, basic operations&lt;br /&gt;
* Red-black trees, basic operations&lt;br /&gt;
* Treaps, basic operations&lt;br /&gt;
* Treaps with implicit keys&lt;br /&gt;
* Tries, compact tries, basic operations&lt;br /&gt;
* 2-3-4 trees, basic operations&lt;br /&gt;
* B-trees, basic operations&lt;br /&gt;
* Hash tables, collisions, collision resolution by chaining, open addressing&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 3==&lt;/div&gt;</summary>
		<author><name>Nkmakarov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=95486</id>
		<title>Algorithms and Data Structures DSBA 2025/2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=95486"/>
		<updated>2026-02-21T17:22:27Z</updated>

		<summary type="html">&lt;p&gt;Nkmakarov: Update list of lectures&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
This page contains basic information for the course Algorithms and Data Structures in 2024/2025 academic year at Bachelor’s Programme in &#039;&#039;&#039;Data Science and Business Analytics&#039;&#039;&#039; (DSBA).&lt;br /&gt;
&lt;br /&gt;
The full syllabus can be accessed at [https://www.hse.ru/ba/data/courses/1071074261.html this page]. &lt;br /&gt;
&lt;br /&gt;
= Teachers and assistants = &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Group !! 241 !! 242 !! 243 !! 244 !! 245 !! 246&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://www.hse.ru/org/persons/528651897 Nikita Makarov]&lt;br /&gt;
|-&lt;br /&gt;
| Seminar Instructor&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | [https://www.hse.ru/org/persons/191485259 Vladimir Kurenkov]&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | [https://t.me/seemur Simon Kondakov]&lt;br /&gt;
|-&lt;br /&gt;
| Teaching Assistant&lt;br /&gt;
| tg: [https://t.me/leon1dl @leon1dl]&lt;br /&gt;
| tg: [https://t.me/Mellodizzz @Mellodizzz]&lt;br /&gt;
| tg: [https://t.me/yksee @yksee]&lt;br /&gt;
| tg: [https://t.me/polina_gur @polina_gur]&lt;br /&gt;
| tg: [https://t.me/d_poly @d_poly]&lt;br /&gt;
| tg: [https://t.me/rina_mlv @rina_mlv]&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer Assistant&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://t.me/svbudygin @svbudygin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
You may find [https://docs.google.com/spreadsheets/d/1Qh4uXaAZy-nX-dYlA_CtAo4zoWhvwC1ekL4p5-8As0A/edit?gid=1121952238#gid=1121952238 your grades].&lt;br /&gt;
&lt;br /&gt;
== Formula ==&lt;br /&gt;
&#039;&#039;&#039;Final Grade = M1 * 0.4 + M3 * 0.6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mi = E * 0.4 + HW * 0.2 + Q * 0.2 + S * 0.2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039; - exam grade: rational number [0, 10] = sum of the grade for the oral and written parts, out of 5 each&lt;br /&gt;
* &#039;&#039;&#039;HW&#039;&#039;&#039; - homework grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;Q&#039;&#039;&#039; - lecture quizzes grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039; - seminar practice grade: rational number [0, 10]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;rounding&#039;&#039;&#039;: each element in the formulae is rounded up&lt;br /&gt;
&lt;br /&gt;
== Plagiarism policy ==&lt;br /&gt;
&lt;br /&gt;
If plagiarism is detected, the assessment element will be assigned a score of &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the student is suspected of preparing the task not on his own, the teacher has the right to initiate additional verification or defense of this particular assessment element. Then such an assessment element will be graded based on the additional verification or the defense.&lt;br /&gt;
&lt;br /&gt;
= Home assignments =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Contest !! Deadline !! Topic&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Lectures = &lt;br /&gt;
Lectures are held on Saturdays from 14:40 till 17:40.&lt;br /&gt;
&lt;br /&gt;
== Lecture Materials ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 6&#039;&#039;&#039;&lt;br /&gt;
* Introduction to the course&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort&lt;br /&gt;
* Lower bounds of sorting&lt;br /&gt;
* Counting sort&lt;br /&gt;
* Radix sort&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 2, 3, 8&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 13&#039;&#039;&#039;&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, basic operations (insert, delete, rotate, find min/max)&lt;br /&gt;
* AVL-trees, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 12, Knuth, vol. 3, ch. 6.2.3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 27&#039;&#039;&#039;&lt;br /&gt;
* Red-black trees, basic operations&lt;br /&gt;
* Treaps, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 13&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 4&#039;&#039;&#039;&lt;br /&gt;
* Treaps, how to insert and to remove items using split and merge&lt;br /&gt;
* Treaps with implicit keys&lt;br /&gt;
* Tries, compact tries, basic operations&lt;br /&gt;
* 2-3-4 trees, basic operations: search, insert&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 11&#039;&#039;&#039;&lt;br /&gt;
* Quiz #1 (sorting, trees)&lt;br /&gt;
* 2-3-4 trees, basic operations: delete&lt;br /&gt;
* B-trees, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 18&#039;&#039;&#039;&lt;br /&gt;
* Hash tables, collisions, collision resolution by chaining, open addressing&lt;br /&gt;
* PATRICIA trie, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 25&#039;&#039;&#039;&lt;br /&gt;
* Exam in module 1&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 8&#039;&#039;&#039;&lt;br /&gt;
* Exact string matching, naive algorithm, the preprocessing approach, Z-algorithm, the simplest linear-time algorithm&lt;br /&gt;
* The Knuth-Morris-Pratt algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 1, 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 15&#039;&#039;&#039;&lt;br /&gt;
* The Boyer-Moore algorithm&lt;br /&gt;
* The Aho-Corasick algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 2, 3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 22&#039;&#039;&#039;&lt;br /&gt;
* Suffix trees: basic definition, naive algorithm to build&lt;br /&gt;
* Suffix trees: Ukkonen&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 5, 6&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 29&#039;&#039;&#039;&lt;br /&gt;
* Quiz #2 (string matching)&lt;br /&gt;
* Suffix trees applications: generalized suffix tree, the longest common substring for two and more strings&lt;br /&gt;
* Suffix arrays: building using suffix tree, exact string matching&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 6, 7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 6&#039;&#039;&#039;&lt;br /&gt;
* Suffix arrays: exact string matching&lt;br /&gt;
* Dynamic programming, two conveyors problem&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 7, Cormen, ch. 15&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 13&#039;&#039;&#039;&lt;br /&gt;
* Dynamic programming: two conveyors problem, matrix-chain multiplication, the longest common subsequence, the Levenstein distance&lt;br /&gt;
* Greedy algoirthms: an activity-selection problem, Huffman codes&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 15, 16&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 10&#039;&#039;&#039;&lt;br /&gt;
* Greedy algoirthms: the longest increasing subsequence, LCS-problem with greedy approach&lt;br /&gt;
* Greedy algorithms: Huffman codes, correctness of Huffman&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 16&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 17&#039;&#039;&#039;&lt;br /&gt;
* Text compression, models: static, semistatic, adaptive, symbolwise models, dictionary models&lt;br /&gt;
* Dictionary models: LZ-77, LZ-78, LZW&lt;br /&gt;
* Static and semistatic Huffman codes, tree serialization&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 1, 2, Atallah, ch. 12&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 24&#039;&#039;&#039;&lt;br /&gt;
* Adaptive Huffman codes&lt;br /&gt;
* Arithmetic coding&lt;br /&gt;
* RLE&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Atallah, ch. 12, Witten, ch. 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 31&#039;&#039;&#039;&lt;br /&gt;
* Quiz #3 (dynamic programming, greedy algorithms)&lt;br /&gt;
* RLE implementation&lt;br /&gt;
* Burrows-Wheeler transform&lt;br /&gt;
* Move to front&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feb 7&#039;&#039;&#039;&lt;br /&gt;
* Graphs, main definitions, representation of graphs&lt;br /&gt;
* Breadth-first search, single-source shortest paths in non-weighted graph&lt;br /&gt;
* Depth-first search, topological sort, strongly connected components&lt;br /&gt;
* Single-source shortest paths, Bellman-Ford algorithm, Dijkstra&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 22, 24&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feb 14&#039;&#039;&#039;&lt;br /&gt;
* Single-source shortest paths, Dijkstra&#039;s algorithm&lt;br /&gt;
* All-pairs shortest paths, &amp;quot;matrix multiplication&amp;quot;, Floyd-Warshall algorithm, Johnson&#039;s algorithm&lt;br /&gt;
* Maximum flow, main definitions&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 24, 25, 26&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feb 21&#039;&#039;&#039;&lt;br /&gt;
* Maximum flow, Ford-Fulkerson method, Edmonds-Karp algorithm&lt;br /&gt;
* Push-relabel algorithm&lt;br /&gt;
* Maximum bipartite matching, Ford-Fulkerson method, Kuhn&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 26&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 1==&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Lower bounds of sorting using comparisons&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, heap sort, counting sort, radix sort&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, basic operations (insert, delete, rotate, find min/max)&lt;br /&gt;
* AVL-trees, basic operations&lt;br /&gt;
* Red-black trees, basic operations&lt;br /&gt;
* Treaps, basic operations&lt;br /&gt;
* Treaps with implicit keys&lt;br /&gt;
* Tries, compact tries, basic operations&lt;br /&gt;
* 2-3-4 trees, basic operations&lt;br /&gt;
* B-trees, basic operations&lt;br /&gt;
* Hash tables, collisions, collision resolution by chaining, open addressing&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 3==&lt;/div&gt;</summary>
		<author><name>Nkmakarov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=95367</id>
		<title>Algorithms and Data Structures DSBA 2025/2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=95367"/>
		<updated>2026-02-15T17:31:51Z</updated>

		<summary type="html">&lt;p&gt;Nkmakarov: Update list of lectures&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
This page contains basic information for the course Algorithms and Data Structures in 2024/2025 academic year at Bachelor’s Programme in &#039;&#039;&#039;Data Science and Business Analytics&#039;&#039;&#039; (DSBA).&lt;br /&gt;
&lt;br /&gt;
The full syllabus can be accessed at [https://www.hse.ru/ba/data/courses/1071074261.html this page]. &lt;br /&gt;
&lt;br /&gt;
= Teachers and assistants = &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Group !! 241 !! 242 !! 243 !! 244 !! 245 !! 246&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://www.hse.ru/org/persons/528651897 Nikita Makarov]&lt;br /&gt;
|-&lt;br /&gt;
| Seminar Instructor&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | [https://www.hse.ru/org/persons/191485259 Vladimir Kurenkov]&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | [https://t.me/seemur Simon Kondakov]&lt;br /&gt;
|-&lt;br /&gt;
| Teaching Assistant&lt;br /&gt;
| tg: [https://t.me/leon1dl @leon1dl]&lt;br /&gt;
| tg: [https://t.me/Mellodizzz @Mellodizzz]&lt;br /&gt;
| tg: [https://t.me/yksee @yksee]&lt;br /&gt;
| tg: [https://t.me/polina_gur @polina_gur]&lt;br /&gt;
| tg: [https://t.me/d_poly @d_poly]&lt;br /&gt;
| tg: [https://t.me/rina_mlv @rina_mlv]&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer Assistant&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://t.me/svbudygin @svbudygin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
You may find [https://docs.google.com/spreadsheets/d/1Qh4uXaAZy-nX-dYlA_CtAo4zoWhvwC1ekL4p5-8As0A/edit?gid=1121952238#gid=1121952238 your grades].&lt;br /&gt;
&lt;br /&gt;
== Formula ==&lt;br /&gt;
&#039;&#039;&#039;Final Grade = M1 * 0.4 + M3 * 0.6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mi = E * 0.4 + HW * 0.2 + Q * 0.2 + S * 0.2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039; - exam grade: rational number [0, 10] = sum of the grade for the oral and written parts, out of 5 each&lt;br /&gt;
* &#039;&#039;&#039;HW&#039;&#039;&#039; - homework grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;Q&#039;&#039;&#039; - lecture quizzes grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039; - seminar practice grade: rational number [0, 10]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;rounding&#039;&#039;&#039;: each element in the formulae is rounded up&lt;br /&gt;
&lt;br /&gt;
== Plagiarism policy ==&lt;br /&gt;
&lt;br /&gt;
If plagiarism is detected, the assessment element will be assigned a score of &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the student is suspected of preparing the task not on his own, the teacher has the right to initiate additional verification or defense of this particular assessment element. Then such an assessment element will be graded based on the additional verification or the defense.&lt;br /&gt;
&lt;br /&gt;
= Home assignments =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Contest !! Deadline !! Topic&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Lectures = &lt;br /&gt;
Lectures are held on Saturdays from 14:40 till 17:40.&lt;br /&gt;
&lt;br /&gt;
== Lecture Materials ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 6&#039;&#039;&#039;&lt;br /&gt;
* Introduction to the course&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort&lt;br /&gt;
* Lower bounds of sorting&lt;br /&gt;
* Counting sort&lt;br /&gt;
* Radix sort&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 2, 3, 8&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 13&#039;&#039;&#039;&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, basic operations (insert, delete, rotate, find min/max)&lt;br /&gt;
* AVL-trees, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 12, Knuth, vol. 3, ch. 6.2.3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 27&#039;&#039;&#039;&lt;br /&gt;
* Red-black trees, basic operations&lt;br /&gt;
* Treaps, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 13&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 4&#039;&#039;&#039;&lt;br /&gt;
* Treaps, how to insert and to remove items using split and merge&lt;br /&gt;
* Treaps with implicit keys&lt;br /&gt;
* Tries, compact tries, basic operations&lt;br /&gt;
* 2-3-4 trees, basic operations: search, insert&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 11&#039;&#039;&#039;&lt;br /&gt;
* Quiz #1 (sorting, trees)&lt;br /&gt;
* 2-3-4 trees, basic operations: delete&lt;br /&gt;
* B-trees, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 18&#039;&#039;&#039;&lt;br /&gt;
* Hash tables, collisions, collision resolution by chaining, open addressing&lt;br /&gt;
* PATRICIA trie, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 25&#039;&#039;&#039;&lt;br /&gt;
* Exam in module 1&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 8&#039;&#039;&#039;&lt;br /&gt;
* Exact string matching, naive algorithm, the preprocessing approach, Z-algorithm, the simplest linear-time algorithm&lt;br /&gt;
* The Knuth-Morris-Pratt algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 1, 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 15&#039;&#039;&#039;&lt;br /&gt;
* The Boyer-Moore algorithm&lt;br /&gt;
* The Aho-Corasick algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 2, 3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 22&#039;&#039;&#039;&lt;br /&gt;
* Suffix trees: basic definition, naive algorithm to build&lt;br /&gt;
* Suffix trees: Ukkonen&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 5, 6&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 29&#039;&#039;&#039;&lt;br /&gt;
* Quiz #2 (string matching)&lt;br /&gt;
* Suffix trees applications: generalized suffix tree, the longest common substring for two and more strings&lt;br /&gt;
* Suffix arrays: building using suffix tree, exact string matching&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 6, 7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 6&#039;&#039;&#039;&lt;br /&gt;
* Suffix arrays: exact string matching&lt;br /&gt;
* Dynamic programming, two conveyors problem&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 7, Cormen, ch. 15&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 13&#039;&#039;&#039;&lt;br /&gt;
* Dynamic programming: two conveyors problem, matrix-chain multiplication, the longest common subsequence, the Levenstein distance&lt;br /&gt;
* Greedy algoirthms: an activity-selection problem, Huffman codes&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 15, 16&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 10&#039;&#039;&#039;&lt;br /&gt;
* Greedy algoirthms: the longest increasing subsequence, LCS-problem with greedy approach&lt;br /&gt;
* Greedy algorithms: Huffman codes, correctness of Huffman&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 16&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 17&#039;&#039;&#039;&lt;br /&gt;
* Text compression, models: static, semistatic, adaptive, symbolwise models, dictionary models&lt;br /&gt;
* Dictionary models: LZ-77, LZ-78, LZW&lt;br /&gt;
* Static and semistatic Huffman codes, tree serialization&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 1, 2, Atallah, ch. 12&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 24&#039;&#039;&#039;&lt;br /&gt;
* Adaptive Huffman codes&lt;br /&gt;
* Arithmetic coding&lt;br /&gt;
* RLE&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Atallah, ch. 12, Witten, ch. 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 31&#039;&#039;&#039;&lt;br /&gt;
* Quiz #3 (dynamic programming, greedy algorithms)&lt;br /&gt;
* RLE implementation&lt;br /&gt;
* Burrows-Wheeler transform&lt;br /&gt;
* Move to front&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feb 7&#039;&#039;&#039;&lt;br /&gt;
* Graphs, main definitions, representation of graphs&lt;br /&gt;
* Breadth-first search, single-source shortest paths in non-weighted graph&lt;br /&gt;
* Depth-first search, topological sort, strongly connected components&lt;br /&gt;
* Single-source shortest paths, Bellman-Ford algorithm, Dijkstra&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 22, 24&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feb 14&#039;&#039;&#039;&lt;br /&gt;
* Single-source shortest paths, Dijkstra&#039;s algorithm&lt;br /&gt;
* All-pairs shortest paths, &amp;quot;matrix multiplication&amp;quot;, Floyd-Warshall algorithm, Johnson&#039;s algorithm&lt;br /&gt;
* Maximum flow, main definitions&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 24, 25, 26&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 1==&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Lower bounds of sorting using comparisons&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, heap sort, counting sort, radix sort&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, basic operations (insert, delete, rotate, find min/max)&lt;br /&gt;
* AVL-trees, basic operations&lt;br /&gt;
* Red-black trees, basic operations&lt;br /&gt;
* Treaps, basic operations&lt;br /&gt;
* Treaps with implicit keys&lt;br /&gt;
* Tries, compact tries, basic operations&lt;br /&gt;
* 2-3-4 trees, basic operations&lt;br /&gt;
* B-trees, basic operations&lt;br /&gt;
* Hash tables, collisions, collision resolution by chaining, open addressing&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 3==&lt;/div&gt;</summary>
		<author><name>Nkmakarov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=95221</id>
		<title>Algorithms and Data Structures DSBA 2025/2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=95221"/>
		<updated>2026-02-07T17:31:27Z</updated>

		<summary type="html">&lt;p&gt;Nkmakarov: Update list of lectures&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
This page contains basic information for the course Algorithms and Data Structures in 2024/2025 academic year at Bachelor’s Programme in &#039;&#039;&#039;Data Science and Business Analytics&#039;&#039;&#039; (DSBA).&lt;br /&gt;
&lt;br /&gt;
The full syllabus can be accessed at [https://www.hse.ru/ba/data/courses/1071074261.html this page]. &lt;br /&gt;
&lt;br /&gt;
= Teachers and assistants = &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Group !! 241 !! 242 !! 243 !! 244 !! 245 !! 246&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://www.hse.ru/org/persons/528651897 Nikita Makarov]&lt;br /&gt;
|-&lt;br /&gt;
| Seminar Instructor&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | [https://www.hse.ru/org/persons/191485259 Vladimir Kurenkov]&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | [https://t.me/seemur Simon Kondakov]&lt;br /&gt;
|-&lt;br /&gt;
| Teaching Assistant&lt;br /&gt;
| tg: [https://t.me/leon1dl @leon1dl]&lt;br /&gt;
| tg: [https://t.me/Mellodizzz @Mellodizzz]&lt;br /&gt;
| tg: [https://t.me/yksee @yksee]&lt;br /&gt;
| tg: [https://t.me/polina_gur @polina_gur]&lt;br /&gt;
| tg: [https://t.me/d_poly @d_poly]&lt;br /&gt;
| tg: [https://t.me/rina_mlv @rina_mlv]&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer Assistant&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://t.me/svbudygin @svbudygin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
You may find [https://docs.google.com/spreadsheets/d/1Qh4uXaAZy-nX-dYlA_CtAo4zoWhvwC1ekL4p5-8As0A/edit?gid=1121952238#gid=1121952238 your grades].&lt;br /&gt;
&lt;br /&gt;
== Formula ==&lt;br /&gt;
&#039;&#039;&#039;Final Grade = M1 * 0.4 + M3 * 0.6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mi = E * 0.4 + HW * 0.2 + Q * 0.2 + S * 0.2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039; - exam grade: rational number [0, 10] = sum of the grade for the oral and written parts, out of 5 each&lt;br /&gt;
* &#039;&#039;&#039;HW&#039;&#039;&#039; - homework grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;Q&#039;&#039;&#039; - lecture quizzes grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039; - seminar practice grade: rational number [0, 10]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;rounding&#039;&#039;&#039;: each element in the formulae is rounded up&lt;br /&gt;
&lt;br /&gt;
== Plagiarism policy ==&lt;br /&gt;
&lt;br /&gt;
If plagiarism is detected, the assessment element will be assigned a score of &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the student is suspected of preparing the task not on his own, the teacher has the right to initiate additional verification or defense of this particular assessment element. Then such an assessment element will be graded based on the additional verification or the defense.&lt;br /&gt;
&lt;br /&gt;
= Home assignments =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Contest !! Deadline !! Topic&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Lectures = &lt;br /&gt;
Lectures are held on Saturdays from 14:40 till 17:40.&lt;br /&gt;
&lt;br /&gt;
== Lecture Materials ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 6&#039;&#039;&#039;&lt;br /&gt;
* Introduction to the course&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort&lt;br /&gt;
* Lower bounds of sorting&lt;br /&gt;
* Counting sort&lt;br /&gt;
* Radix sort&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 2, 3, 8&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 13&#039;&#039;&#039;&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, basic operations (insert, delete, rotate, find min/max)&lt;br /&gt;
* AVL-trees, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 12, Knuth, vol. 3, ch. 6.2.3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 27&#039;&#039;&#039;&lt;br /&gt;
* Red-black trees, basic operations&lt;br /&gt;
* Treaps, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 13&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 4&#039;&#039;&#039;&lt;br /&gt;
* Treaps, how to insert and to remove items using split and merge&lt;br /&gt;
* Treaps with implicit keys&lt;br /&gt;
* Tries, compact tries, basic operations&lt;br /&gt;
* 2-3-4 trees, basic operations: search, insert&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 11&#039;&#039;&#039;&lt;br /&gt;
* Quiz #1 (sorting, trees)&lt;br /&gt;
* 2-3-4 trees, basic operations: delete&lt;br /&gt;
* B-trees, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 18&#039;&#039;&#039;&lt;br /&gt;
* Hash tables, collisions, collision resolution by chaining, open addressing&lt;br /&gt;
* PATRICIA trie, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 25&#039;&#039;&#039;&lt;br /&gt;
* Exam in module 1&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 8&#039;&#039;&#039;&lt;br /&gt;
* Exact string matching, naive algorithm, the preprocessing approach, Z-algorithm, the simplest linear-time algorithm&lt;br /&gt;
* The Knuth-Morris-Pratt algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 1, 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 15&#039;&#039;&#039;&lt;br /&gt;
* The Boyer-Moore algorithm&lt;br /&gt;
* The Aho-Corasick algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 2, 3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 22&#039;&#039;&#039;&lt;br /&gt;
* Suffix trees: basic definition, naive algorithm to build&lt;br /&gt;
* Suffix trees: Ukkonen&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 5, 6&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 29&#039;&#039;&#039;&lt;br /&gt;
* Quiz #2 (string matching)&lt;br /&gt;
* Suffix trees applications: generalized suffix tree, the longest common substring for two and more strings&lt;br /&gt;
* Suffix arrays: building using suffix tree, exact string matching&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 6, 7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 6&#039;&#039;&#039;&lt;br /&gt;
* Suffix arrays: exact string matching&lt;br /&gt;
* Dynamic programming, two conveyors problem&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 7, Cormen, ch. 15&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 13&#039;&#039;&#039;&lt;br /&gt;
* Dynamic programming: two conveyors problem, matrix-chain multiplication, the longest common subsequence, the Levenstein distance&lt;br /&gt;
* Greedy algoirthms: an activity-selection problem, Huffman codes&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 15, 16&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 10&#039;&#039;&#039;&lt;br /&gt;
* Greedy algoirthms: the longest increasing subsequence, LCS-problem with greedy approach&lt;br /&gt;
* Greedy algorithms: Huffman codes, correctness of Huffman&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 16&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 17&#039;&#039;&#039;&lt;br /&gt;
* Text compression, models: static, semistatic, adaptive, symbolwise models, dictionary models&lt;br /&gt;
* Dictionary models: LZ-77, LZ-78, LZW&lt;br /&gt;
* Static and semistatic Huffman codes, tree serialization&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 1, 2, Atallah, ch. 12&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 24&#039;&#039;&#039;&lt;br /&gt;
* Adaptive Huffman codes&lt;br /&gt;
* Arithmetic coding&lt;br /&gt;
* RLE&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Atallah, ch. 12, Witten, ch. 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 31&#039;&#039;&#039;&lt;br /&gt;
* Quiz #3 (dynamic programming, greedy algorithms)&lt;br /&gt;
* RLE implementation&lt;br /&gt;
* Burrows-Wheeler transform&lt;br /&gt;
* Move to front&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feb 7&#039;&#039;&#039;&lt;br /&gt;
* Graphs, main definitions, representation of graphs&lt;br /&gt;
* Breadth-first search, single-source shortest paths in non-weighted graph&lt;br /&gt;
* Depth-first search, topological sort, strongly connected components&lt;br /&gt;
* Single-source shortest paths, Bellman-Ford algorithm, Dijkstra&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 22, 24&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 1==&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Lower bounds of sorting using comparisons&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, heap sort, counting sort, radix sort&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, basic operations (insert, delete, rotate, find min/max)&lt;br /&gt;
* AVL-trees, basic operations&lt;br /&gt;
* Red-black trees, basic operations&lt;br /&gt;
* Treaps, basic operations&lt;br /&gt;
* Treaps with implicit keys&lt;br /&gt;
* Tries, compact tries, basic operations&lt;br /&gt;
* 2-3-4 trees, basic operations&lt;br /&gt;
* B-trees, basic operations&lt;br /&gt;
* Hash tables, collisions, collision resolution by chaining, open addressing&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 3==&lt;/div&gt;</summary>
		<author><name>Nkmakarov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=95116</id>
		<title>Algorithms and Data Structures DSBA 2025/2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=95116"/>
		<updated>2026-02-02T00:57:45Z</updated>

		<summary type="html">&lt;p&gt;Nkmakarov: Update list of lectures&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
This page contains basic information for the course Algorithms and Data Structures in 2024/2025 academic year at Bachelor’s Programme in &#039;&#039;&#039;Data Science and Business Analytics&#039;&#039;&#039; (DSBA).&lt;br /&gt;
&lt;br /&gt;
The full syllabus can be accessed at [https://www.hse.ru/ba/data/courses/1071074261.html this page]. &lt;br /&gt;
&lt;br /&gt;
= Teachers and assistants = &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Group !! 241 !! 242 !! 243 !! 244 !! 245 !! 246&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://www.hse.ru/org/persons/528651897 Nikita Makarov]&lt;br /&gt;
|-&lt;br /&gt;
| Seminar Instructor&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | [https://www.hse.ru/org/persons/191485259 Vladimir Kurenkov]&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | [https://t.me/seemur Simon Kondakov]&lt;br /&gt;
|-&lt;br /&gt;
| Teaching Assistant&lt;br /&gt;
| tg: [https://t.me/leon1dl @leon1dl]&lt;br /&gt;
| tg: [https://t.me/Mellodizzz @Mellodizzz]&lt;br /&gt;
| tg: [https://t.me/yksee @yksee]&lt;br /&gt;
| tg: [https://t.me/polina_gur @polina_gur]&lt;br /&gt;
| tg: [https://t.me/d_poly @d_poly]&lt;br /&gt;
| tg: [https://t.me/rina_mlv @rina_mlv]&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer Assistant&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://t.me/svbudygin @svbudygin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
You may find [https://docs.google.com/spreadsheets/d/1Qh4uXaAZy-nX-dYlA_CtAo4zoWhvwC1ekL4p5-8As0A/edit?gid=1121952238#gid=1121952238 your grades].&lt;br /&gt;
&lt;br /&gt;
== Formula ==&lt;br /&gt;
&#039;&#039;&#039;Final Grade = M1 * 0.4 + M3 * 0.6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mi = E * 0.4 + HW * 0.2 + Q * 0.2 + S * 0.2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039; - exam grade: rational number [0, 10] = sum of the grade for the oral and written parts, out of 5 each&lt;br /&gt;
* &#039;&#039;&#039;HW&#039;&#039;&#039; - homework grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;Q&#039;&#039;&#039; - lecture quizzes grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039; - seminar practice grade: rational number [0, 10]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;rounding&#039;&#039;&#039;: each element in the formulae is rounded up&lt;br /&gt;
&lt;br /&gt;
== Plagiarism policy ==&lt;br /&gt;
&lt;br /&gt;
If plagiarism is detected, the assessment element will be assigned a score of &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the student is suspected of preparing the task not on his own, the teacher has the right to initiate additional verification or defense of this particular assessment element. Then such an assessment element will be graded based on the additional verification or the defense.&lt;br /&gt;
&lt;br /&gt;
= Home assignments =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Contest !! Deadline !! Topic&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Lectures = &lt;br /&gt;
Lectures are held on Saturdays from 14:40 till 17:40.&lt;br /&gt;
&lt;br /&gt;
== Lecture Materials ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 6&#039;&#039;&#039;&lt;br /&gt;
* Introduction to the course&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort&lt;br /&gt;
* Lower bounds of sorting&lt;br /&gt;
* Counting sort&lt;br /&gt;
* Radix sort&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 2, 3, 8&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 13&#039;&#039;&#039;&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, basic operations (insert, delete, rotate, find min/max)&lt;br /&gt;
* AVL-trees, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 12, Knuth, vol. 3, ch. 6.2.3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 27&#039;&#039;&#039;&lt;br /&gt;
* Red-black trees, basic operations&lt;br /&gt;
* Treaps, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 13&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 4&#039;&#039;&#039;&lt;br /&gt;
* Treaps, how to insert and to remove items using split and merge&lt;br /&gt;
* Treaps with implicit keys&lt;br /&gt;
* Tries, compact tries, basic operations&lt;br /&gt;
* 2-3-4 trees, basic operations: search, insert&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 11&#039;&#039;&#039;&lt;br /&gt;
* Quiz #1 (sorting, trees)&lt;br /&gt;
* 2-3-4 trees, basic operations: delete&lt;br /&gt;
* B-trees, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 18&#039;&#039;&#039;&lt;br /&gt;
* Hash tables, collisions, collision resolution by chaining, open addressing&lt;br /&gt;
* PATRICIA trie, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 25&#039;&#039;&#039;&lt;br /&gt;
* Exam in module 1&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 8&#039;&#039;&#039;&lt;br /&gt;
* Exact string matching, naive algorithm, the preprocessing approach, Z-algorithm, the simplest linear-time algorithm&lt;br /&gt;
* The Knuth-Morris-Pratt algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 1, 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 15&#039;&#039;&#039;&lt;br /&gt;
* The Boyer-Moore algorithm&lt;br /&gt;
* The Aho-Corasick algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 2, 3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 22&#039;&#039;&#039;&lt;br /&gt;
* Suffix trees: basic definition, naive algorithm to build&lt;br /&gt;
* Suffix trees: Ukkonen&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 5, 6&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 29&#039;&#039;&#039;&lt;br /&gt;
* Quiz #2 (string matching)&lt;br /&gt;
* Suffix trees applications: generalized suffix tree, the longest common substring for two and more strings&lt;br /&gt;
* Suffix arrays: building using suffix tree, exact string matching&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 6, 7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 6&#039;&#039;&#039;&lt;br /&gt;
* Suffix arrays: exact string matching&lt;br /&gt;
* Dynamic programming, two conveyors problem&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 7, Cormen, ch. 15&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 13&#039;&#039;&#039;&lt;br /&gt;
* Dynamic programming: two conveyors problem, matrix-chain multiplication, the longest common subsequence, the Levenstein distance&lt;br /&gt;
* Greedy algoirthms: an activity-selection problem, Huffman codes&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 15, 16&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 10&#039;&#039;&#039;&lt;br /&gt;
* Greedy algoirthms: the longest increasing subsequence, LCS-problem with greedy approach&lt;br /&gt;
* Greedy algorithms: Huffman codes, correctness of Huffman&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 16&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 17&#039;&#039;&#039;&lt;br /&gt;
* Text compression, models: static, semistatic, adaptive, symbolwise models, dictionary models&lt;br /&gt;
* Dictionary models: LZ-77, LZ-78, LZW&lt;br /&gt;
* Static and semistatic Huffman codes, tree serialization&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 1, 2, Atallah, ch. 12&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 24&#039;&#039;&#039;&lt;br /&gt;
* Adaptive Huffman codes&lt;br /&gt;
* Arithmetic coding&lt;br /&gt;
* RLE&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Atallah, ch. 12, Witten, ch. 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 31&#039;&#039;&#039;&lt;br /&gt;
* Quiz #3 (dynamic programming, greedy algorithms)&lt;br /&gt;
* RLE implementation&lt;br /&gt;
* Burrows-Wheeler transform&lt;br /&gt;
* Move to front&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 1==&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Lower bounds of sorting using comparisons&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, heap sort, counting sort, radix sort&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, basic operations (insert, delete, rotate, find min/max)&lt;br /&gt;
* AVL-trees, basic operations&lt;br /&gt;
* Red-black trees, basic operations&lt;br /&gt;
* Treaps, basic operations&lt;br /&gt;
* Treaps with implicit keys&lt;br /&gt;
* Tries, compact tries, basic operations&lt;br /&gt;
* 2-3-4 trees, basic operations&lt;br /&gt;
* B-trees, basic operations&lt;br /&gt;
* Hash tables, collisions, collision resolution by chaining, open addressing&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 3==&lt;/div&gt;</summary>
		<author><name>Nkmakarov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=94950</id>
		<title>Algorithms and Data Structures DSBA 2025/2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=94950"/>
		<updated>2026-01-25T14:42:37Z</updated>

		<summary type="html">&lt;p&gt;Nkmakarov: Update list of lectures&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
This page contains basic information for the course Algorithms and Data Structures in 2024/2025 academic year at Bachelor’s Programme in &#039;&#039;&#039;Data Science and Business Analytics&#039;&#039;&#039; (DSBA).&lt;br /&gt;
&lt;br /&gt;
The full syllabus can be accessed at [https://www.hse.ru/ba/data/courses/1071074261.html this page]. &lt;br /&gt;
&lt;br /&gt;
= Teachers and assistants = &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Group !! 241 !! 242 !! 243 !! 244 !! 245 !! 246&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://www.hse.ru/org/persons/528651897 Nikita Makarov]&lt;br /&gt;
|-&lt;br /&gt;
| Seminar Instructor&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | [https://www.hse.ru/org/persons/191485259 Vladimir Kurenkov]&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | [https://t.me/seemur Simon Kondakov]&lt;br /&gt;
|-&lt;br /&gt;
| Teaching Assistant&lt;br /&gt;
| tg: [https://t.me/leon1dl @leon1dl]&lt;br /&gt;
| tg: [https://t.me/Mellodizzz @Mellodizzz]&lt;br /&gt;
| tg: [https://t.me/yksee @yksee]&lt;br /&gt;
| tg: [https://t.me/polina_gur @polina_gur]&lt;br /&gt;
| tg: [https://t.me/d_poly @d_poly]&lt;br /&gt;
| tg: [https://t.me/rina_mlv @rina_mlv]&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer Assistant&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://t.me/svbudygin @svbudygin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
You may find [https://docs.google.com/spreadsheets/d/1Qh4uXaAZy-nX-dYlA_CtAo4zoWhvwC1ekL4p5-8As0A/edit?gid=1121952238#gid=1121952238 your grades].&lt;br /&gt;
&lt;br /&gt;
== Formula ==&lt;br /&gt;
&#039;&#039;&#039;Final Grade = M1 * 0.4 + M3 * 0.6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mi = E * 0.4 + HW * 0.2 + Q * 0.2 + S * 0.2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039; - exam grade: rational number [0, 10] = sum of the grade for the oral and written parts, out of 5 each&lt;br /&gt;
* &#039;&#039;&#039;HW&#039;&#039;&#039; - homework grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;Q&#039;&#039;&#039; - lecture quizzes grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039; - seminar practice grade: rational number [0, 10]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;rounding&#039;&#039;&#039;: each element in the formulae is rounded up&lt;br /&gt;
&lt;br /&gt;
== Plagiarism policy ==&lt;br /&gt;
&lt;br /&gt;
If plagiarism is detected, the assessment element will be assigned a score of &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the student is suspected of preparing the task not on his own, the teacher has the right to initiate additional verification or defense of this particular assessment element. Then such an assessment element will be graded based on the additional verification or the defense.&lt;br /&gt;
&lt;br /&gt;
= Home assignments =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Contest !! Deadline !! Topic&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Lectures = &lt;br /&gt;
Lectures are held on Saturdays from 14:40 till 17:40.&lt;br /&gt;
&lt;br /&gt;
== Lecture Materials ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 6&#039;&#039;&#039;&lt;br /&gt;
* Introduction to the course&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort&lt;br /&gt;
* Lower bounds of sorting&lt;br /&gt;
* Counting sort&lt;br /&gt;
* Radix sort&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 2, 3, 8&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 13&#039;&#039;&#039;&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, basic operations (insert, delete, rotate, find min/max)&lt;br /&gt;
* AVL-trees, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 12, Knuth, vol. 3, ch. 6.2.3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 27&#039;&#039;&#039;&lt;br /&gt;
* Red-black trees, basic operations&lt;br /&gt;
* Treaps, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 13&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 4&#039;&#039;&#039;&lt;br /&gt;
* Treaps, how to insert and to remove items using split and merge&lt;br /&gt;
* Treaps with implicit keys&lt;br /&gt;
* Tries, compact tries, basic operations&lt;br /&gt;
* 2-3-4 trees, basic operations: search, insert&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 11&#039;&#039;&#039;&lt;br /&gt;
* Quiz #1 (sorting, trees)&lt;br /&gt;
* 2-3-4 trees, basic operations: delete&lt;br /&gt;
* B-trees, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 18&#039;&#039;&#039;&lt;br /&gt;
* Hash tables, collisions, collision resolution by chaining, open addressing&lt;br /&gt;
* PATRICIA trie, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 25&#039;&#039;&#039;&lt;br /&gt;
* Exam in module 1&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 8&#039;&#039;&#039;&lt;br /&gt;
* Exact string matching, naive algorithm, the preprocessing approach, Z-algorithm, the simplest linear-time algorithm&lt;br /&gt;
* The Knuth-Morris-Pratt algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 1, 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 15&#039;&#039;&#039;&lt;br /&gt;
* The Boyer-Moore algorithm&lt;br /&gt;
* The Aho-Corasick algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 2, 3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 22&#039;&#039;&#039;&lt;br /&gt;
* Suffix trees: basic definition, naive algorithm to build&lt;br /&gt;
* Suffix trees: Ukkonen&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 5, 6&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 29&#039;&#039;&#039;&lt;br /&gt;
* Quiz #2 (string matching)&lt;br /&gt;
* Suffix trees applications: generalized suffix tree, the longest common substring for two and more strings&lt;br /&gt;
* Suffix arrays: building using suffix tree, exact string matching&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 6, 7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 6&#039;&#039;&#039;&lt;br /&gt;
* Suffix arrays: exact string matching&lt;br /&gt;
* Dynamic programming, two conveyors problem&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 7, Cormen, ch. 15&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 13&#039;&#039;&#039;&lt;br /&gt;
* Dynamic programming: two conveyors problem, matrix-chain multiplication, the longest common subsequence, the Levenstein distance&lt;br /&gt;
* Greedy algoirthms: an activity-selection problem, Huffman codes&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 15, 16&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 10&#039;&#039;&#039;&lt;br /&gt;
* Greedy algoirthms: the longest increasing subsequence, LCS-problem with greedy approach&lt;br /&gt;
* Greedy algorithms: Huffman codes, correctness of Huffman&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 16&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 17&#039;&#039;&#039;&lt;br /&gt;
* Text compression, models: static, semistatic, adaptive, symbolwise models, dictionary models&lt;br /&gt;
* Dictionary models: LZ-77, LZ-78, LZW&lt;br /&gt;
* Static and semistatic Huffman codes, tree serialization&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 1, 2, Atallah, ch. 12&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 24&#039;&#039;&#039;&lt;br /&gt;
* Adaptive Huffman codes&lt;br /&gt;
* Arithmetic coding&lt;br /&gt;
* RLE&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Atallah, ch. 12, Witten, ch. 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 31(preliminarily)&#039;&#039;&#039;&lt;br /&gt;
* Quiz #3 (dynamic programming, greedy algorithms)&lt;br /&gt;
* Burrows-Wheeler transform&lt;br /&gt;
* Move to front&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: TBD&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 1==&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Lower bounds of sorting using comparisons&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, heap sort, counting sort, radix sort&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, basic operations (insert, delete, rotate, find min/max)&lt;br /&gt;
* AVL-trees, basic operations&lt;br /&gt;
* Red-black trees, basic operations&lt;br /&gt;
* Treaps, basic operations&lt;br /&gt;
* Treaps with implicit keys&lt;br /&gt;
* Tries, compact tries, basic operations&lt;br /&gt;
* 2-3-4 trees, basic operations&lt;br /&gt;
* B-trees, basic operations&lt;br /&gt;
* Hash tables, collisions, collision resolution by chaining, open addressing&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 3==&lt;/div&gt;</summary>
		<author><name>Nkmakarov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=94888</id>
		<title>Algorithms and Data Structures DSBA 2025/2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=94888"/>
		<updated>2026-01-23T20:35:43Z</updated>

		<summary type="html">&lt;p&gt;Nkmakarov: Update list of lectures&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
This page contains basic information for the course Algorithms and Data Structures in 2024/2025 academic year at Bachelor’s Programme in &#039;&#039;&#039;Data Science and Business Analytics&#039;&#039;&#039; (DSBA).&lt;br /&gt;
&lt;br /&gt;
The full syllabus can be accessed at [https://www.hse.ru/ba/data/courses/1071074261.html this page]. &lt;br /&gt;
&lt;br /&gt;
= Teachers and assistants = &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Group !! 241 !! 242 !! 243 !! 244 !! 245 !! 246&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://www.hse.ru/org/persons/528651897 Nikita Makarov]&lt;br /&gt;
|-&lt;br /&gt;
| Seminar Instructor&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | [https://www.hse.ru/org/persons/191485259 Vladimir Kurenkov]&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | [https://t.me/seemur Simon Kondakov]&lt;br /&gt;
|-&lt;br /&gt;
| Teaching Assistant&lt;br /&gt;
| tg: [https://t.me/leon1dl @leon1dl]&lt;br /&gt;
| tg: [https://t.me/Mellodizzz @Mellodizzz]&lt;br /&gt;
| tg: [https://t.me/yksee @yksee]&lt;br /&gt;
| tg: [https://t.me/polina_gur @polina_gur]&lt;br /&gt;
| tg: [https://t.me/d_poly @d_poly]&lt;br /&gt;
| tg: [https://t.me/rina_mlv @rina_mlv]&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer Assistant&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://t.me/svbudygin @svbudygin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
You may find [https://docs.google.com/spreadsheets/d/1Qh4uXaAZy-nX-dYlA_CtAo4zoWhvwC1ekL4p5-8As0A/edit?gid=1121952238#gid=1121952238 your grades].&lt;br /&gt;
&lt;br /&gt;
== Formula ==&lt;br /&gt;
&#039;&#039;&#039;Final Grade = M1 * 0.4 + M3 * 0.6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mi = E * 0.4 + HW * 0.2 + Q * 0.2 + S * 0.2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039; - exam grade: rational number [0, 10] = sum of the grade for the oral and written parts, out of 5 each&lt;br /&gt;
* &#039;&#039;&#039;HW&#039;&#039;&#039; - homework grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;Q&#039;&#039;&#039; - lecture quizzes grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039; - seminar practice grade: rational number [0, 10]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;rounding&#039;&#039;&#039;: each element in the formulae is rounded up&lt;br /&gt;
&lt;br /&gt;
== Plagiarism policy ==&lt;br /&gt;
&lt;br /&gt;
If plagiarism is detected, the assessment element will be assigned a score of &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the student is suspected of preparing the task not on his own, the teacher has the right to initiate additional verification or defense of this particular assessment element. Then such an assessment element will be graded based on the additional verification or the defense.&lt;br /&gt;
&lt;br /&gt;
= Home assignments =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Contest !! Deadline !! Topic&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Lectures = &lt;br /&gt;
Lectures are held on Saturdays from 14:40 till 17:40.&lt;br /&gt;
&lt;br /&gt;
== Lecture Materials ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 6&#039;&#039;&#039;&lt;br /&gt;
* Introduction to the course&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort&lt;br /&gt;
* Lower bounds of sorting&lt;br /&gt;
* Counting sort&lt;br /&gt;
* Radix sort&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 2, 3, 8&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 13&#039;&#039;&#039;&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, basic operations (insert, delete, rotate, find min/max)&lt;br /&gt;
* AVL-trees, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 12, Knuth, vol. 3, ch. 6.2.3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 27&#039;&#039;&#039;&lt;br /&gt;
* Red-black trees, basic operations&lt;br /&gt;
* Treaps, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 13&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 4&#039;&#039;&#039;&lt;br /&gt;
* Treaps, how to insert and to remove items using split and merge&lt;br /&gt;
* Treaps with implicit keys&lt;br /&gt;
* Tries, compact tries, basic operations&lt;br /&gt;
* 2-3-4 trees, basic operations: search, insert&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 11&#039;&#039;&#039;&lt;br /&gt;
* Quiz #1 (sorting, trees)&lt;br /&gt;
* 2-3-4 trees, basic operations: delete&lt;br /&gt;
* B-trees, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 18&#039;&#039;&#039;&lt;br /&gt;
* Hash tables, collisions, collision resolution by chaining, open addressing&lt;br /&gt;
* PATRICIA trie, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 25&#039;&#039;&#039;&lt;br /&gt;
* Exam in module 1&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 8&#039;&#039;&#039;&lt;br /&gt;
* Exact string matching, naive algorithm, the preprocessing approach, Z-algorithm, the simplest linear-time algorithm&lt;br /&gt;
* The Knuth-Morris-Pratt algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 1, 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 15&#039;&#039;&#039;&lt;br /&gt;
* The Boyer-Moore algorithm&lt;br /&gt;
* The Aho-Corasick algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 2, 3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 22&#039;&#039;&#039;&lt;br /&gt;
* Suffix trees: basic definition, naive algorithm to build&lt;br /&gt;
* Suffix trees: Ukkonen&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 5, 6&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 29&#039;&#039;&#039;&lt;br /&gt;
* Quiz #2 (string matching)&lt;br /&gt;
* Suffix trees applications: generalized suffix tree, the longest common substring for two and more strings&lt;br /&gt;
* Suffix arrays: building using suffix tree, exact string matching&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 6, 7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 6&#039;&#039;&#039;&lt;br /&gt;
* Suffix arrays: exact string matching&lt;br /&gt;
* Dynamic programming, two conveyors problem&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 7, Cormen, ch. 15&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 13&#039;&#039;&#039;&lt;br /&gt;
* Dynamic programming: two conveyors problem, matrix-chain multiplication, the longest common subsequence, the Levenstein distance&lt;br /&gt;
* Greedy algoirthms: an activity-selection problem, Huffman codes&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 15, 16&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 10&#039;&#039;&#039;&lt;br /&gt;
* Greedy algoirthms: the longest increasing subsequence, LCS-problem with greedy approach&lt;br /&gt;
* Greedy algorithms: Huffman codes, correctness of Huffman&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 16&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 17&#039;&#039;&#039;&lt;br /&gt;
* Text compression, models: static, semistatic, adaptive, symbolwise models, dictionary models&lt;br /&gt;
* Dictionary models: LZ-77, LZ-78, LZW&lt;br /&gt;
* Static and semistatic Huffman codes, tree serialization&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 1, 2, Atallah, ch. 12&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 24(preliminarily)&#039;&#039;&#039;&lt;br /&gt;
* Adaptive Huffman codes&lt;br /&gt;
* Canonical Huffman codes&lt;br /&gt;
* Prediction by partial matching&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: TBD&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 31(preliminarily)&#039;&#039;&#039;&lt;br /&gt;
* Quiz #3 (dynamic programming, greedy algorithms)&lt;br /&gt;
* Arithmetic coding&lt;br /&gt;
* Graphs&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: TBD&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 1==&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Lower bounds of sorting using comparisons&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, heap sort, counting sort, radix sort&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, basic operations (insert, delete, rotate, find min/max)&lt;br /&gt;
* AVL-trees, basic operations&lt;br /&gt;
* Red-black trees, basic operations&lt;br /&gt;
* Treaps, basic operations&lt;br /&gt;
* Treaps with implicit keys&lt;br /&gt;
* Tries, compact tries, basic operations&lt;br /&gt;
* 2-3-4 trees, basic operations&lt;br /&gt;
* B-trees, basic operations&lt;br /&gt;
* Hash tables, collisions, collision resolution by chaining, open addressing&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 3==&lt;/div&gt;</summary>
		<author><name>Nkmakarov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=94697</id>
		<title>Algorithms and Data Structures DSBA 2025/2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=94697"/>
		<updated>2026-01-18T21:29:15Z</updated>

		<summary type="html">&lt;p&gt;Nkmakarov: Update list of lectures&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
This page contains basic information for the course Algorithms and Data Structures in 2024/2025 academic year at Bachelor’s Programme in &#039;&#039;&#039;Data Science and Business Analytics&#039;&#039;&#039; (DSBA).&lt;br /&gt;
&lt;br /&gt;
The full syllabus can be accessed at [https://www.hse.ru/ba/data/courses/1071074261.html this page]. &lt;br /&gt;
&lt;br /&gt;
= Teachers and assistants = &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Group !! 241 !! 242 !! 243 !! 244 !! 245 !! 246&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://www.hse.ru/org/persons/528651897 Nikita Makarov]&lt;br /&gt;
|-&lt;br /&gt;
| Seminar Instructor&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | [https://www.hse.ru/org/persons/191485259 Vladimir Kurenkov]&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | [https://t.me/seemur Simon Kondakov]&lt;br /&gt;
|-&lt;br /&gt;
| Teaching Assistant&lt;br /&gt;
| tg: [https://t.me/leon1dl @leon1dl]&lt;br /&gt;
| tg: [https://t.me/Mellodizzz @Mellodizzz]&lt;br /&gt;
| tg: [https://t.me/yksee @yksee]&lt;br /&gt;
| tg: [https://t.me/polina_gur @polina_gur]&lt;br /&gt;
| tg: [https://t.me/d_poly @d_poly]&lt;br /&gt;
| tg: [https://t.me/rina_mlv @rina_mlv]&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer Assistant&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://t.me/svbudygin @svbudygin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
You may find [https://docs.google.com/spreadsheets/d/1Qh4uXaAZy-nX-dYlA_CtAo4zoWhvwC1ekL4p5-8As0A/edit?gid=1121952238#gid=1121952238 your grades].&lt;br /&gt;
&lt;br /&gt;
== Formula ==&lt;br /&gt;
&#039;&#039;&#039;Final Grade = M1 * 0.4 + M3 * 0.6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mi = E * 0.4 + HW * 0.2 + Q * 0.2 + S * 0.2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039; - exam grade: rational number [0, 10] = sum of the grade for the oral and written parts, out of 5 each&lt;br /&gt;
* &#039;&#039;&#039;HW&#039;&#039;&#039; - homework grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;Q&#039;&#039;&#039; - lecture quizzes grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039; - seminar practice grade: rational number [0, 10]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;rounding&#039;&#039;&#039;: each element in the formulae is rounded up&lt;br /&gt;
&lt;br /&gt;
== Plagiarism policy ==&lt;br /&gt;
&lt;br /&gt;
If plagiarism is detected, the assessment element will be assigned a score of &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the student is suspected of preparing the task not on his own, the teacher has the right to initiate additional verification or defense of this particular assessment element. Then such an assessment element will be graded based on the additional verification or the defense.&lt;br /&gt;
&lt;br /&gt;
= Home assignments =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Contest !! Deadline !! Topic&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Lectures = &lt;br /&gt;
Lectures are held on Saturdays from 14:40 till 17:40.&lt;br /&gt;
&lt;br /&gt;
== Lecture Materials ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 6&#039;&#039;&#039;&lt;br /&gt;
* Introduction to the course&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort&lt;br /&gt;
* Lower bounds of sorting&lt;br /&gt;
* Counting sort&lt;br /&gt;
* Radix sort&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 2, 3, 8&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 13&#039;&#039;&#039;&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, basic operations (insert, delete, rotate, find min/max)&lt;br /&gt;
* AVL-trees, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 12, Knuth, vol. 3, ch. 6.2.3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 27&#039;&#039;&#039;&lt;br /&gt;
* Red-black trees, basic operations&lt;br /&gt;
* Treaps, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 13&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 4&#039;&#039;&#039;&lt;br /&gt;
* Treaps, how to insert and to remove items using split and merge&lt;br /&gt;
* Treaps with implicit keys&lt;br /&gt;
* Tries, compact tries, basic operations&lt;br /&gt;
* 2-3-4 trees, basic operations: search, insert&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 11&#039;&#039;&#039;&lt;br /&gt;
* Quiz #1 (sorting, trees)&lt;br /&gt;
* 2-3-4 trees, basic operations: delete&lt;br /&gt;
* B-trees, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 18&#039;&#039;&#039;&lt;br /&gt;
* Hash tables, collisions, collision resolution by chaining, open addressing&lt;br /&gt;
* PATRICIA trie, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 25&#039;&#039;&#039;&lt;br /&gt;
* Exam in module 1&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 8&#039;&#039;&#039;&lt;br /&gt;
* Exact string matching, naive algorithm, the preprocessing approach, Z-algorithm, the simplest linear-time algorithm&lt;br /&gt;
* The Knuth-Morris-Pratt algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 1, 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 15&#039;&#039;&#039;&lt;br /&gt;
* The Boyer-Moore algorithm&lt;br /&gt;
* The Aho-Corasick algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 2, 3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 22&#039;&#039;&#039;&lt;br /&gt;
* Suffix trees: basic definition, naive algorithm to build&lt;br /&gt;
* Suffix trees: Ukkonen&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 5, 6&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 29&#039;&#039;&#039;&lt;br /&gt;
* Quiz #2 (string matching)&lt;br /&gt;
* Suffix trees applications: generalized suffix tree, the longest common substring for two and more strings&lt;br /&gt;
* Suffix arrays: building using suffix tree, exact string matching&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 6, 7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 6&#039;&#039;&#039;&lt;br /&gt;
* Suffix arrays: exact string matching&lt;br /&gt;
* Dynamic programming, two conveyors problem&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 7, Cormen, ch. 15&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 13&#039;&#039;&#039;&lt;br /&gt;
* Dynamic programming: two conveyors problem, matrix-chain multiplication, the longest common subsequence, the Levenstein distance&lt;br /&gt;
* Greedy algoirthms: an activity-selection problem, Huffman codes&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 15, 16&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 10&#039;&#039;&#039;&lt;br /&gt;
* Greedy algoirthms: the longest increasing subsequence, LCS-problem with greedy approach&lt;br /&gt;
* Greedy algorithms: Huffman codes, correctness of Huffman&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 16&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 17&#039;&#039;&#039;&lt;br /&gt;
* Text compression, models: static, semistatic, adaptive, symbolwise models, dictionary models&lt;br /&gt;
* Dictionary models: LZ-77, LZ-78, LZW&lt;br /&gt;
* Static and semistatic Huffman codes, tree serialization&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 1, 2, Atallah, ch. 12&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 24(preliminarily)&#039;&#039;&#039;&lt;br /&gt;
* Quiz #3 (dynamic programming, greedy algorithms)&lt;br /&gt;
* Adaptive Huffman codes&lt;br /&gt;
* Canonical Huffman codes&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: TBD&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 1==&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Lower bounds of sorting using comparisons&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, heap sort, counting sort, radix sort&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, basic operations (insert, delete, rotate, find min/max)&lt;br /&gt;
* AVL-trees, basic operations&lt;br /&gt;
* Red-black trees, basic operations&lt;br /&gt;
* Treaps, basic operations&lt;br /&gt;
* Treaps with implicit keys&lt;br /&gt;
* Tries, compact tries, basic operations&lt;br /&gt;
* 2-3-4 trees, basic operations&lt;br /&gt;
* B-trees, basic operations&lt;br /&gt;
* Hash tables, collisions, collision resolution by chaining, open addressing&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 3==&lt;/div&gt;</summary>
		<author><name>Nkmakarov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=94421</id>
		<title>Algorithms and Data Structures DSBA 2025/2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=94421"/>
		<updated>2026-01-10T17:37:31Z</updated>

		<summary type="html">&lt;p&gt;Nkmakarov: Update list of lectures&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
This page contains basic information for the course Algorithms and Data Structures in 2024/2025 academic year at Bachelor’s Programme in &#039;&#039;&#039;Data Science and Business Analytics&#039;&#039;&#039; (DSBA).&lt;br /&gt;
&lt;br /&gt;
The full syllabus can be accessed at [https://www.hse.ru/ba/data/courses/1071074261.html this page]. &lt;br /&gt;
&lt;br /&gt;
= Teachers and assistants = &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Group !! 241 !! 242 !! 243 !! 244 !! 245 !! 246&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://www.hse.ru/org/persons/528651897 Nikita Makarov]&lt;br /&gt;
|-&lt;br /&gt;
| Seminar Instructor&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | [https://www.hse.ru/org/persons/191485259 Vladimir Kurenkov]&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | [https://t.me/seemur Simon Kondakov]&lt;br /&gt;
|-&lt;br /&gt;
| Teaching Assistant&lt;br /&gt;
| tg: [https://t.me/leon1dl @leon1dl]&lt;br /&gt;
| tg: [https://t.me/Mellodizzz @Mellodizzz]&lt;br /&gt;
| tg: [https://t.me/yksee @yksee]&lt;br /&gt;
| tg: [https://t.me/polina_gur @polina_gur]&lt;br /&gt;
| tg: [https://t.me/d_poly @d_poly]&lt;br /&gt;
| tg: [https://t.me/rina_mlv @rina_mlv]&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer Assistant&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://t.me/svbudygin @svbudygin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
You may find [https://docs.google.com/spreadsheets/d/1Qh4uXaAZy-nX-dYlA_CtAo4zoWhvwC1ekL4p5-8As0A/edit?gid=1121952238#gid=1121952238 your grades].&lt;br /&gt;
&lt;br /&gt;
== Formula ==&lt;br /&gt;
&#039;&#039;&#039;Final Grade = M1 * 0.4 + M3 * 0.6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mi = E * 0.4 + HW * 0.2 + Q * 0.2 + S * 0.2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039; - exam grade: rational number [0, 10] = sum of the grade for the oral and written parts, out of 5 each&lt;br /&gt;
* &#039;&#039;&#039;HW&#039;&#039;&#039; - homework grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;Q&#039;&#039;&#039; - lecture quizzes grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039; - seminar practice grade: rational number [0, 10]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;rounding&#039;&#039;&#039;: each element in the formulae is rounded up&lt;br /&gt;
&lt;br /&gt;
== Plagiarism policy ==&lt;br /&gt;
&lt;br /&gt;
If plagiarism is detected, the assessment element will be assigned a score of &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the student is suspected of preparing the task not on his own, the teacher has the right to initiate additional verification or defense of this particular assessment element. Then such an assessment element will be graded based on the additional verification or the defense.&lt;br /&gt;
&lt;br /&gt;
= Home assignments =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Contest !! Deadline !! Topic&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Lectures = &lt;br /&gt;
Lectures are held on Saturdays from 14:40 till 17:40.&lt;br /&gt;
&lt;br /&gt;
== Lecture Materials ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 6&#039;&#039;&#039;&lt;br /&gt;
* Introduction to the course&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort&lt;br /&gt;
* Lower bounds of sorting&lt;br /&gt;
* Counting sort&lt;br /&gt;
* Radix sort&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 2, 3, 8&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 13&#039;&#039;&#039;&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, basic operations (insert, delete, rotate, find min/max)&lt;br /&gt;
* AVL-trees, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 12, Knuth, vol. 3, ch. 6.2.3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 27&#039;&#039;&#039;&lt;br /&gt;
* Red-black trees, basic operations&lt;br /&gt;
* Treaps, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 13&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 4&#039;&#039;&#039;&lt;br /&gt;
* Treaps, how to insert and to remove items using split and merge&lt;br /&gt;
* Treaps with implicit keys&lt;br /&gt;
* Tries, compact tries, basic operations&lt;br /&gt;
* 2-3-4 trees, basic operations: search, insert&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 11&#039;&#039;&#039;&lt;br /&gt;
* Quiz #1 (sorting, trees)&lt;br /&gt;
* 2-3-4 trees, basic operations: delete&lt;br /&gt;
* B-trees, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 18&#039;&#039;&#039;&lt;br /&gt;
* Hash tables, collisions, collision resolution by chaining, open addressing&lt;br /&gt;
* PATRICIA trie, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 25&#039;&#039;&#039;&lt;br /&gt;
* Exam in module 1&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 8&#039;&#039;&#039;&lt;br /&gt;
* Exact string matching, naive algorithm, the preprocessing approach, Z-algorithm, the simplest linear-time algorithm&lt;br /&gt;
* The Knuth-Morris-Pratt algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 1, 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 15&#039;&#039;&#039;&lt;br /&gt;
* The Boyer-Moore algorithm&lt;br /&gt;
* The Aho-Corasick algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 2, 3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 22&#039;&#039;&#039;&lt;br /&gt;
* Suffix trees: basic definition, naive algorithm to build&lt;br /&gt;
* Suffix trees: Ukkonen&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 5, 6&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 29&#039;&#039;&#039;&lt;br /&gt;
* Quiz #2 (string matching)&lt;br /&gt;
* Suffix trees applications: generalized suffix tree, the longest common substring for two and more strings&lt;br /&gt;
* Suffix arrays: building using suffix tree, exact string matching&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 6, 7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 6&#039;&#039;&#039;&lt;br /&gt;
* Suffix arrays: exact string matching&lt;br /&gt;
* Dynamic programming, two conveyors problem&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 7, Cormen, ch. 15&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 13&#039;&#039;&#039;&lt;br /&gt;
* Dynamic programming: two conveyors problem, matrix-chain multiplication, the longest common subsequence, the Levenstein distance&lt;br /&gt;
* Greedy algoirthms: an activity-selection problem, Huffman codes&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 15, 16&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 10&#039;&#039;&#039;&lt;br /&gt;
* Greedy algoirthms: the longest increasing subsequence, LCS-problem with greedy approach&lt;br /&gt;
* Greedy algorithms: Huffman codes, correctness of Huffman&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 16&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 17(preliminarily)&#039;&#039;&#039;&lt;br /&gt;
* Text compression, models: static, semistatic, adaptive, symbolwise models, dictionary models&lt;br /&gt;
* Dictionary models: LZ-77, LZ-78, LZW&lt;br /&gt;
* Static and semistatic Huffman codes, tree serialization&lt;br /&gt;
* Adaptive Huffman codes&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: TBD&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 24(preliminarily)&#039;&#039;&#039;&lt;br /&gt;
* Quiz #3 (dynamic programming, greedy algorithms)&lt;br /&gt;
* Adaptive Huffman codes&lt;br /&gt;
* Canonical Huffman codes&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: TBD&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 1==&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Lower bounds of sorting using comparisons&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, heap sort, counting sort, radix sort&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, basic operations (insert, delete, rotate, find min/max)&lt;br /&gt;
* AVL-trees, basic operations&lt;br /&gt;
* Red-black trees, basic operations&lt;br /&gt;
* Treaps, basic operations&lt;br /&gt;
* Treaps with implicit keys&lt;br /&gt;
* Tries, compact tries, basic operations&lt;br /&gt;
* 2-3-4 trees, basic operations&lt;br /&gt;
* B-trees, basic operations&lt;br /&gt;
* Hash tables, collisions, collision resolution by chaining, open addressing&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 3==&lt;/div&gt;</summary>
		<author><name>Nkmakarov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=94235</id>
		<title>Algorithms and Data Structures DSBA 2025/2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=94235"/>
		<updated>2025-12-14T19:42:05Z</updated>

		<summary type="html">&lt;p&gt;Nkmakarov: Update list of lectures&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
This page contains basic information for the course Algorithms and Data Structures in 2024/2025 academic year at Bachelor’s Programme in &#039;&#039;&#039;Data Science and Business Analytics&#039;&#039;&#039; (DSBA).&lt;br /&gt;
&lt;br /&gt;
The full syllabus can be accessed at [https://www.hse.ru/ba/data/courses/1071074261.html this page]. &lt;br /&gt;
&lt;br /&gt;
= Teachers and assistants = &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Group !! 241 !! 242 !! 243 !! 244 !! 245 !! 246&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://www.hse.ru/org/persons/528651897 Nikita Makarov]&lt;br /&gt;
|-&lt;br /&gt;
| Seminar Instructor&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | [https://www.hse.ru/org/persons/191485259 Vladimir Kurenkov]&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | [https://t.me/seemur Simon Kondakov]&lt;br /&gt;
|-&lt;br /&gt;
| Teaching Assistant&lt;br /&gt;
| tg: [https://t.me/leon1dl @leon1dl]&lt;br /&gt;
| tg: [https://t.me/Mellodizzz @Mellodizzz]&lt;br /&gt;
| tg: [https://t.me/yksee @yksee]&lt;br /&gt;
| tg: [https://t.me/polina_gur @polina_gur]&lt;br /&gt;
| tg: [https://t.me/d_poly @d_poly]&lt;br /&gt;
| tg: [https://t.me/rina_mlv @rina_mlv]&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer Assistant&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://t.me/svbudygin @svbudygin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
You may find [https://docs.google.com/spreadsheets/d/1Qh4uXaAZy-nX-dYlA_CtAo4zoWhvwC1ekL4p5-8As0A/edit?gid=1121952238#gid=1121952238 your grades].&lt;br /&gt;
&lt;br /&gt;
== Formula ==&lt;br /&gt;
&#039;&#039;&#039;Final Grade = M1 * 0.4 + M3 * 0.6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mi = E * 0.4 + HW * 0.2 + Q * 0.2 + S * 0.2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039; - exam grade: rational number [0, 10] = sum of the grade for the oral and written parts, out of 5 each&lt;br /&gt;
* &#039;&#039;&#039;HW&#039;&#039;&#039; - homework grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;Q&#039;&#039;&#039; - lecture quizzes grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039; - seminar practice grade: rational number [0, 10]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;rounding&#039;&#039;&#039;: each element in the formulae is rounded up&lt;br /&gt;
&lt;br /&gt;
== Plagiarism policy ==&lt;br /&gt;
&lt;br /&gt;
If plagiarism is detected, the assessment element will be assigned a score of &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the student is suspected of preparing the task not on his own, the teacher has the right to initiate additional verification or defense of this particular assessment element. Then such an assessment element will be graded based on the additional verification or the defense.&lt;br /&gt;
&lt;br /&gt;
= Home assignments =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Contest !! Deadline !! Topic&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Lectures = &lt;br /&gt;
Lectures are held on Saturdays from 14:40 till 17:40.&lt;br /&gt;
&lt;br /&gt;
== Lecture Materials ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 6&#039;&#039;&#039;&lt;br /&gt;
* Introduction to the course&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort&lt;br /&gt;
* Lower bounds of sorting&lt;br /&gt;
* Counting sort&lt;br /&gt;
* Radix sort&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 2, 3, 8&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 13&#039;&#039;&#039;&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, basic operations (insert, delete, rotate, find min/max)&lt;br /&gt;
* AVL-trees, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 12, Knuth, vol. 3, ch. 6.2.3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 27&#039;&#039;&#039;&lt;br /&gt;
* Red-black trees, basic operations&lt;br /&gt;
* Treaps, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 13&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 4&#039;&#039;&#039;&lt;br /&gt;
* Treaps, how to insert and to remove items using split and merge&lt;br /&gt;
* Treaps with implicit keys&lt;br /&gt;
* Tries, compact tries, basic operations&lt;br /&gt;
* 2-3-4 trees, basic operations: search, insert&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 11&#039;&#039;&#039;&lt;br /&gt;
* Quiz #1&lt;br /&gt;
* 2-3-4 trees, basic operations: delete&lt;br /&gt;
* B-trees, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 18&#039;&#039;&#039;&lt;br /&gt;
* Hash tables, collisions, collision resolution by chaining, open addressing&lt;br /&gt;
* PATRICIA trie, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 25&#039;&#039;&#039;&lt;br /&gt;
* Exam in module 1&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 8&#039;&#039;&#039;&lt;br /&gt;
* Exact string matching, naive algorithm, the preprocessing approach, Z-algorithm, the simplest linear-time algorithm&lt;br /&gt;
* The Knuth-Morris-Pratt algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 1, 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 15&#039;&#039;&#039;&lt;br /&gt;
* The Boyer-Moore algorithm&lt;br /&gt;
* The Aho-Corasick algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 2, 3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 22&#039;&#039;&#039;&lt;br /&gt;
* Suffix trees: basic definition, naive algorithm to build&lt;br /&gt;
* Suffix trees: Ukkonen&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 5, 6&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 29&#039;&#039;&#039;&lt;br /&gt;
* Quiz #2&lt;br /&gt;
* Suffix trees applications: generalized suffix tree, the longest common substring for two and more strings&lt;br /&gt;
* Suffix arrays: building using suffix tree, exact string matching&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 6, 7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 6&#039;&#039;&#039;&lt;br /&gt;
* Suffix arrays: exact string matching&lt;br /&gt;
* Dynamic programming, two conveyors problem&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 7, Cormen, ch. 15&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 13&#039;&#039;&#039;&lt;br /&gt;
* Dynamic programming: two conveyors problem, matrix-chain multiplication, the longest common subsequence, the Levenstein distance&lt;br /&gt;
* Greedy algoirthms: an activity-selection problem, Huffman codes&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 15, 16&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 1==&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Lower bounds of sorting using comparisons&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, heap sort, counting sort, radix sort&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, basic operations (insert, delete, rotate, find min/max)&lt;br /&gt;
* AVL-trees, basic operations&lt;br /&gt;
* Red-black trees, basic operations&lt;br /&gt;
* Treaps, basic operations&lt;br /&gt;
* Treaps with implicit keys&lt;br /&gt;
* Tries, compact tries, basic operations&lt;br /&gt;
* 2-3-4 trees, basic operations&lt;br /&gt;
* B-trees, basic operations&lt;br /&gt;
* Hash tables, collisions, collision resolution by chaining, open addressing&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 3==&lt;/div&gt;</summary>
		<author><name>Nkmakarov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=94092</id>
		<title>Algorithms and Data Structures DSBA 2025/2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=94092"/>
		<updated>2025-12-06T20:17:42Z</updated>

		<summary type="html">&lt;p&gt;Nkmakarov: Update list of lectures&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
This page contains basic information for the course Algorithms and Data Structures in 2024/2025 academic year at Bachelor’s Programme in &#039;&#039;&#039;Data Science and Business Analytics&#039;&#039;&#039; (DSBA).&lt;br /&gt;
&lt;br /&gt;
The full syllabus can be accessed at [https://www.hse.ru/ba/data/courses/1071074261.html this page]. &lt;br /&gt;
&lt;br /&gt;
= Teachers and assistants = &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Group !! 241 !! 242 !! 243 !! 244 !! 245 !! 246&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://www.hse.ru/org/persons/528651897 Nikita Makarov]&lt;br /&gt;
|-&lt;br /&gt;
| Seminar Instructor&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | [https://www.hse.ru/org/persons/191485259 Vladimir Kurenkov]&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | [https://t.me/seemur Simon Kondakov]&lt;br /&gt;
|-&lt;br /&gt;
| Teaching Assistant&lt;br /&gt;
| tg: [https://t.me/leon1dl @leon1dl]&lt;br /&gt;
| tg: [https://t.me/Mellodizzz @Mellodizzz]&lt;br /&gt;
| tg: [https://t.me/yksee @yksee]&lt;br /&gt;
| tg: [https://t.me/polina_gur @polina_gur]&lt;br /&gt;
| tg: [https://t.me/d_poly @d_poly]&lt;br /&gt;
| tg: [https://t.me/rina_mlv @rina_mlv]&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer Assistant&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://t.me/svbudygin @svbudygin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
You may find [https://docs.google.com/spreadsheets/d/1Qh4uXaAZy-nX-dYlA_CtAo4zoWhvwC1ekL4p5-8As0A/edit?gid=1121952238#gid=1121952238 your grades].&lt;br /&gt;
&lt;br /&gt;
== Formula ==&lt;br /&gt;
&#039;&#039;&#039;Final Grade = M1 * 0.4 + M3 * 0.6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mi = E * 0.4 + HW * 0.2 + Q * 0.2 + S * 0.2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039; - exam grade: rational number [0, 10] = sum of the grade for the oral and written parts, out of 5 each&lt;br /&gt;
* &#039;&#039;&#039;HW&#039;&#039;&#039; - homework grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;Q&#039;&#039;&#039; - lecture quizzes grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039; - seminar practice grade: rational number [0, 10]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;rounding&#039;&#039;&#039;: each element in the formulae is rounded up&lt;br /&gt;
&lt;br /&gt;
== Plagiarism policy ==&lt;br /&gt;
&lt;br /&gt;
If plagiarism is detected, the assessment element will be assigned a score of &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the student is suspected of preparing the task not on his own, the teacher has the right to initiate additional verification or defense of this particular assessment element. Then such an assessment element will be graded based on the additional verification or the defense.&lt;br /&gt;
&lt;br /&gt;
= Home assignments =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Contest !! Deadline !! Topic&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Lectures = &lt;br /&gt;
Lectures are held on Saturdays from 14:40 till 17:40.&lt;br /&gt;
&lt;br /&gt;
== Lecture Materials ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 6&#039;&#039;&#039;&lt;br /&gt;
* Introduction to the course&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort&lt;br /&gt;
* Lower bounds of sorting&lt;br /&gt;
* Counting sort&lt;br /&gt;
* Radix sort&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 2, 3, 8&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 13&#039;&#039;&#039;&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, basic operations (insert, delete, rotate, find min/max)&lt;br /&gt;
* AVL-trees, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 12, Knuth, vol. 3, ch. 6.2.3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 27&#039;&#039;&#039;&lt;br /&gt;
* Red-black trees, basic operations&lt;br /&gt;
* Treaps, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 13&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 4&#039;&#039;&#039;&lt;br /&gt;
* Treaps, how to insert and to remove items using split and merge&lt;br /&gt;
* Treaps with implicit keys&lt;br /&gt;
* Tries, compact tries, basic operations&lt;br /&gt;
* 2-3-4 trees, basic operations: search, insert&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 11&#039;&#039;&#039;&lt;br /&gt;
* Quiz #1&lt;br /&gt;
* 2-3-4 trees, basic operations: delete&lt;br /&gt;
* B-trees, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 18&#039;&#039;&#039;&lt;br /&gt;
* Hash tables, collisions, collision resolution by chaining, open addressing&lt;br /&gt;
* PATRICIA trie, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 25&#039;&#039;&#039;&lt;br /&gt;
* Exam in module 1&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 8&#039;&#039;&#039;&lt;br /&gt;
* Exact string matching, naive algorithm, the preprocessing approach, Z-algorithm, the simplest linear-time algorithm&lt;br /&gt;
* The Knuth-Morris-Pratt algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 1, 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 15&#039;&#039;&#039;&lt;br /&gt;
* The Boyer-Moore algorithm&lt;br /&gt;
* The Aho-Corasick algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 2, 3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 22&#039;&#039;&#039;&lt;br /&gt;
* Suffix trees: basic definition, naive algorithm to build&lt;br /&gt;
* Suffix trees: Ukkonen&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 5, 6&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 29&#039;&#039;&#039;&lt;br /&gt;
* Quiz #2&lt;br /&gt;
* Suffix trees applications: generalized suffix tree, the longest common substring for two and more strings&lt;br /&gt;
* Suffix arrays: building using suffix tree, exact string matching&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 6, 7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 6&#039;&#039;&#039;&lt;br /&gt;
* Suffix arrays: exact string matching&lt;br /&gt;
* Dynamic programming, two conveyors problem&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 7, Cormen, ch. 15&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 13(preliminarily)&#039;&#039;&#039;&lt;br /&gt;
* Dynamic programming, greedy algorithms&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: TBD&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 1==&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Lower bounds of sorting using comparisons&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, heap sort, counting sort, radix sort&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, basic operations (insert, delete, rotate, find min/max)&lt;br /&gt;
* AVL-trees, basic operations&lt;br /&gt;
* Red-black trees, basic operations&lt;br /&gt;
* Treaps, basic operations&lt;br /&gt;
* Treaps with implicit keys&lt;br /&gt;
* Tries, compact tries, basic operations&lt;br /&gt;
* 2-3-4 trees, basic operations&lt;br /&gt;
* B-trees, basic operations&lt;br /&gt;
* Hash tables, collisions, collision resolution by chaining, open addressing&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 3==&lt;/div&gt;</summary>
		<author><name>Nkmakarov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=93971</id>
		<title>Algorithms and Data Structures DSBA 2025/2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=93971"/>
		<updated>2025-11-29T23:40:01Z</updated>

		<summary type="html">&lt;p&gt;Nkmakarov: Update list of lectures&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
This page contains basic information for the course Algorithms and Data Structures in 2024/2025 academic year at Bachelor’s Programme in &#039;&#039;&#039;Data Science and Business Analytics&#039;&#039;&#039; (DSBA).&lt;br /&gt;
&lt;br /&gt;
The full syllabus can be accessed at [https://www.hse.ru/ba/data/courses/1071074261.html this page]. &lt;br /&gt;
&lt;br /&gt;
= Teachers and assistants = &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Group !! 241 !! 242 !! 243 !! 244 !! 245 !! 246&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://www.hse.ru/org/persons/528651897 Nikita Makarov]&lt;br /&gt;
|-&lt;br /&gt;
| Seminar Instructor&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | [https://www.hse.ru/org/persons/191485259 Vladimir Kurenkov]&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | [https://t.me/seemur Simon Kondakov]&lt;br /&gt;
|-&lt;br /&gt;
| Teaching Assistant&lt;br /&gt;
| tg: [https://t.me/leon1dl @leon1dl]&lt;br /&gt;
| tg: [https://t.me/Mellodizzz @Mellodizzz]&lt;br /&gt;
| tg: [https://t.me/yksee @yksee]&lt;br /&gt;
| tg: [https://t.me/polina_gur @polina_gur]&lt;br /&gt;
| tg: [https://t.me/d_poly @d_poly]&lt;br /&gt;
| tg: [https://t.me/rina_mlv @rina_mlv]&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer Assistant&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://t.me/svbudygin @svbudygin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
You may find [https://docs.google.com/spreadsheets/d/1Qh4uXaAZy-nX-dYlA_CtAo4zoWhvwC1ekL4p5-8As0A/edit?gid=1121952238#gid=1121952238 your grades].&lt;br /&gt;
&lt;br /&gt;
== Formula ==&lt;br /&gt;
&#039;&#039;&#039;Final Grade = M1 * 0.4 + M3 * 0.6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mi = E * 0.4 + HW * 0.2 + Q * 0.2 + S * 0.2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039; - exam grade: rational number [0, 10] = sum of the grade for the oral and written parts, out of 5 each&lt;br /&gt;
* &#039;&#039;&#039;HW&#039;&#039;&#039; - homework grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;Q&#039;&#039;&#039; - lecture quizzes grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039; - seminar practice grade: rational number [0, 10]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;rounding&#039;&#039;&#039;: each element in the formulae is rounded up&lt;br /&gt;
&lt;br /&gt;
== Plagiarism policy ==&lt;br /&gt;
&lt;br /&gt;
If plagiarism is detected, the assessment element will be assigned a score of &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the student is suspected of preparing the task not on his own, the teacher has the right to initiate additional verification or defense of this particular assessment element. Then such an assessment element will be graded based on the additional verification or the defense.&lt;br /&gt;
&lt;br /&gt;
= Home assignments =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Contest !! Deadline !! Topic&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Lectures = &lt;br /&gt;
Lectures are held on Saturdays from 14:40 till 17:40.&lt;br /&gt;
&lt;br /&gt;
== Lecture Materials ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 6&#039;&#039;&#039;&lt;br /&gt;
* Introduction to the course&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort&lt;br /&gt;
* Lower bounds of sorting&lt;br /&gt;
* Counting sort&lt;br /&gt;
* Radix sort&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 2, 3, 8&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 13&#039;&#039;&#039;&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, basic operations (insert, delete, rotate, find min/max)&lt;br /&gt;
* AVL-trees, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 12, Knuth, vol. 3, ch. 6.2.3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 27&#039;&#039;&#039;&lt;br /&gt;
* Red-black trees, basic operations&lt;br /&gt;
* Treaps, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 13&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 4&#039;&#039;&#039;&lt;br /&gt;
* Treaps, how to insert and to remove items using split and merge&lt;br /&gt;
* Treaps with implicit keys&lt;br /&gt;
* Tries, compact tries, basic operations&lt;br /&gt;
* 2-3-4 trees, basic operations: search, insert&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 11&#039;&#039;&#039;&lt;br /&gt;
* Quiz #1&lt;br /&gt;
* 2-3-4 trees, basic operations: delete&lt;br /&gt;
* B-trees, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 18&#039;&#039;&#039;&lt;br /&gt;
* Hash tables, collisions, collision resolution by chaining, open addressing&lt;br /&gt;
* PATRICIA trie, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 25&#039;&#039;&#039;&lt;br /&gt;
* Exam in module 1&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 8&#039;&#039;&#039;&lt;br /&gt;
* Exact string matching, naive algorithm, the preprocessing approach, Z-algorithm, the simplest linear-time algorithm&lt;br /&gt;
* The Knuth-Morris-Pratt algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 1, 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 15&#039;&#039;&#039;&lt;br /&gt;
* The Boyer-Moore algorithm&lt;br /&gt;
* The Aho-Corasick algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 2, 3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 22&#039;&#039;&#039;&lt;br /&gt;
* Suffix trees: basic definition, naive algorithm to build&lt;br /&gt;
* Suffix trees: Ukkonen&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 5, 6&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 29&#039;&#039;&#039;&lt;br /&gt;
* Quiz #2&lt;br /&gt;
* Suffix trees applications: generalized suffix tree, the longest common substring for two and more strings&lt;br /&gt;
* Suffix arrays: building using suffix tree, exact string matching&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 6, 7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 6(preliminarily)&#039;&#039;&#039;&lt;br /&gt;
* Suffix arrays: exact string matching&lt;br /&gt;
* Dynamic programming&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: TBD&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 1==&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Lower bounds of sorting using comparisons&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, heap sort, counting sort, radix sort&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, basic operations (insert, delete, rotate, find min/max)&lt;br /&gt;
* AVL-trees, basic operations&lt;br /&gt;
* Red-black trees, basic operations&lt;br /&gt;
* Treaps, basic operations&lt;br /&gt;
* Treaps with implicit keys&lt;br /&gt;
* Tries, compact tries, basic operations&lt;br /&gt;
* 2-3-4 trees, basic operations&lt;br /&gt;
* B-trees, basic operations&lt;br /&gt;
* Hash tables, collisions, collision resolution by chaining, open addressing&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 3==&lt;/div&gt;</summary>
		<author><name>Nkmakarov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=93868</id>
		<title>Algorithms and Data Structures DSBA 2025/2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=93868"/>
		<updated>2025-11-24T18:55:29Z</updated>

		<summary type="html">&lt;p&gt;Nkmakarov: Update list of lectures&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
This page contains basic information for the course Algorithms and Data Structures in 2024/2025 academic year at Bachelor’s Programme in &#039;&#039;&#039;Data Science and Business Analytics&#039;&#039;&#039; (DSBA).&lt;br /&gt;
&lt;br /&gt;
The full syllabus can be accessed at [https://www.hse.ru/ba/data/courses/1071074261.html this page]. &lt;br /&gt;
&lt;br /&gt;
= Teachers and assistants = &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Group !! 241 !! 242 !! 243 !! 244 !! 245 !! 246&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://www.hse.ru/org/persons/528651897 Nikita Makarov]&lt;br /&gt;
|-&lt;br /&gt;
| Seminar Instructor&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | [https://www.hse.ru/org/persons/191485259 Vladimir Kurenkov]&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | [https://t.me/seemur Simon Kondakov]&lt;br /&gt;
|-&lt;br /&gt;
| Teaching Assistant&lt;br /&gt;
| tg: [https://t.me/leon1dl @leon1dl]&lt;br /&gt;
| tg: [https://t.me/Mellodizzz @Mellodizzz]&lt;br /&gt;
| tg: [https://t.me/yksee @yksee]&lt;br /&gt;
| tg: [https://t.me/polina_gur @polina_gur]&lt;br /&gt;
| tg: [https://t.me/d_poly @d_poly]&lt;br /&gt;
| tg: [https://t.me/rina_mlv @rina_mlv]&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer Assistant&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://t.me/svbudygin @svbudygin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
You may find [https://docs.google.com/spreadsheets/d/1Qh4uXaAZy-nX-dYlA_CtAo4zoWhvwC1ekL4p5-8As0A/edit?gid=1121952238#gid=1121952238 your grades].&lt;br /&gt;
&lt;br /&gt;
== Formula ==&lt;br /&gt;
&#039;&#039;&#039;Final Grade = M1 * 0.4 + M3 * 0.6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mi = E * 0.4 + HW * 0.2 + Q * 0.2 + S * 0.2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039; - exam grade: rational number [0, 10] = sum of the grade for the oral and written parts, out of 5 each&lt;br /&gt;
* &#039;&#039;&#039;HW&#039;&#039;&#039; - homework grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;Q&#039;&#039;&#039; - lecture quizzes grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039; - seminar practice grade: rational number [0, 10]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;rounding&#039;&#039;&#039;: each element in the formulae is rounded up&lt;br /&gt;
&lt;br /&gt;
== Plagiarism policy ==&lt;br /&gt;
&lt;br /&gt;
If plagiarism is detected, the assessment element will be assigned a score of &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the student is suspected of preparing the task not on his own, the teacher has the right to initiate additional verification or defense of this particular assessment element. Then such an assessment element will be graded based on the additional verification or the defense.&lt;br /&gt;
&lt;br /&gt;
= Home assignments =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Contest !! Deadline !! Topic&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Lectures = &lt;br /&gt;
Lectures are held on Saturdays from 14:40 till 17:40.&lt;br /&gt;
&lt;br /&gt;
== Lecture Materials ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 6&#039;&#039;&#039;&lt;br /&gt;
* Introduction to the course&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort&lt;br /&gt;
* Lower bounds of sorting&lt;br /&gt;
* Counting sort&lt;br /&gt;
* Radix sort&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 2, 3, 8&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 13&#039;&#039;&#039;&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, basic operations (insert, delete, rotate, find min/max)&lt;br /&gt;
* AVL-trees, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 12, Knuth, vol. 3, ch. 6.2.3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 27&#039;&#039;&#039;&lt;br /&gt;
* Red-black trees, basic operations&lt;br /&gt;
* Treaps, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 13&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 4&#039;&#039;&#039;&lt;br /&gt;
* Treaps, how to insert and to remove items using split and merge&lt;br /&gt;
* Treaps with implicit keys&lt;br /&gt;
* Tries, compact tries, basic operations&lt;br /&gt;
* 2-3-4 trees, basic operations: search, insert&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 11&#039;&#039;&#039;&lt;br /&gt;
* Quiz #1&lt;br /&gt;
* 2-3-4 trees, basic operations: delete&lt;br /&gt;
* B-trees, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 18&#039;&#039;&#039;&lt;br /&gt;
* Hash tables, collisions, collision resolution by chaining, open addressing&lt;br /&gt;
* PATRICIA trie, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 25&#039;&#039;&#039;&lt;br /&gt;
* Exam in module 1&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 8&#039;&#039;&#039;&lt;br /&gt;
* Exact string matching, naive algorithm, the preprocessing approach, Z-algorithm, the simplest linear-time algorithm&lt;br /&gt;
* The Knuth-Morris-Pratt algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 1, 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 15&#039;&#039;&#039;&lt;br /&gt;
* The Boyer-Moore algorithm&lt;br /&gt;
* The Aho-Corasick algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 2, 3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 22&#039;&#039;&#039;&lt;br /&gt;
* Suffix trees: basic definition, naive algorithm to build&lt;br /&gt;
* Suffix trees: Ukkonen&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 5, 6&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 29 (preliminarily)&#039;&#039;&#039;&lt;br /&gt;
* Quiz #2&lt;br /&gt;
* Suffix trees: applications&lt;br /&gt;
* Suffix arrays&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 7&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 1==&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Lower bounds of sorting using comparisons&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, heap sort, counting sort, radix sort&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, basic operations (insert, delete, rotate, find min/max)&lt;br /&gt;
* AVL-trees, basic operations&lt;br /&gt;
* Red-black trees, basic operations&lt;br /&gt;
* Treaps, basic operations&lt;br /&gt;
* Treaps with implicit keys&lt;br /&gt;
* Tries, compact tries, basic operations&lt;br /&gt;
* 2-3-4 trees, basic operations&lt;br /&gt;
* B-trees, basic operations&lt;br /&gt;
* Hash tables, collisions, collision resolution by chaining, open addressing&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 3==&lt;/div&gt;</summary>
		<author><name>Nkmakarov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=93701</id>
		<title>Algorithms and Data Structures DSBA 2025/2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=93701"/>
		<updated>2025-11-17T12:33:49Z</updated>

		<summary type="html">&lt;p&gt;Nkmakarov: Update list of lectures&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
This page contains basic information for the course Algorithms and Data Structures in 2024/2025 academic year at Bachelor’s Programme in &#039;&#039;&#039;Data Science and Business Analytics&#039;&#039;&#039; (DSBA).&lt;br /&gt;
&lt;br /&gt;
The full syllabus can be accessed at [https://www.hse.ru/ba/data/courses/1071074261.html this page]. &lt;br /&gt;
&lt;br /&gt;
= Teachers and assistants = &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Group !! 241 !! 242 !! 243 !! 244 !! 245 !! 246&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://www.hse.ru/org/persons/528651897 Nikita Makarov]&lt;br /&gt;
|-&lt;br /&gt;
| Seminar Instructor&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | [https://www.hse.ru/org/persons/191485259 Vladimir Kurenkov]&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | [https://t.me/seemur Simon Kondakov]&lt;br /&gt;
|-&lt;br /&gt;
| Teaching Assistant&lt;br /&gt;
| tg: [https://t.me/leon1dl @leon1dl]&lt;br /&gt;
| tg: [https://t.me/Mellodizzz @Mellodizzz]&lt;br /&gt;
| tg: [https://t.me/yksee @yksee]&lt;br /&gt;
| tg: [https://t.me/polina_gur @polina_gur]&lt;br /&gt;
| tg: [https://t.me/d_poly @d_poly]&lt;br /&gt;
| tg: [https://t.me/rina_mlv @rina_mlv]&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer Assistant&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://t.me/svbudygin @svbudygin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
You may find [https://docs.google.com/spreadsheets/d/1Qh4uXaAZy-nX-dYlA_CtAo4zoWhvwC1ekL4p5-8As0A/edit?gid=1121952238#gid=1121952238 your grades].&lt;br /&gt;
&lt;br /&gt;
== Formula ==&lt;br /&gt;
&#039;&#039;&#039;Final Grade = M1 * 0.4 + M3 * 0.6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mi = E * 0.4 + HW * 0.2 + Q * 0.2 + S * 0.2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039; - exam grade: rational number [0, 10] = sum of the grade for the oral and written parts, out of 5 each&lt;br /&gt;
* &#039;&#039;&#039;HW&#039;&#039;&#039; - homework grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;Q&#039;&#039;&#039; - lecture quizzes grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039; - seminar practice grade: rational number [0, 10]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;rounding&#039;&#039;&#039;: each element in the formulae is rounded up&lt;br /&gt;
&lt;br /&gt;
== Plagiarism policy ==&lt;br /&gt;
&lt;br /&gt;
If plagiarism is detected, the assessment element will be assigned a score of &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the student is suspected of preparing the task not on his own, the teacher has the right to initiate additional verification or defense of this particular assessment element. Then such an assessment element will be graded based on the additional verification or the defense.&lt;br /&gt;
&lt;br /&gt;
= Home assignments =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Contest !! Deadline !! Topic&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Lectures = &lt;br /&gt;
Lectures are held on Saturdays from 14:40 till 17:40.&lt;br /&gt;
&lt;br /&gt;
== Lecture Materials ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 6&#039;&#039;&#039;&lt;br /&gt;
* Introduction to the course&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort&lt;br /&gt;
* Lower bounds of sorting&lt;br /&gt;
* Counting sort&lt;br /&gt;
* Radix sort&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 2, 3, 8&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 13&#039;&#039;&#039;&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, basic operations (insert, delete, rotate, find min/max)&lt;br /&gt;
* AVL-trees, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 12, Knuth, vol. 3, ch. 6.2.3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 27&#039;&#039;&#039;&lt;br /&gt;
* Red-black trees, basic operations&lt;br /&gt;
* Treaps, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 13&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 4&#039;&#039;&#039;&lt;br /&gt;
* Treaps, how to insert and to remove items using split and merge&lt;br /&gt;
* Treaps with implicit keys&lt;br /&gt;
* Tries, compact tries, basic operations&lt;br /&gt;
* 2-3-4 trees, basic operations: search, insert&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 11&#039;&#039;&#039;&lt;br /&gt;
* Quiz #1&lt;br /&gt;
* 2-3-4 trees, basic operations: delete&lt;br /&gt;
* B-trees, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 18&#039;&#039;&#039;&lt;br /&gt;
* Hash tables, collisions, collision resolution by chaining, open addressing&lt;br /&gt;
* PATRICIA trie, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 25&#039;&#039;&#039;&lt;br /&gt;
* Exam in module 1&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 8&#039;&#039;&#039;&lt;br /&gt;
* Exact string matching, naive algorithm, the preprocessing approach, Z-algorithm, the simplest linear-time algorithm&lt;br /&gt;
* The Knuth-Morris-Pratt algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 1, 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 15&#039;&#039;&#039;&lt;br /&gt;
* The Boyer-Moore algorithm&lt;br /&gt;
* The Aho-Corasick algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 2, 3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 1==&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Lower bounds of sorting using comparisons&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, heap sort, counting sort, radix sort&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, basic operations (insert, delete, rotate, find min/max)&lt;br /&gt;
* AVL-trees, basic operations&lt;br /&gt;
* Red-black trees, basic operations&lt;br /&gt;
* Treaps, basic operations&lt;br /&gt;
* Treaps with implicit keys&lt;br /&gt;
* Tries, compact tries, basic operations&lt;br /&gt;
* 2-3-4 trees, basic operations&lt;br /&gt;
* B-trees, basic operations&lt;br /&gt;
* Hash tables, collisions, collision resolution by chaining, open addressing&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 3==&lt;/div&gt;</summary>
		<author><name>Nkmakarov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=93543</id>
		<title>Algorithms and Data Structures DSBA 2025/2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=93543"/>
		<updated>2025-11-11T11:32:09Z</updated>

		<summary type="html">&lt;p&gt;Nkmakarov: Update list of lectures&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
This page contains basic information for the course Algorithms and Data Structures in 2024/2025 academic year at Bachelor’s Programme in &#039;&#039;&#039;Data Science and Business Analytics&#039;&#039;&#039; (DSBA).&lt;br /&gt;
&lt;br /&gt;
The full syllabus can be accessed at [https://www.hse.ru/ba/data/courses/1071074261.html this page]. &lt;br /&gt;
&lt;br /&gt;
= Teachers and assistants = &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Group !! 241 !! 242 !! 243 !! 244 !! 245 !! 246&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://www.hse.ru/org/persons/528651897 Nikita Makarov]&lt;br /&gt;
|-&lt;br /&gt;
| Seminar Instructor&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | [https://www.hse.ru/org/persons/191485259 Vladimir Kurenkov]&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | [https://t.me/seemur Simon Kondakov]&lt;br /&gt;
|-&lt;br /&gt;
| Teaching Assistant&lt;br /&gt;
| tg: [https://t.me/leon1dl @leon1dl]&lt;br /&gt;
| tg: [https://t.me/Mellodizzz @Mellodizzz]&lt;br /&gt;
| tg: [https://t.me/yksee @yksee]&lt;br /&gt;
| tg: [https://t.me/polina_gur @polina_gur]&lt;br /&gt;
| tg: [https://t.me/d_poly @d_poly]&lt;br /&gt;
| tg: [https://t.me/rina_mlv @rina_mlv]&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer Assistant&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://t.me/svbudygin @svbudygin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
You may find [https://docs.google.com/spreadsheets/d/1Qh4uXaAZy-nX-dYlA_CtAo4zoWhvwC1ekL4p5-8As0A/edit?gid=1121952238#gid=1121952238 your grades].&lt;br /&gt;
&lt;br /&gt;
== Formula ==&lt;br /&gt;
&#039;&#039;&#039;Final Grade = M1 * 0.4 + M3 * 0.6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mi = E * 0.4 + HW * 0.2 + Q * 0.2 + S * 0.2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039; - exam grade: rational number [0, 10] = sum of the grade for the oral and written parts, out of 5 each&lt;br /&gt;
* &#039;&#039;&#039;HW&#039;&#039;&#039; - homework grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;Q&#039;&#039;&#039; - lecture quizzes grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039; - seminar practice grade: rational number [0, 10]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;rounding&#039;&#039;&#039;: each element in the formulae is rounded up&lt;br /&gt;
&lt;br /&gt;
== Plagiarism policy ==&lt;br /&gt;
&lt;br /&gt;
If plagiarism is detected, the assessment element will be assigned a score of &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the student is suspected of preparing the task not on his own, the teacher has the right to initiate additional verification or defense of this particular assessment element. Then such an assessment element will be graded based on the additional verification or the defense.&lt;br /&gt;
&lt;br /&gt;
= Home assignments =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Contest !! Deadline !! Topic&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Lectures = &lt;br /&gt;
Lectures are held on Saturdays from 14:40 till 17:40.&lt;br /&gt;
&lt;br /&gt;
== Lecture Materials ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 6&#039;&#039;&#039;&lt;br /&gt;
* Introduction to the course&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort&lt;br /&gt;
* Lower bounds of sorting&lt;br /&gt;
* Counting sort&lt;br /&gt;
* Radix sort&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 2, 3, 8&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 13&#039;&#039;&#039;&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, basic operations (insert, delete, rotate, find min/max)&lt;br /&gt;
* AVL-trees, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 12, Knuth, vol. 3, ch. 6.2.3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 27&#039;&#039;&#039;&lt;br /&gt;
* Red-black trees, basic operations&lt;br /&gt;
* Treaps, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 13&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 4&#039;&#039;&#039;&lt;br /&gt;
* Treaps, how to insert and to remove items using split and merge&lt;br /&gt;
* Treaps with implicit keys&lt;br /&gt;
* Tries, compact tries, basic operations&lt;br /&gt;
* 2-3-4 trees, basic operations: search, insert&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 11&#039;&#039;&#039;&lt;br /&gt;
* Quiz #1&lt;br /&gt;
* 2-3-4 trees, basic operations: delete&lt;br /&gt;
* B-trees, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 18&#039;&#039;&#039;&lt;br /&gt;
* Hash tables, collisions, collision resolution by chaining, open addressing&lt;br /&gt;
* PATRICIA trie, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 25&#039;&#039;&#039;&lt;br /&gt;
* Exam in module 1&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 8&#039;&#039;&#039;&lt;br /&gt;
* Exact string matching, naive algorithm, the preprocessing approach, Z-algorithm, the simplest linear-time algorithm&lt;br /&gt;
* The Knuth-Morris-Pratt algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 1, 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 1==&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Lower bounds of sorting using comparisons&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, heap sort, counting sort, radix sort&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, basic operations (insert, delete, rotate, find min/max)&lt;br /&gt;
* AVL-trees, basic operations&lt;br /&gt;
* Red-black trees, basic operations&lt;br /&gt;
* Treaps, basic operations&lt;br /&gt;
* Treaps with implicit keys&lt;br /&gt;
* Tries, compact tries, basic operations&lt;br /&gt;
* 2-3-4 trees, basic operations&lt;br /&gt;
* B-trees, basic operations&lt;br /&gt;
* Hash tables, collisions, collision resolution by chaining, open addressing&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 3==&lt;/div&gt;</summary>
		<author><name>Nkmakarov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=93511</id>
		<title>Algorithms and Data Structures DSBA 2025/2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=93511"/>
		<updated>2025-11-09T20:50:53Z</updated>

		<summary type="html">&lt;p&gt;Nkmakarov: Update list of lectures&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
This page contains basic information for the course Algorithms and Data Structures in 2024/2025 academic year at Bachelor’s Programme in &#039;&#039;&#039;Data Science and Business Analytics&#039;&#039;&#039; (DSBA).&lt;br /&gt;
&lt;br /&gt;
The full syllabus can be accessed at [https://www.hse.ru/ba/data/courses/1071074261.html this page]. &lt;br /&gt;
&lt;br /&gt;
= Teachers and assistants = &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Group !! 241 !! 242 !! 243 !! 244 !! 245 !! 246&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://www.hse.ru/org/persons/528651897 Nikita Makarov]&lt;br /&gt;
|-&lt;br /&gt;
| Seminar Instructor&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | [https://www.hse.ru/org/persons/191485259 Vladimir Kurenkov]&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | [https://t.me/seemur Simon Kondakov]&lt;br /&gt;
|-&lt;br /&gt;
| Teaching Assistant&lt;br /&gt;
| tg: [https://t.me/leon1dl @leon1dl]&lt;br /&gt;
| tg: [https://t.me/Mellodizzz @Mellodizzz]&lt;br /&gt;
| tg: [https://t.me/yksee @yksee]&lt;br /&gt;
| tg: [https://t.me/polina_gur @polina_gur]&lt;br /&gt;
| tg: [https://t.me/d_poly @d_poly]&lt;br /&gt;
| tg: [https://t.me/rina_mlv @rina_mlv]&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer Assistant&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://t.me/svbudygin @svbudygin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
You may find [https://docs.google.com/spreadsheets/d/1Qh4uXaAZy-nX-dYlA_CtAo4zoWhvwC1ekL4p5-8As0A/edit?gid=1121952238#gid=1121952238 your grades].&lt;br /&gt;
&lt;br /&gt;
== Formula ==&lt;br /&gt;
&#039;&#039;&#039;Final Grade = M1 * 0.4 + M3 * 0.6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mi = E * 0.4 + HW * 0.2 + Q * 0.2 + S * 0.2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039; - exam grade: rational number [0, 10] = sum of the grade for the oral and written parts, out of 5 each&lt;br /&gt;
* &#039;&#039;&#039;HW&#039;&#039;&#039; - homework grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;Q&#039;&#039;&#039; - lecture quizzes grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039; - seminar practice grade: rational number [0, 10]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;rounding&#039;&#039;&#039;: each element in the formulae is rounded up&lt;br /&gt;
&lt;br /&gt;
== Plagiarism policy ==&lt;br /&gt;
&lt;br /&gt;
If plagiarism is detected, the assessment element will be assigned a score of &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the student is suspected of preparing the task not on his own, the teacher has the right to initiate additional verification or defense of this particular assessment element. Then such an assessment element will be graded based on the additional verification or the defense.&lt;br /&gt;
&lt;br /&gt;
= Home assignments =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Contest !! Deadline !! Topic&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Lectures = &lt;br /&gt;
Lectures are held on Saturdays from 14:40 till 17:40.&lt;br /&gt;
&lt;br /&gt;
== Lecture Materials ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 6&#039;&#039;&#039;&lt;br /&gt;
* Introduction to the course&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort&lt;br /&gt;
* Lower bounds of sorting&lt;br /&gt;
* Counting sort&lt;br /&gt;
* Radix sort&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 2, 3, 8&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 13&#039;&#039;&#039;&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, basic operations (insert, delete, rotate, find min/max)&lt;br /&gt;
* AVL-trees, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 12, Knuth, vol. 3, ch. 6.2.3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 27&#039;&#039;&#039;&lt;br /&gt;
* Red-black trees, basic operations&lt;br /&gt;
* Treaps, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 13&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 4&#039;&#039;&#039;&lt;br /&gt;
* Treaps, how to insert and to remove items using split and merge&lt;br /&gt;
* Treaps with implicit keys&lt;br /&gt;
* Tries, compact tries, basic operations&lt;br /&gt;
* 2-3-4 trees, basic operations: search, insert&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 11&#039;&#039;&#039;&lt;br /&gt;
* Quiz #1&lt;br /&gt;
* 2-3-4 trees, basic operations: delete&lt;br /&gt;
* B-trees, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 18&#039;&#039;&#039;&lt;br /&gt;
* Hash tables, collisions, collision resolution by chaining, open addressing&lt;br /&gt;
* PATRICIA trie, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 25&#039;&#039;&#039;&lt;br /&gt;
* Exam in module 1&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 8&#039;&#039;&#039;&lt;br /&gt;
* Exact string matching, naive algorithm, the preprocessing approach, the simplest linear-time algorithm&lt;br /&gt;
* The Knuth-Morris-Pratt algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 1, 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 1==&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Lower bounds of sorting using comparisons&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, heap sort, counting sort, radix sort&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, basic operations (insert, delete, rotate, find min/max)&lt;br /&gt;
* AVL-trees, basic operations&lt;br /&gt;
* Red-black trees, basic operations&lt;br /&gt;
* Treaps, basic operations&lt;br /&gt;
* Treaps with implicit keys&lt;br /&gt;
* Tries, compact tries, basic operations&lt;br /&gt;
* 2-3-4 trees, basic operations&lt;br /&gt;
* B-trees, basic operations&lt;br /&gt;
* Hash tables, collisions, collision resolution by chaining, open addressing&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 3==&lt;/div&gt;</summary>
		<author><name>Nkmakarov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=93339</id>
		<title>Algorithms and Data Structures DSBA 2025/2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=93339"/>
		<updated>2025-10-30T12:27:34Z</updated>

		<summary type="html">&lt;p&gt;Nkmakarov: Update list of lectures&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
This page contains basic information for the course Algorithms and Data Structures in 2024/2025 academic year at Bachelor’s Programme in &#039;&#039;&#039;Data Science and Business Analytics&#039;&#039;&#039; (DSBA).&lt;br /&gt;
&lt;br /&gt;
The full syllabus can be accessed at [https://www.hse.ru/ba/data/courses/1071074261.html this page]. &lt;br /&gt;
&lt;br /&gt;
= Teachers and assistants = &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Group !! 241 !! 242 !! 243 !! 244 !! 245 !! 246&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://www.hse.ru/org/persons/528651897 Nikita Makarov]&lt;br /&gt;
|-&lt;br /&gt;
| Seminar Instructor&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | [https://www.hse.ru/org/persons/191485259 Vladimir Kurenkov]&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | [https://t.me/seemur Simon Kondakov]&lt;br /&gt;
|-&lt;br /&gt;
| Teaching Assistant&lt;br /&gt;
| tg: [https://t.me/leon1dl @leon1dl]&lt;br /&gt;
| tg: [https://t.me/Mellodizzz @Mellodizzz]&lt;br /&gt;
| tg: [https://t.me/yksee @yksee]&lt;br /&gt;
| tg: [https://t.me/polina_gur @polina_gur]&lt;br /&gt;
| tg: [https://t.me/d_poly @d_poly]&lt;br /&gt;
| tg: [https://t.me/rina_mlv @rina_mlv]&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer Assistant&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://t.me/svbudygin @svbudygin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
You may find [https://docs.google.com/spreadsheets/d/1Qh4uXaAZy-nX-dYlA_CtAo4zoWhvwC1ekL4p5-8As0A/edit?gid=1121952238#gid=1121952238 your grades].&lt;br /&gt;
&lt;br /&gt;
== Formula ==&lt;br /&gt;
&#039;&#039;&#039;Final Grade = M1 * 0.4 + M3 * 0.6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mi = E * 0.4 + HW * 0.2 + Q * 0.2 + S * 0.2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039; - exam grade: rational number [0, 10] = sum of the grade for the oral and written parts, out of 5 each&lt;br /&gt;
* &#039;&#039;&#039;HW&#039;&#039;&#039; - homework grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;Q&#039;&#039;&#039; - lecture quizzes grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039; - seminar practice grade: rational number [0, 10]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;rounding&#039;&#039;&#039;: each element in the formulae is rounded up&lt;br /&gt;
&lt;br /&gt;
== Plagiarism policy ==&lt;br /&gt;
&lt;br /&gt;
If plagiarism is detected, the assessment element will be assigned a score of &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the student is suspected of preparing the task not on his own, the teacher has the right to initiate additional verification or defense of this particular assessment element. Then such an assessment element will be graded based on the additional verification or the defense.&lt;br /&gt;
&lt;br /&gt;
= Home assignments =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Contest !! Deadline !! Topic&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Lectures = &lt;br /&gt;
Lectures are held on Saturdays from 14:40 till 17:40.&lt;br /&gt;
&lt;br /&gt;
== Lecture Materials ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 6&#039;&#039;&#039;&lt;br /&gt;
* Introduction to the course&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort&lt;br /&gt;
* Lower bounds of sorting&lt;br /&gt;
* Counting sort&lt;br /&gt;
* Radix sort&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 2, 3, 8&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 13&#039;&#039;&#039;&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, basic operations (insert, delete, rotate, find min/max)&lt;br /&gt;
* AVL-trees, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 12, Knuth, vol. 3, ch. 6.2.3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 27&#039;&#039;&#039;&lt;br /&gt;
* Red-black trees, basic operations&lt;br /&gt;
* Treaps, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 13&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 4&#039;&#039;&#039;&lt;br /&gt;
* Treaps, how to insert and to remove items using split and merge&lt;br /&gt;
* Treaps with implicit keys&lt;br /&gt;
* Tries, compact tries, basic operations&lt;br /&gt;
* 2-3-4 trees, basic operations: search, insert&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 11&#039;&#039;&#039;&lt;br /&gt;
* Quiz #1&lt;br /&gt;
* 2-3-4 trees, basic operations: delete&lt;br /&gt;
* B-trees, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 18&#039;&#039;&#039;&lt;br /&gt;
* Hash tables, collisions, collision resolution by chaining, open addressing&lt;br /&gt;
* PATRICIA trie, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 25&#039;&#039;&#039;&lt;br /&gt;
* Exam in module 1&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 1==&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Lower bounds of sorting using comparisons&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, heap sort, counting sort, radix sort&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, basic operations (insert, delete, rotate, find min/max)&lt;br /&gt;
* AVL-trees, basic operations&lt;br /&gt;
* Red-black trees, basic operations&lt;br /&gt;
* Treaps, basic operations&lt;br /&gt;
* Treaps with implicit keys&lt;br /&gt;
* Tries, compact tries, basic operations&lt;br /&gt;
* 2-3-4 trees, basic operations&lt;br /&gt;
* B-trees, basic operations&lt;br /&gt;
* Hash tables, collisions, collision resolution by chaining, open addressing&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 3==&lt;/div&gt;</summary>
		<author><name>Nkmakarov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=93167</id>
		<title>Algorithms and Data Structures DSBA 2025/2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=93167"/>
		<updated>2025-10-18T17:47:20Z</updated>

		<summary type="html">&lt;p&gt;Nkmakarov: Update list of topics for the first module exam&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
This page contains basic information for the course Algorithms and Data Structures in 2024/2025 academic year at Bachelor’s Programme in &#039;&#039;&#039;Data Science and Business Analytics&#039;&#039;&#039; (DSBA).&lt;br /&gt;
&lt;br /&gt;
The full syllabus can be accessed at [https://www.hse.ru/ba/data/courses/1071074261.html this page]. &lt;br /&gt;
&lt;br /&gt;
= Teachers and assistants = &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Group !! 241 !! 242 !! 243 !! 244 !! 245 !! 246&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://www.hse.ru/org/persons/528651897 Nikita Makarov]&lt;br /&gt;
|-&lt;br /&gt;
| Seminar Instructor&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | [https://www.hse.ru/org/persons/191485259 Vladimir Kurenkov]&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | [https://t.me/seemur Simon Kondakov]&lt;br /&gt;
|-&lt;br /&gt;
| Teaching Assistant&lt;br /&gt;
| tg: [https://t.me/leon1dl @leon1dl]&lt;br /&gt;
| tg: [https://t.me/Mellodizzz @Mellodizzz]&lt;br /&gt;
| tg: [https://t.me/yksee @yksee]&lt;br /&gt;
| tg: [https://t.me/polina_gur @polina_gur]&lt;br /&gt;
| tg: [https://t.me/meomato @meomato]&lt;br /&gt;
| tg: [https://t.me/rina_mlv @rina_mlv]&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer Assistant&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://t.me/svbudygin @svbudygin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
You may find [https://docs.google.com/spreadsheets/d/1Qh4uXaAZy-nX-dYlA_CtAo4zoWhvwC1ekL4p5-8As0A/edit?gid=1121952238#gid=1121952238 your grades].&lt;br /&gt;
&lt;br /&gt;
== Formula ==&lt;br /&gt;
&#039;&#039;&#039;Final Grade = M1 * 0.4 + M3 * 0.6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mi = E * 0.4 + HW * 0.2 + Q * 0.2 + S * 0.2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039; - exam grade: rational number [0, 10] = sum of the grade for the oral and written parts, out of 5 each&lt;br /&gt;
* &#039;&#039;&#039;HW&#039;&#039;&#039; - homework grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;Q&#039;&#039;&#039; - lecture quizzes grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039; - seminar practice grade: rational number [0, 10]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;rounding&#039;&#039;&#039;: each element in the formulae is rounded up&lt;br /&gt;
&lt;br /&gt;
== Plagiarism policy ==&lt;br /&gt;
&lt;br /&gt;
If plagiarism is detected, the assessment element will be assigned a score of &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the student is suspected of preparing the task not on his own, the teacher has the right to initiate additional verification or defense of this particular assessment element. Then such an assessment element will be graded based on the additional verification or the defense.&lt;br /&gt;
&lt;br /&gt;
= Home assignments =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Contest !! Deadline !! Topic&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Lectures = &lt;br /&gt;
Lectures are held on Saturdays from 14:40 till 17:40.&lt;br /&gt;
&lt;br /&gt;
== Lecture Materials ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 6&#039;&#039;&#039;&lt;br /&gt;
* Introduction to the course&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort&lt;br /&gt;
* Lower bounds of sorting&lt;br /&gt;
* Counting sort&lt;br /&gt;
* Radix sort&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 2, 3, 8&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 13&#039;&#039;&#039;&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, basic operations (insert, delete, rotate, find min/max)&lt;br /&gt;
* AVL-trees, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 12, Knuth, vol. 3, ch. 6.2.3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 27&#039;&#039;&#039;&lt;br /&gt;
* Red-black trees, basic operations&lt;br /&gt;
* Treaps, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 13&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 4&#039;&#039;&#039;&lt;br /&gt;
* Treaps, how to insert and to remove items using split and merge&lt;br /&gt;
* Treaps with implicit keys&lt;br /&gt;
* Tries, compact tries, basic operations&lt;br /&gt;
* 2-3-4 trees, basic operations: search, insert&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 11&#039;&#039;&#039;&lt;br /&gt;
* Quiz #1&lt;br /&gt;
* 2-3-4 trees, basic operations: delete&lt;br /&gt;
* B-trees, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 18&#039;&#039;&#039;&lt;br /&gt;
* Hash tables, collisions, collision resolution by chaining, open addressing&lt;br /&gt;
* PATRICIA trie, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 1==&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Lower bounds of sorting using comparisons&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, heap sort, counting sort, radix sort&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, basic operations (insert, delete, rotate, find min/max)&lt;br /&gt;
* AVL-trees, basic operations&lt;br /&gt;
* Red-black trees, basic operations&lt;br /&gt;
* Treaps, basic operations&lt;br /&gt;
* Treaps with implicit keys&lt;br /&gt;
* Tries, compact tries, basic operations&lt;br /&gt;
* 2-3-4 trees, basic operations&lt;br /&gt;
* B-trees, basic operations&lt;br /&gt;
* Hash tables, collisions, collision resolution by chaining, open addressing&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 3==&lt;/div&gt;</summary>
		<author><name>Nkmakarov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=93166</id>
		<title>Algorithms and Data Structures DSBA 2025/2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=93166"/>
		<updated>2025-10-18T17:43:59Z</updated>

		<summary type="html">&lt;p&gt;Nkmakarov: Update list of lectures&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
This page contains basic information for the course Algorithms and Data Structures in 2024/2025 academic year at Bachelor’s Programme in &#039;&#039;&#039;Data Science and Business Analytics&#039;&#039;&#039; (DSBA).&lt;br /&gt;
&lt;br /&gt;
The full syllabus can be accessed at [https://www.hse.ru/ba/data/courses/1071074261.html this page]. &lt;br /&gt;
&lt;br /&gt;
= Teachers and assistants = &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Group !! 241 !! 242 !! 243 !! 244 !! 245 !! 246&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://www.hse.ru/org/persons/528651897 Nikita Makarov]&lt;br /&gt;
|-&lt;br /&gt;
| Seminar Instructor&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | [https://www.hse.ru/org/persons/191485259 Vladimir Kurenkov]&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | [https://t.me/seemur Simon Kondakov]&lt;br /&gt;
|-&lt;br /&gt;
| Teaching Assistant&lt;br /&gt;
| tg: [https://t.me/leon1dl @leon1dl]&lt;br /&gt;
| tg: [https://t.me/Mellodizzz @Mellodizzz]&lt;br /&gt;
| tg: [https://t.me/yksee @yksee]&lt;br /&gt;
| tg: [https://t.me/polina_gur @polina_gur]&lt;br /&gt;
| tg: [https://t.me/meomato @meomato]&lt;br /&gt;
| tg: [https://t.me/rina_mlv @rina_mlv]&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer Assistant&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://t.me/svbudygin @svbudygin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
You may find [https://docs.google.com/spreadsheets/d/1Qh4uXaAZy-nX-dYlA_CtAo4zoWhvwC1ekL4p5-8As0A/edit?gid=1121952238#gid=1121952238 your grades].&lt;br /&gt;
&lt;br /&gt;
== Formula ==&lt;br /&gt;
&#039;&#039;&#039;Final Grade = M1 * 0.4 + M3 * 0.6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mi = E * 0.4 + HW * 0.2 + Q * 0.2 + S * 0.2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039; - exam grade: rational number [0, 10] = sum of the grade for the oral and written parts, out of 5 each&lt;br /&gt;
* &#039;&#039;&#039;HW&#039;&#039;&#039; - homework grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;Q&#039;&#039;&#039; - lecture quizzes grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039; - seminar practice grade: rational number [0, 10]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;rounding&#039;&#039;&#039;: each element in the formulae is rounded up&lt;br /&gt;
&lt;br /&gt;
== Plagiarism policy ==&lt;br /&gt;
&lt;br /&gt;
If plagiarism is detected, the assessment element will be assigned a score of &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the student is suspected of preparing the task not on his own, the teacher has the right to initiate additional verification or defense of this particular assessment element. Then such an assessment element will be graded based on the additional verification or the defense.&lt;br /&gt;
&lt;br /&gt;
= Home assignments =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Contest !! Deadline !! Topic&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Lectures = &lt;br /&gt;
Lectures are held on Saturdays from 14:40 till 17:40.&lt;br /&gt;
&lt;br /&gt;
== Lecture Materials ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 6&#039;&#039;&#039;&lt;br /&gt;
* Introduction to the course&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort&lt;br /&gt;
* Lower bounds of sorting&lt;br /&gt;
* Counting sort&lt;br /&gt;
* Radix sort&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 2, 3, 8&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 13&#039;&#039;&#039;&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, basic operations (insert, delete, rotate, find min/max)&lt;br /&gt;
* AVL-trees, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 12, Knuth, vol. 3, ch. 6.2.3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 27&#039;&#039;&#039;&lt;br /&gt;
* Red-black trees, basic operations&lt;br /&gt;
* Treaps, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 13&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 4&#039;&#039;&#039;&lt;br /&gt;
* Treaps, how to insert and to remove items using split and merge&lt;br /&gt;
* Treaps with implicit keys&lt;br /&gt;
* Tries, compact tries, basic operations&lt;br /&gt;
* 2-3-4 trees, basic operations: search, insert&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 11&#039;&#039;&#039;&lt;br /&gt;
* Quiz #1&lt;br /&gt;
* 2-3-4 trees, basic operations: delete&lt;br /&gt;
* B-trees, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 18&#039;&#039;&#039;&lt;br /&gt;
* Hash tables, collisions, collision resolution by chaining, open addressing&lt;br /&gt;
* PATRICIA trie, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 1==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 3==&lt;/div&gt;</summary>
		<author><name>Nkmakarov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=93016</id>
		<title>Algorithms and Data Structures DSBA 2025/2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=93016"/>
		<updated>2025-10-11T18:51:05Z</updated>

		<summary type="html">&lt;p&gt;Nkmakarov: Update list of lectures&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
This page contains basic information for the course Algorithms and Data Structures in 2024/2025 academic year at Bachelor’s Programme in &#039;&#039;&#039;Data Science and Business Analytics&#039;&#039;&#039; (DSBA).&lt;br /&gt;
&lt;br /&gt;
The full syllabus can be accessed at [https://www.hse.ru/ba/data/courses/1071074261.html this page]. &lt;br /&gt;
&lt;br /&gt;
= Teachers and assistants = &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Group !! 241 !! 242 !! 243 !! 244 !! 245 !! 246&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://www.hse.ru/org/persons/528651897 Nikita Makarov]&lt;br /&gt;
|-&lt;br /&gt;
| Seminar Instructor&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | [https://www.hse.ru/org/persons/191485259 Vladimir Kurenkov]&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | [https://t.me/seemur Simon Kondakov]&lt;br /&gt;
|-&lt;br /&gt;
| Teaching Assistant&lt;br /&gt;
| tg: [https://t.me/leon1dl @leon1dl]&lt;br /&gt;
| tg: [https://t.me/Mellodizzz @Mellodizzz]&lt;br /&gt;
| tg: [https://t.me/yksee @yksee]&lt;br /&gt;
| tg: [https://t.me/polina_gur @polina_gur]&lt;br /&gt;
| tg: [https://t.me/meomato @meomato]&lt;br /&gt;
| tg: [https://t.me/rina_mlv @rina_mlv]&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer Assistant&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://t.me/svbudygin @svbudygin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
You may find [https://docs.google.com/spreadsheets/d/1Qh4uXaAZy-nX-dYlA_CtAo4zoWhvwC1ekL4p5-8As0A/edit?gid=1121952238#gid=1121952238 your grades].&lt;br /&gt;
&lt;br /&gt;
== Formula ==&lt;br /&gt;
&#039;&#039;&#039;Final Grade = M1 * 0.4 + M3 * 0.6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mi = E * 0.4 + HW * 0.2 + Q * 0.2 + S * 0.2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039; - exam grade: rational number [0, 10] = sum of the grade for the oral and written parts, out of 5 each&lt;br /&gt;
* &#039;&#039;&#039;HW&#039;&#039;&#039; - homework grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;Q&#039;&#039;&#039; - lecture quizzes grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039; - seminar practice grade: rational number [0, 10]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;rounding&#039;&#039;&#039;: each element in the formulae is rounded up&lt;br /&gt;
&lt;br /&gt;
== Plagiarism policy ==&lt;br /&gt;
&lt;br /&gt;
If plagiarism is detected, the assessment element will be assigned a score of &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the student is suspected of preparing the task not on his own, the teacher has the right to initiate additional verification or defense of this particular assessment element. Then such an assessment element will be graded based on the additional verification or the defense.&lt;br /&gt;
&lt;br /&gt;
= Home assignments =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Contest !! Deadline !! Topic&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Lectures = &lt;br /&gt;
Lectures are held on Saturdays from 14:40 till 17:40.&lt;br /&gt;
&lt;br /&gt;
== Lecture Materials ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 6&#039;&#039;&#039;&lt;br /&gt;
* Introduction to the course&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort&lt;br /&gt;
* Lower bounds of sorting&lt;br /&gt;
* Counting sort&lt;br /&gt;
* Radix sort&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 2, 3, 8&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 13&#039;&#039;&#039;&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, basic operations (insert, delete, rotate, find min/max)&lt;br /&gt;
* AVL-trees, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 12, Knuth, vol. 3, ch. 6.2.3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 27&#039;&#039;&#039;&lt;br /&gt;
* Red-black trees, basic operations&lt;br /&gt;
* Treaps, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 13&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 4&#039;&#039;&#039;&lt;br /&gt;
* Treaps, how to insert and to remove items using split and merge&lt;br /&gt;
* Treaps with implicit keys&lt;br /&gt;
* Tries, compact tries, basic operations&lt;br /&gt;
* 2-3-4 trees, basic operations: search, insert&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 11&#039;&#039;&#039;&lt;br /&gt;
* Quiz #1&lt;br /&gt;
* 2-3-4 trees, basic operations: delete&lt;br /&gt;
* B-trees, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 1==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 3==&lt;/div&gt;</summary>
		<author><name>Nkmakarov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=92906</id>
		<title>Algorithms and Data Structures DSBA 2025/2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=92906"/>
		<updated>2025-10-07T11:02:08Z</updated>

		<summary type="html">&lt;p&gt;Nkmakarov: Update list of lectures&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
This page contains basic information for the course Algorithms and Data Structures in 2024/2025 academic year at Bachelor’s Programme in &#039;&#039;&#039;Data Science and Business Analytics&#039;&#039;&#039; (DSBA).&lt;br /&gt;
&lt;br /&gt;
The full syllabus can be accessed at [https://www.hse.ru/ba/data/courses/1071074261.html this page]. &lt;br /&gt;
&lt;br /&gt;
= Teachers and assistants = &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Group !! 241 !! 242 !! 243 !! 244 !! 245 !! 246&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://www.hse.ru/org/persons/528651897 Nikita Makarov]&lt;br /&gt;
|-&lt;br /&gt;
| Seminar Instructor&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | [https://www.hse.ru/org/persons/191485259 Vladimir Kurenkov]&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | [https://t.me/seemur Simon Kondakov]&lt;br /&gt;
|-&lt;br /&gt;
| Teaching Assistant&lt;br /&gt;
| tg: [https://t.me/leon1dl @leon1dl]&lt;br /&gt;
| tg: [https://t.me/Mellodizzz @Mellodizzz]&lt;br /&gt;
| tg: [https://t.me/yksee @yksee]&lt;br /&gt;
| tg: [https://t.me/polina_gur @polina_gur]&lt;br /&gt;
| tg: [https://t.me/meomato @meomato]&lt;br /&gt;
| tg: [https://t.me/rina_mlv @rina_mlv]&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer Assistant&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://t.me/svbudygin @svbudygin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
You may find [https://docs.google.com/spreadsheets/d/1Qh4uXaAZy-nX-dYlA_CtAo4zoWhvwC1ekL4p5-8As0A/edit?gid=1121952238#gid=1121952238 your grades].&lt;br /&gt;
&lt;br /&gt;
== Formula ==&lt;br /&gt;
&#039;&#039;&#039;Final Grade = M1 * 0.4 + M3 * 0.6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mi = E * 0.4 + HW * 0.2 + Q * 0.2 + S * 0.2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039; - exam grade: rational number [0, 10] = sum of the grade for the oral and written parts, out of 5 each&lt;br /&gt;
* &#039;&#039;&#039;HW&#039;&#039;&#039; - homework grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;Q&#039;&#039;&#039; - lecture quizzes grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039; - seminar practice grade: rational number [0, 10]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;rounding&#039;&#039;&#039;: each element in the formulae is rounded up&lt;br /&gt;
&lt;br /&gt;
== Plagiarism policy ==&lt;br /&gt;
&lt;br /&gt;
If plagiarism is detected, the assessment element will be assigned a score of &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the student is suspected of preparing the task not on his own, the teacher has the right to initiate additional verification or defense of this particular assessment element. Then such an assessment element will be graded based on the additional verification or the defense.&lt;br /&gt;
&lt;br /&gt;
= Home assignments =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Contest !! Deadline !! Topic&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Lectures = &lt;br /&gt;
Lectures are held on Saturdays from 14:40 till 17:40.&lt;br /&gt;
&lt;br /&gt;
== Lecture Materials ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 6&#039;&#039;&#039;&lt;br /&gt;
* Introduction to the course&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort&lt;br /&gt;
* Lower bounds of sorting&lt;br /&gt;
* Counting sort&lt;br /&gt;
* Radix sort&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 2, 3, 8&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 13&#039;&#039;&#039;&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, basic operations (insert, delete, rotate, find min/max)&lt;br /&gt;
* AVL-trees, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 12, Knuth, vol. 3, ch. 6.2.3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 27&#039;&#039;&#039;&lt;br /&gt;
* Red-black trees, basic operations&lt;br /&gt;
* Treaps, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 13&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 4&#039;&#039;&#039;&lt;br /&gt;
* Treaps, how to insert and to remove items using split and merge&lt;br /&gt;
* Treaps with implicit keys&lt;br /&gt;
* Tries, compact tries, basic operations&lt;br /&gt;
* 2-3-4 trees, basic operations: search, insert&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 11 (preliminarily)&#039;&#039;&#039;&lt;br /&gt;
* Quiz #1&lt;br /&gt;
* 2-3-4 trees, basic operations: delete&lt;br /&gt;
* B-trees, basic operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 1==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 3==&lt;/div&gt;</summary>
		<author><name>Nkmakarov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=92628</id>
		<title>Algorithms and Data Structures DSBA 2025/2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=92628"/>
		<updated>2025-09-27T18:35:42Z</updated>

		<summary type="html">&lt;p&gt;Nkmakarov: Update list of lectures&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
This page contains basic information for the course Algorithms and Data Structures in 2024/2025 academic year at Bachelor’s Programme in &#039;&#039;&#039;Data Science and Business Analytics&#039;&#039;&#039; (DSBA).&lt;br /&gt;
&lt;br /&gt;
The full syllabus can be accessed at [https://www.hse.ru/ba/data/courses/1071074261.html this page]. &lt;br /&gt;
&lt;br /&gt;
= Teachers and assistants = &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Group !! 241 !! 242 !! 243 !! 244 !! 245 !! 246&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://www.hse.ru/org/persons/528651897 Nikita Makarov]&lt;br /&gt;
|-&lt;br /&gt;
| Seminar Instructor&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | [https://www.hse.ru/org/persons/191485259 Vladimir Kurenkov]&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | [https://t.me/seemur Simon Kondakov]&lt;br /&gt;
|-&lt;br /&gt;
| Teaching Assistant&lt;br /&gt;
| tg: [https://t.me/leon1dl @leon1dl]&lt;br /&gt;
| tg: [https://t.me/Mellodizzz @Mellodizzz]&lt;br /&gt;
| tg: [https://t.me/yksee @yksee]&lt;br /&gt;
| tg: [https://t.me/polina_gur @polina_gur]&lt;br /&gt;
| tg: [https://t.me/meomato @meomato]&lt;br /&gt;
| tg: [https://t.me/rina_mlv @rina_mlv]&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer Assistant&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://t.me/svbudygin @svbudygin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
You may find [https://docs.google.com/spreadsheets/d/1Qh4uXaAZy-nX-dYlA_CtAo4zoWhvwC1ekL4p5-8As0A/edit?gid=1121952238#gid=1121952238 your grades].&lt;br /&gt;
&lt;br /&gt;
== Formula ==&lt;br /&gt;
&#039;&#039;&#039;Final Grade = M1 * 0.4 + M3 * 0.6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mi = E * 0.4 + HW * 0.2 + Q * 0.2 + S * 0.2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039; - exam grade: rational number [0, 10] = sum of the grade for the oral and written parts, out of 5 each&lt;br /&gt;
* &#039;&#039;&#039;HW&#039;&#039;&#039; - homework grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;Q&#039;&#039;&#039; - lecture quizzes grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039; - seminar practice grade: rational number [0, 10]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;rounding&#039;&#039;&#039;: each element in the formulae is rounded up&lt;br /&gt;
&lt;br /&gt;
== Plagiarism policy ==&lt;br /&gt;
&lt;br /&gt;
If plagiarism is detected, the assessment element will be assigned a score of &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the student is suspected of preparing the task not on his own, the teacher has the right to initiate additional verification or defense of this particular assessment element. Then such an assessment element will be graded based on the additional verification or the defense.&lt;br /&gt;
&lt;br /&gt;
= Home assignments =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Contest !! Deadline !! Topic&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Lectures = &lt;br /&gt;
Lectures are held on Saturdays from 14:40 till 17:40.&lt;br /&gt;
&lt;br /&gt;
== Lecture Materials ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 6&#039;&#039;&#039;&lt;br /&gt;
* Introduction to the course&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort&lt;br /&gt;
* Lower bounds of sorting&lt;br /&gt;
* Counting sort&lt;br /&gt;
* Radix sort&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 2, 3, 8&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 13&#039;&#039;&#039;&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, main operations (insert, delete, rotate, find min/max)&lt;br /&gt;
* AVL-trees, main operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 12, Knuth, vol. 3, ch. 6.2.3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 27&#039;&#039;&#039;&lt;br /&gt;
* Red-black trees, main operations&lt;br /&gt;
* Treaps, main operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 13&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 4 (preliminarily)&#039;&#039;&#039;&lt;br /&gt;
* Treaps with implicit keys&lt;br /&gt;
* Tries, compact tries, PATRICIA trie&lt;br /&gt;
* 2-3-4 trees&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 1==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 3==&lt;/div&gt;</summary>
		<author><name>Nkmakarov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=92340</id>
		<title>Algorithms and Data Structures DSBA 2025/2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=92340"/>
		<updated>2025-09-15T17:54:18Z</updated>

		<summary type="html">&lt;p&gt;Nkmakarov: Update list of lectures&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
This page contains basic information for the course Algorithms and Data Structures in 2024/2025 academic year at Bachelor’s Programme in &#039;&#039;&#039;Data Science and Business Analytics&#039;&#039;&#039; (DSBA).&lt;br /&gt;
&lt;br /&gt;
The full syllabus can be accessed at [https://www.hse.ru/ba/data/courses/912653105.html this page]. &lt;br /&gt;
&lt;br /&gt;
= Teachers and assistants = &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Group !! 241 !! 242 !! 243 !! 244 !! 245 !! 246&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://www.hse.ru/org/persons/528651897 Nikita Makarov]&lt;br /&gt;
|-&lt;br /&gt;
| Seminar Instructor&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | [https://www.hse.ru/org/persons/191485259 Vladimir Kurenkov]&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | [https://t.me/seemur Simon Kondakov]&lt;br /&gt;
|-&lt;br /&gt;
| Teaching Assistant&lt;br /&gt;
| tg: [https://t.me/leon1dl @leon1dl]&lt;br /&gt;
| tg: [https://t.me/Mellodizzz @Mellodizzz]&lt;br /&gt;
| tg: [https://t.me/yksee @yksee]&lt;br /&gt;
| tg: [https://t.me/polina_gur @polina_gur]&lt;br /&gt;
| tg: [https://t.me/meomato @meomato]&lt;br /&gt;
| tg: [https://t.me/rina_mlv @rina_mlv]&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer Assistant&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://t.me/svbudygin @svbudygin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
You may find your grades [https://docs.google.com/ here].&lt;br /&gt;
&lt;br /&gt;
== Formula ==&lt;br /&gt;
&#039;&#039;&#039;Final Grade = M1 * 0.4 + M3 * 0.6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mi = E * 0.4 + HW * 0.2 + Q * 0.2 + S * 0.2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039; - exam grade: rational number [0, 10] = sum of the grade for the oral and written parts, out of 5 each&lt;br /&gt;
* &#039;&#039;&#039;HW&#039;&#039;&#039; - homework grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;Q&#039;&#039;&#039; - lecture quizzes grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039; - seminar practice grade: rational number [0, 10]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;rounding&#039;&#039;&#039;: each element in the formulae is rounded up&lt;br /&gt;
&lt;br /&gt;
== Plagiarism policy ==&lt;br /&gt;
&lt;br /&gt;
If plagiarism is detected, the assessment element will be assigned a score of &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the student is suspected of preparing the task not on his own, the teacher has the right to initiate additional verification or defense of this particular assessment element. Then such an assessment element will be graded based on the additional verification or the defense.&lt;br /&gt;
&lt;br /&gt;
= Home assignments =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Contest !! Deadline !! Topic&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Lectures = &lt;br /&gt;
Lectures are held on Saturdays from 14:40 till 17:40.&lt;br /&gt;
&lt;br /&gt;
== Lecture Materials ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 6&#039;&#039;&#039;&lt;br /&gt;
* Introduction to the course&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort&lt;br /&gt;
* Lower bounds of sorting&lt;br /&gt;
* Counting sort&lt;br /&gt;
* Radix sort&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 2, 3, 8&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 13&#039;&#039;&#039;&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, main operations (insert, delete, rotate, find min/max)&lt;br /&gt;
* AVL-trees, main operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 12, Knuth, vol. 3, ch. 6.2.3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 27 (preliminarily)&#039;&#039;&#039;&lt;br /&gt;
* Red-black trees, main operations&lt;br /&gt;
* Treaps, main operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 13&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 1==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 3==&lt;/div&gt;</summary>
		<author><name>Nkmakarov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=92339</id>
		<title>Algorithms and Data Structures DSBA 2025/2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2025/2026&amp;diff=92339"/>
		<updated>2025-09-15T17:52:12Z</updated>

		<summary type="html">&lt;p&gt;Nkmakarov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
This page contains basic information for the course Algorithms and Data Structures in 2024/2025 academic year at Bachelor’s Programme in &#039;&#039;&#039;Data Science and Business Analytics&#039;&#039;&#039; (DSBA).&lt;br /&gt;
&lt;br /&gt;
The full syllabus can be accessed at [https://www.hse.ru/ba/data/courses/912653105.html this page]. &lt;br /&gt;
&lt;br /&gt;
= Teachers and assistants = &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Group !! 241 !! 242 !! 243 !! 244 !! 245 !! 246&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://www.hse.ru/org/persons/528651897 Nikita Makarov]&lt;br /&gt;
|-&lt;br /&gt;
| Seminar Instructor&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | [https://www.hse.ru/org/persons/191485259 Vladimir Kurenkov]&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | [https://t.me/seemur Simon Kondakov]&lt;br /&gt;
|-&lt;br /&gt;
| Teaching Assistant&lt;br /&gt;
| tg: [https://t.me/leon1dl @leon1dl]&lt;br /&gt;
| tg: [https://t.me/Mellodizzz @Mellodizzz]&lt;br /&gt;
| tg: [https://t.me/yksee @yksee]&lt;br /&gt;
| tg: [https://t.me/polina_gur @polina_gur]&lt;br /&gt;
| tg: [https://t.me/meomato @meomato]&lt;br /&gt;
| tg: [https://t.me/rina_mlv @rina_mlv]&lt;br /&gt;
|-&lt;br /&gt;
| Lecturer Assistant&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | [https://t.me/svbudygin @svbudygin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
You may find your grades [https://docs.google.com/ here].&lt;br /&gt;
&lt;br /&gt;
== Formula ==&lt;br /&gt;
&#039;&#039;&#039;Final Grade = M1 * 0.4 + M3 * 0.6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mi = E * 0.4 + HW * 0.2 + Q * 0.2 + S * 0.2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039; - exam grade: rational number [0, 10] = sum of the grade for the oral and written parts, out of 5 each&lt;br /&gt;
* &#039;&#039;&#039;HW&#039;&#039;&#039; - homework grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;Q&#039;&#039;&#039; - lecture quizzes grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039; - seminar practice grade: rational number [0, 10]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;rounding&#039;&#039;&#039;: each element in the formulae is rounded up&lt;br /&gt;
&lt;br /&gt;
== Plagiarism policy ==&lt;br /&gt;
&lt;br /&gt;
If plagiarism is detected, the assessment element will be assigned a score of &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the student is suspected of preparing the task not on his own, the teacher has the right to initiate additional verification or defense of this particular assessment element. Then such an assessment element will be graded based on the additional verification or the defense.&lt;br /&gt;
&lt;br /&gt;
= Home assignments =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Contest !! Deadline !! Topic&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Lectures = &lt;br /&gt;
Lectures are held on Saturdays from 14:40 till 17:40.&lt;br /&gt;
&lt;br /&gt;
== Lecture Materials ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 6&#039;&#039;&#039;&lt;br /&gt;
* Introduction to the course&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort&lt;br /&gt;
* Lower bounds of sorting&lt;br /&gt;
* Counting sort&lt;br /&gt;
* Radix sort&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 2, 3, 8&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 13&#039;&#039;&#039;&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, main operations (insert, delete, rotate, find min/max)&lt;br /&gt;
* AVL-trees, main operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 12&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 27 (preliminarily)&#039;&#039;&#039;&lt;br /&gt;
* Red-black trees, main operations&lt;br /&gt;
* Treaps, main operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 13&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 1==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 3==&lt;/div&gt;</summary>
		<author><name>Nkmakarov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2024/25&amp;diff=91179</id>
		<title>Algorithms and Data Structures DSBA 2024/25</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2024/25&amp;diff=91179"/>
		<updated>2025-06-14T17:55:13Z</updated>

		<summary type="html">&lt;p&gt;Nkmakarov: Fix misprint&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
This page contains basic information for the course Algorithms and Data Structures in 2024/2025 academic year at Bachelor’s Programme in &#039;&#039;&#039;Data Science and Business Analytics&#039;&#039;&#039; (DSBA).&lt;br /&gt;
&lt;br /&gt;
The full syllabus can be accessed at [https://www.hse.ru/ba/data/courses/912653105.html this page]. &lt;br /&gt;
&lt;br /&gt;
In case you find any inconsistencies on this page, please, contact [https://t.me/l_AnnaPronina_l @l_AnnaPronina_l].&lt;br /&gt;
&lt;br /&gt;
= Teachers and assistants = &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Group !! 231 !! 232 !! 233 !! 234&lt;br /&gt;
|-&lt;br /&gt;
|| Lecturer &lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | [https://www.hse.ru/org/persons/528651897 Nikita Makarov]&lt;br /&gt;
|- &lt;br /&gt;
|-&lt;br /&gt;
|| Seminar Instructor &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | [https://www.hse.ru/org/persons/305061980 Andrey Borevskiy] &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | [https://www.hse.ru/org/persons/191485259 Vladimir Kurenkov] &lt;br /&gt;
|-&lt;br /&gt;
|| Teaching Assistant&lt;br /&gt;
|| Belikov Daniil &amp;lt;br&amp;gt; tg: [https://t.me/DanBel1kov @DanBel1kov]&lt;br /&gt;
|| Latyshev Ivan &amp;lt;br&amp;gt; tg: [https://t.me/ivan_latysh @ivan_latysh]&lt;br /&gt;
|| Gadaev Isa &amp;lt;br&amp;gt; tg: [https://t.me/elohimapproximation @elohimapproximation]&lt;br /&gt;
|| Pavlov Leonid &amp;lt;br&amp;gt; tg: [https://t.me/leon1dl @leon1dl]&lt;br /&gt;
|-&lt;br /&gt;
|| Head TA&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | Pronina Anna &amp;lt;br&amp;gt; tg: [https://t.me/l_AnnaPronina_l @l_AnnaPronina_l]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
You may find your grades [https://docs.google.com/spreadsheets/d/1JeoxJpMexYYpLPCNpzng5Xcr3SczH91BndCNhy9Cs-I/edit?gid=11487808#gid=11487808 here].&lt;br /&gt;
&lt;br /&gt;
== Formula ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Final Grade = M1 * 0.3 + M4 * 0.7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mi = E * 0.4 + HW * 0.2 + Q * 0.2 + S * 0.2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039; - exam grade: rational number [0, 10] = sum of the grade for the oral and written parts, out of 5 each&lt;br /&gt;
* &#039;&#039;&#039;HW&#039;&#039;&#039; - homework grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;Q&#039;&#039;&#039; - lecture quizzes grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039; - seminar practice grade: rational number [0, 10]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;rounding&#039;&#039;&#039;: each element in the formulae is rounded up&lt;br /&gt;
&lt;br /&gt;
== Plagiarism policy ==&lt;br /&gt;
&lt;br /&gt;
If plagiarism is detected, the assessment element will be assigned a score of &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the student is suspected of preparing the task not on his own, the teacher has the right to initiate additional verification or defense of this particular assessment element. Then such an assessment element will be graded based on the additional verification or the defense.&lt;br /&gt;
&lt;br /&gt;
= Home assignments =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Contest !! Deadline !! Topic&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/68732/enter/ Contest 1] || 16 oct 2024, 23:59:59  || Sorting Algorithms&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/69563/enter/ Contest 2] || 25 oct 2024, 23:59:59  || Trees&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/70462/enter/ Contest 3] || 15 nov 2024, 23:59:59  || String Algorithms I&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/70464/enter/ Contest 4] || 22 nov 2024, 23:59:59  || String Algorithms II&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/71931/enter/ Contest 5] || 8 dec 2024, 23:59:59  || Dynamic Programming&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/72567/enter/ Contest 6] || 18 dec 2024, 23:59:59  || Dynamic Programming&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/75049/enter/ Contest 7] || 22 feb 2024, 23:59:59  || Graphs, DFS&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/75538/enter/ Contest 8] || 12 mar 2024, 23:59:59  || Graphs, BFS, Dijkstra, Bellman-Ford, Floyd&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Lectures = &lt;br /&gt;
Lectures are held on Saturdays from 14:40 till 17:40.&lt;br /&gt;
&lt;br /&gt;
== Lecture Materials ==&lt;br /&gt;
&#039;&#039;&#039;Sep 7&#039;&#039;&#039;&lt;br /&gt;
* Introduction to the course&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, heap sort (including building a heap)&lt;br /&gt;
* Lower bounds of sorting&lt;br /&gt;
* Counting sort&lt;br /&gt;
* Radix sort&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 2, 3, 6, 8&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 14&#039;&#039;&#039;&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, main operations (insert, delete, rotate)&lt;br /&gt;
* AVL-trees, main operations&lt;br /&gt;
* Red-black trees, main definitions&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 12, 13&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 21&#039;&#039;&#039;&lt;br /&gt;
* Red-black trees, main operations&lt;br /&gt;
* Treaps, main operations&lt;br /&gt;
* Tries, main operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 13, Mehta, ch. 28&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 28&#039;&#039;&#039;&lt;br /&gt;
* Tries, compact tries, PATRICIA trie, main operations&lt;br /&gt;
* 2-3-4 trees, main operations&lt;br /&gt;
* B-trees, main operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 5&#039;&#039;&#039;&lt;br /&gt;
* Quiz #1&lt;br /&gt;
* Exact string matching: naive method, Z algorithm, Knuth-Morris-Pratt algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 1, 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 12&#039;&#039;&#039;&lt;br /&gt;
* Exact string matching: Knuth-Morris-Pratt algorithm, preprocessing for real-time string matching, Boyer-Moore algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 19&#039;&#039;&#039;&lt;br /&gt;
* Exact matching with a set of patterns: Aho-Corasick algorithm&lt;br /&gt;
* Exact string matching: Apostolico-Giancarlo algorithm&lt;br /&gt;
* Suffix trees: basic definition, naive algorithm to build&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 3, 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 26&#039;&#039;&#039;&lt;br /&gt;
* Module 1 Exam&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 9&#039;&#039;&#039;&lt;br /&gt;
* Suffix trees: basic definition, naive algorithm to build&lt;br /&gt;
* Suffix trees: Ukkonen&#039;s algorithm, applications&lt;br /&gt;
* Suffix arrays: building using suffix tree, exact string matching&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 5, 6, 7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 16&#039;&#039;&#039;&lt;br /&gt;
* Suffix arrays: building without suffix tree&lt;br /&gt;
* Dynamic programming: longest common subsequence, Levenstein distance&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 15&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 23&#039;&#039;&#039;&lt;br /&gt;
* Dynamic programming: two conveyors problem, 0-1 knapsack problem&lt;br /&gt;
* Greedy algorithm: activity selection problem, fraction knapsack problem, longest increasing subsequence, Huffman codes&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 15, 16&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 30&#039;&#039;&#039;&lt;br /&gt;
* Text compression, models: static, semistatic, adaptive, symbolwise models, dictionary models&lt;br /&gt;
* Serialization, tree serialization in semistatic Huffman codes&lt;br /&gt;
* Dictionary models: LZ-77, LZ-78, LZW&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 2, Atallah, ch. 12&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 7&#039;&#039;&#039;&lt;br /&gt;
* Quiz #2&lt;br /&gt;
* Dictionary models: LZW&lt;br /&gt;
* Symbolwise models: arithmetic coding, adaptive Huffman codes&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 2, Atallah, ch. 12&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 14&#039;&#039;&#039;&lt;br /&gt;
* Symbolwise models: adaptive Huffman codes&lt;br /&gt;
* Burrows-Wheeler transform&lt;br /&gt;
* Move-to-Front transform&lt;br /&gt;
* Run-Length Encoding&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 2, Atallah, ch. 12&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 11&#039;&#039;&#039;&lt;br /&gt;
* Graphs: main definitions, representation of graphs&lt;br /&gt;
* Breadth-first search&lt;br /&gt;
* Depth-first search, strongly connected components&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 22&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 17&#039;&#039;&#039;&lt;br /&gt;
* Topological sort&lt;br /&gt;
* Single-source shortest paths, Bellman-Ford algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 22, 24&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 31&#039;&#039;&#039;&lt;br /&gt;
* Single-source shortest paths, Bellman-Ford algorithm, Dijkstra&#039;s algorithm&lt;br /&gt;
* All-pairs shortest paths, &amp;quot;matrix multiplication&amp;quot;&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 24, 25&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feb 8&#039;&#039;&#039;&lt;br /&gt;
* All-pairs shortest paths, Floyd-Warshall algorithm, Johnson&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 25&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feb 15&#039;&#039;&#039;&lt;br /&gt;
* Quiz #3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feb 22&#039;&#039;&#039;&lt;br /&gt;
* Maximum flow: Ford-Fulkerson method, Edmonds-Karp algorithm&lt;br /&gt;
* Maximum bipartite matching: Ford-Fulkerson method, Kuhn&#039;s algorithm&lt;br /&gt;
* Minimum spanning trees: Prim&#039;s algorithm, Kruskal&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 22, 26&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mar 1&#039;&#039;&#039;&lt;br /&gt;
* Disjoint sets: linked list representation, disjoint-set forest&lt;br /&gt;
* Maximum flow: push-relabel algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 22, 26&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mar 14&#039;&#039;&#039;&lt;br /&gt;
* Preparing for the quiz&lt;br /&gt;
* All-pairs shortest paths, &amp;quot;matrix multiplication&amp;quot;, Johnson&#039;s algorithm&lt;br /&gt;
* Maximum bipartite matching: Kuhn&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 25, 26&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mar 15&#039;&#039;&#039;&lt;br /&gt;
* Quiz #4&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mar 22&#039;&#039;&#039;&lt;br /&gt;
* Big integers, main operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Knuth, vol.2, ch. 4.3 &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Apr 5&#039;&#039;&#039;&lt;br /&gt;
* Polynomials, coefficient representation, point-value representation, main operations&lt;br /&gt;
* Discrete Fourier transform&lt;br /&gt;
* Fast Fourier transform&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 30 &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Apr 12&#039;&#039;&#039;&lt;br /&gt;
* Discrete Fourier transform&lt;br /&gt;
* Fast Fourier transform&lt;br /&gt;
* Deterministic finite automata&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 30, Hopcroft, ch. 1, 2 &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Apr 19&#039;&#039;&#039;&lt;br /&gt;
* Deterministic finite automata&lt;br /&gt;
* Nondeterministic finite automata&lt;br /&gt;
* Equivalence of DFA and NFA&lt;br /&gt;
* Finite automata with epsilon-transitions&lt;br /&gt;
* Regular expressions&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Hopcroft, ch. 2, 3 &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Apr 26&#039;&#039;&#039;&lt;br /&gt;
* Regular expressions&lt;br /&gt;
* Converting DFA&#039;s to RE&lt;br /&gt;
* Converting RE to NFA with epsilon-transitions&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Hopcroft, ch. 3 &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;May 31&#039;&#039;&#039;&lt;br /&gt;
* Regular languages, the pumping lemma&lt;br /&gt;
* Equivalence of automata&lt;br /&gt;
* Context-free languages&lt;br /&gt;
* Context-free grammar, derivations using a grammar&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Hopcroft, ch. 4, 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jun 7&#039;&#039;&#039;&lt;br /&gt;
* Derivations using a grammar, leftmost and rightmost derivations&lt;br /&gt;
* Parse trees&lt;br /&gt;
* Ambiguity in grammars and languages&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Hopcroft, ch. 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jun 14&#039;&#039;&#039;&lt;br /&gt;
* Pushdown automata&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Hopcroft, ch. 6&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 1==&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, heap sort (including building a heap), counting sort, radix sort&lt;br /&gt;
* Lower bounds of sorting using comparisons&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, main operations (search, insert, delete, rotate)&lt;br /&gt;
* AVL-trees, main operations (search, insert, delete)&lt;br /&gt;
* Red-black trees, main operations (search, insert)&lt;br /&gt;
* Treaps, main operations (search, insert, delete, split, merge)&lt;br /&gt;
* Tries, compact tries, main operations (search, insert, delete)&lt;br /&gt;
* 2-3-4 trees, main operations (search, insert, delete), transformation into red-black tree&lt;br /&gt;
* B-trees, main operations (search, insert, delete)&lt;br /&gt;
* Exact string matching: naive method, Z algorithm, Knuth-Morris-Pratt algorithm, Boyer-Moore algorithm&lt;br /&gt;
* Exact matching with a set of patterns: Aho-Corasick algorithm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 4==&lt;br /&gt;
* Suffix trees: naive algorithm to build a suffix tree, Ukkonen&#039;s algorithm, applications of suffix trees&lt;br /&gt;
* Suffix arrays: building with and without suffix tree, string matching problem using suffix array&lt;br /&gt;
* Dynamic programming: longest common subsequence, Levenstein distance, two conveyors problem, knapsack problem&lt;br /&gt;
* Greedy algorithms: activity selection problem, knapsack problem, longest increasing subsequence, Huffman codes&lt;br /&gt;
* Text compression: static, semistatic and adaptive models, symbolwise and dictionary models&lt;br /&gt;
* Symbolwise models: Huffman codes, arithmetic coding, adaptive Huffman codes&lt;br /&gt;
* Dictionary models: LZ-77, LZ-78, LZW&lt;br /&gt;
* Text modification: Burrows-Wheeler transform, move-to-front transform, RLE&lt;br /&gt;
* Graphs: main definitions, representation of the graphs, BFS, DFS, their applications (strongly connected components, topological sort)&lt;br /&gt;
* Minimum spanning trees: Prim&#039;s algorithm, Kruskal&#039;s algorithm&lt;br /&gt;
* Disjoint sets: linked list representation, disjoint-set forest&lt;br /&gt;
* Single-source shortest path: Bellman-Ford algorithm, Dijkstra&#039;s algorithm&lt;br /&gt;
* All-pairs shortest path: &amp;quot;matrix multiplication&amp;quot;, Floyd-Warshall algorithm, Johnson&#039;s algorithm&lt;br /&gt;
* Maximum flow: Ford-Fulkerson method, Edmonds-Karp algorithm, push-relabel algorithm, &lt;br /&gt;
* Maximum bipartite matching: Ford-Fulkerson method, Kuhn&#039;s algorithm&lt;br /&gt;
* Polynomials: coefficient representation, point-value representation, discrete Fourier transform, fast Fourier transform&lt;br /&gt;
* Regular languages: DFA, NFA, NFA with epsilon transitions, regular expressions, equivalence of DFA, NFA and RE&lt;br /&gt;
* Context-free languages: context-free grammar, derivations, parse trees, pushdown automata&lt;/div&gt;</summary>
		<author><name>Nkmakarov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2024/25&amp;diff=91178</id>
		<title>Algorithms and Data Structures DSBA 2024/25</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2024/25&amp;diff=91178"/>
		<updated>2025-06-14T17:54:53Z</updated>

		<summary type="html">&lt;p&gt;Nkmakarov: Update list of topics for exam&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
This page contains basic information for the course Algorithms and Data Structures in 2024/2025 academic year at Bachelor’s Programme in &#039;&#039;&#039;Data Science and Business Analytics&#039;&#039;&#039; (DSBA).&lt;br /&gt;
&lt;br /&gt;
The full syllabus can be accessed at [https://www.hse.ru/ba/data/courses/912653105.html this page]. &lt;br /&gt;
&lt;br /&gt;
In case you find any inconsistencies on this page, please, contact [https://t.me/l_AnnaPronina_l @l_AnnaPronina_l].&lt;br /&gt;
&lt;br /&gt;
= Teachers and assistants = &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Group !! 231 !! 232 !! 233 !! 234&lt;br /&gt;
|-&lt;br /&gt;
|| Lecturer &lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | [https://www.hse.ru/org/persons/528651897 Nikita Makarov]&lt;br /&gt;
|- &lt;br /&gt;
|-&lt;br /&gt;
|| Seminar Instructor &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | [https://www.hse.ru/org/persons/305061980 Andrey Borevskiy] &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | [https://www.hse.ru/org/persons/191485259 Vladimir Kurenkov] &lt;br /&gt;
|-&lt;br /&gt;
|| Teaching Assistant&lt;br /&gt;
|| Belikov Daniil &amp;lt;br&amp;gt; tg: [https://t.me/DanBel1kov @DanBel1kov]&lt;br /&gt;
|| Latyshev Ivan &amp;lt;br&amp;gt; tg: [https://t.me/ivan_latysh @ivan_latysh]&lt;br /&gt;
|| Gadaev Isa &amp;lt;br&amp;gt; tg: [https://t.me/elohimapproximation @elohimapproximation]&lt;br /&gt;
|| Pavlov Leonid &amp;lt;br&amp;gt; tg: [https://t.me/leon1dl @leon1dl]&lt;br /&gt;
|-&lt;br /&gt;
|| Head TA&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | Pronina Anna &amp;lt;br&amp;gt; tg: [https://t.me/l_AnnaPronina_l @l_AnnaPronina_l]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
You may find your grades [https://docs.google.com/spreadsheets/d/1JeoxJpMexYYpLPCNpzng5Xcr3SczH91BndCNhy9Cs-I/edit?gid=11487808#gid=11487808 here].&lt;br /&gt;
&lt;br /&gt;
== Formula ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Final Grade = M1 * 0.3 + M4 * 0.7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mi = E * 0.4 + HW * 0.2 + Q * 0.2 + S * 0.2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039; - exam grade: rational number [0, 10] = sum of the grade for the oral and written parts, out of 5 each&lt;br /&gt;
* &#039;&#039;&#039;HW&#039;&#039;&#039; - homework grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;Q&#039;&#039;&#039; - lecture quizzes grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039; - seminar practice grade: rational number [0, 10]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;rounding&#039;&#039;&#039;: each element in the formulae is rounded up&lt;br /&gt;
&lt;br /&gt;
== Plagiarism policy ==&lt;br /&gt;
&lt;br /&gt;
If plagiarism is detected, the assessment element will be assigned a score of &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the student is suspected of preparing the task not on his own, the teacher has the right to initiate additional verification or defense of this particular assessment element. Then such an assessment element will be graded based on the additional verification or the defense.&lt;br /&gt;
&lt;br /&gt;
= Home assignments =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Contest !! Deadline !! Topic&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/68732/enter/ Contest 1] || 16 oct 2024, 23:59:59  || Sorting Algorithms&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/69563/enter/ Contest 2] || 25 oct 2024, 23:59:59  || Trees&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/70462/enter/ Contest 3] || 15 nov 2024, 23:59:59  || String Algorithms I&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/70464/enter/ Contest 4] || 22 nov 2024, 23:59:59  || String Algorithms II&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/71931/enter/ Contest 5] || 8 dec 2024, 23:59:59  || Dynamic Programming&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/72567/enter/ Contest 6] || 18 dec 2024, 23:59:59  || Dynamic Programming&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/75049/enter/ Contest 7] || 22 feb 2024, 23:59:59  || Graphs, DFS&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/75538/enter/ Contest 8] || 12 mar 2024, 23:59:59  || Graphs, BFS, Dijkstra, Bellman-Ford, Floyd&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Lectures = &lt;br /&gt;
Lectures are held on Saturdays from 14:40 till 17:40.&lt;br /&gt;
&lt;br /&gt;
== Lecture Materials ==&lt;br /&gt;
&#039;&#039;&#039;Sep 7&#039;&#039;&#039;&lt;br /&gt;
* Introduction to the course&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, heap sort (including building a heap)&lt;br /&gt;
* Lower bounds of sorting&lt;br /&gt;
* Counting sort&lt;br /&gt;
* Radix sort&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 2, 3, 6, 8&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 14&#039;&#039;&#039;&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, main operations (insert, delete, rotate)&lt;br /&gt;
* AVL-trees, main operations&lt;br /&gt;
* Red-black trees, main definitions&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 12, 13&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 21&#039;&#039;&#039;&lt;br /&gt;
* Red-black trees, main operations&lt;br /&gt;
* Treaps, main operations&lt;br /&gt;
* Tries, main operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 13, Mehta, ch. 28&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 28&#039;&#039;&#039;&lt;br /&gt;
* Tries, compact tries, PATRICIA trie, main operations&lt;br /&gt;
* 2-3-4 trees, main operations&lt;br /&gt;
* B-trees, main operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 5&#039;&#039;&#039;&lt;br /&gt;
* Quiz #1&lt;br /&gt;
* Exact string matching: naive method, Z algorithm, Knuth-Morris-Pratt algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 1, 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 12&#039;&#039;&#039;&lt;br /&gt;
* Exact string matching: Knuth-Morris-Pratt algorithm, preprocessing for real-time string matching, Boyer-Moore algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 19&#039;&#039;&#039;&lt;br /&gt;
* Exact matching with a set of patterns: Aho-Corasick algorithm&lt;br /&gt;
* Exact string matching: Apostolico-Giancarlo algorithm&lt;br /&gt;
* Suffix trees: basic definition, naive algorithm to build&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 3, 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 26&#039;&#039;&#039;&lt;br /&gt;
* Module 1 Exam&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 9&#039;&#039;&#039;&lt;br /&gt;
* Suffix trees: basic definition, naive algorithm to build&lt;br /&gt;
* Suffix trees: Ukkonen&#039;s algorithm, applications&lt;br /&gt;
* Suffix arrays: building using suffix tree, exact string matching&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 5, 6, 7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 16&#039;&#039;&#039;&lt;br /&gt;
* Suffix arrays: building without suffix tree&lt;br /&gt;
* Dynamic programming: longest common subsequence, Levenstein distance&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 15&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 23&#039;&#039;&#039;&lt;br /&gt;
* Dynamic programming: two conveyors problem, 0-1 knapsack problem&lt;br /&gt;
* Greedy algorithm: activity selection problem, fraction knapsack problem, longest increasing subsequence, Huffman codes&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 15, 16&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 30&#039;&#039;&#039;&lt;br /&gt;
* Text compression, models: static, semistatic, adaptive, symbolwise models, dictionary models&lt;br /&gt;
* Serialization, tree serialization in semistatic Huffman codes&lt;br /&gt;
* Dictionary models: LZ-77, LZ-78, LZW&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 2, Atallah, ch. 12&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 7&#039;&#039;&#039;&lt;br /&gt;
* Quiz #2&lt;br /&gt;
* Dictionary models: LZW&lt;br /&gt;
* Symbolwise models: arithmetic coding, adaptive Huffman codes&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 2, Atallah, ch. 12&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 14&#039;&#039;&#039;&lt;br /&gt;
* Symbolwise models: adaptive Huffman codes&lt;br /&gt;
* Burrows-Wheeler transform&lt;br /&gt;
* Move-to-Front transform&lt;br /&gt;
* Run-Length Encoding&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 2, Atallah, ch. 12&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 11&#039;&#039;&#039;&lt;br /&gt;
* Graphs: main definitions, representation of graphs&lt;br /&gt;
* Breadth-first search&lt;br /&gt;
* Depth-first search, strongly connected components&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 22&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 17&#039;&#039;&#039;&lt;br /&gt;
* Topological sort&lt;br /&gt;
* Single-source shortest paths, Bellman-Ford algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 22, 24&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 31&#039;&#039;&#039;&lt;br /&gt;
* Single-source shortest paths, Bellman-Ford algorithm, Dijkstra&#039;s algorithm&lt;br /&gt;
* All-pairs shortest paths, &amp;quot;matrix multiplication&amp;quot;&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 24, 25&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feb 8&#039;&#039;&#039;&lt;br /&gt;
* All-pairs shortest paths, Floyd-Warshall algorithm, Johnson&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 25&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feb 15&#039;&#039;&#039;&lt;br /&gt;
* Quiz #3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feb 22&#039;&#039;&#039;&lt;br /&gt;
* Maximum flow: Ford-Fulkerson method, Edmonds-Karp algorithm&lt;br /&gt;
* Maximum bipartite matching: Ford-Fulkerson method, Kuhn&#039;s algorithm&lt;br /&gt;
* Minimum spanning trees: Prim&#039;s algorithm, Kruskal&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 22, 26&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mar 1&#039;&#039;&#039;&lt;br /&gt;
* Disjoint sets: linked list representation, disjoint-set forest&lt;br /&gt;
* Maximum flow: push-relabel algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 22, 26&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mar 14&#039;&#039;&#039;&lt;br /&gt;
* Preparing for the quiz&lt;br /&gt;
* All-pairs shortest paths, &amp;quot;matrix multiplication&amp;quot;, Johnson&#039;s algorithm&lt;br /&gt;
* Maximum bipartite matching: Kuhn&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 25, 26&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mar 15&#039;&#039;&#039;&lt;br /&gt;
* Quiz #4&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mar 22&#039;&#039;&#039;&lt;br /&gt;
* Big integers, main operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Knuth, vol.2, ch. 4.3 &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Apr 5&#039;&#039;&#039;&lt;br /&gt;
* Polynomials, coefficient representation, point-value representation, main operations&lt;br /&gt;
* Discrete Fourier transform&lt;br /&gt;
* Fast Fourier transform&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 30 &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Apr 12&#039;&#039;&#039;&lt;br /&gt;
* Discrete Fourier transform&lt;br /&gt;
* Fast Fourier transform&lt;br /&gt;
* Deterministic finite automata&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 30, Hopcroft, ch. 1, 2 &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Apr 19&#039;&#039;&#039;&lt;br /&gt;
* Deterministic finite automata&lt;br /&gt;
* Nondeterministic finite automata&lt;br /&gt;
* Equivalence of DFA and NFA&lt;br /&gt;
* Finite automata with epsilon-transitions&lt;br /&gt;
* Regular expressions&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Hopcroft, ch. 2, 3 &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Apr 26&#039;&#039;&#039;&lt;br /&gt;
* Regular expressions&lt;br /&gt;
* Converting DFA&#039;s to RE&lt;br /&gt;
* Converting RE to NFA with epsilon-transitions&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Hopcroft, ch. 3 &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;May 31&#039;&#039;&#039;&lt;br /&gt;
* Regular languages, the pumping lemma&lt;br /&gt;
* Rquivalence of automata&lt;br /&gt;
* Context-free languages&lt;br /&gt;
* Context-free grammar, derivations using a grammar&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Hopcroft, ch. 4, 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jun 7&#039;&#039;&#039;&lt;br /&gt;
* Derivations using a grammar, leftmost and rightmost derivations&lt;br /&gt;
* Parse trees&lt;br /&gt;
* Ambiguity in grammars and languages&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Hopcroft, ch. 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jun 14&#039;&#039;&#039;&lt;br /&gt;
* Pushdown automata&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Hopcroft, ch. 6&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 1==&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, heap sort (including building a heap), counting sort, radix sort&lt;br /&gt;
* Lower bounds of sorting using comparisons&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, main operations (search, insert, delete, rotate)&lt;br /&gt;
* AVL-trees, main operations (search, insert, delete)&lt;br /&gt;
* Red-black trees, main operations (search, insert)&lt;br /&gt;
* Treaps, main operations (search, insert, delete, split, merge)&lt;br /&gt;
* Tries, compact tries, main operations (search, insert, delete)&lt;br /&gt;
* 2-3-4 trees, main operations (search, insert, delete), transformation into red-black tree&lt;br /&gt;
* B-trees, main operations (search, insert, delete)&lt;br /&gt;
* Exact string matching: naive method, Z algorithm, Knuth-Morris-Pratt algorithm, Boyer-Moore algorithm&lt;br /&gt;
* Exact matching with a set of patterns: Aho-Corasick algorithm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 4==&lt;br /&gt;
* Suffix trees: naive algorithm to build a suffix tree, Ukkonen&#039;s algorithm, applications of suffix trees&lt;br /&gt;
* Suffix arrays: building with and without suffix tree, string matching problem using suffix array&lt;br /&gt;
* Dynamic programming: longest common subsequence, Levenstein distance, two conveyors problem, knapsack problem&lt;br /&gt;
* Greedy algorithms: activity selection problem, knapsack problem, longest increasing subsequence, Huffman codes&lt;br /&gt;
* Text compression: static, semistatic and adaptive models, symbolwise and dictionary models&lt;br /&gt;
* Symbolwise models: Huffman codes, arithmetic coding, adaptive Huffman codes&lt;br /&gt;
* Dictionary models: LZ-77, LZ-78, LZW&lt;br /&gt;
* Text modification: Burrows-Wheeler transform, move-to-front transform, RLE&lt;br /&gt;
* Graphs: main definitions, representation of the graphs, BFS, DFS, their applications (strongly connected components, topological sort)&lt;br /&gt;
* Minimum spanning trees: Prim&#039;s algorithm, Kruskal&#039;s algorithm&lt;br /&gt;
* Disjoint sets: linked list representation, disjoint-set forest&lt;br /&gt;
* Single-source shortest path: Bellman-Ford algorithm, Dijkstra&#039;s algorithm&lt;br /&gt;
* All-pairs shortest path: &amp;quot;matrix multiplication&amp;quot;, Floyd-Warshall algorithm, Johnson&#039;s algorithm&lt;br /&gt;
* Maximum flow: Ford-Fulkerson method, Edmonds-Karp algorithm, push-relabel algorithm, &lt;br /&gt;
* Maximum bipartite matching: Ford-Fulkerson method, Kuhn&#039;s algorithm&lt;br /&gt;
* Polynomials: coefficient representation, point-value representation, discrete Fourier transform, fast Fourier transform&lt;br /&gt;
* Regular languages: DFA, NFA, NFA with epsilon transitions, regular expressions, equivalence of DFA, NFA and RE&lt;br /&gt;
* Context-free languages: context-free grammar, derivations, parse trees, pushdown automata&lt;/div&gt;</summary>
		<author><name>Nkmakarov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2024/25&amp;diff=91177</id>
		<title>Algorithms and Data Structures DSBA 2024/25</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2024/25&amp;diff=91177"/>
		<updated>2025-06-14T17:23:26Z</updated>

		<summary type="html">&lt;p&gt;Nkmakarov: Update list of lectures&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
This page contains basic information for the course Algorithms and Data Structures in 2024/2025 academic year at Bachelor’s Programme in &#039;&#039;&#039;Data Science and Business Analytics&#039;&#039;&#039; (DSBA).&lt;br /&gt;
&lt;br /&gt;
The full syllabus can be accessed at [https://www.hse.ru/ba/data/courses/912653105.html this page]. &lt;br /&gt;
&lt;br /&gt;
In case you find any inconsistencies on this page, please, contact [https://t.me/l_AnnaPronina_l @l_AnnaPronina_l].&lt;br /&gt;
&lt;br /&gt;
= Teachers and assistants = &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Group !! 231 !! 232 !! 233 !! 234&lt;br /&gt;
|-&lt;br /&gt;
|| Lecturer &lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | [https://www.hse.ru/org/persons/528651897 Nikita Makarov]&lt;br /&gt;
|- &lt;br /&gt;
|-&lt;br /&gt;
|| Seminar Instructor &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | [https://www.hse.ru/org/persons/305061980 Andrey Borevskiy] &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | [https://www.hse.ru/org/persons/191485259 Vladimir Kurenkov] &lt;br /&gt;
|-&lt;br /&gt;
|| Teaching Assistant&lt;br /&gt;
|| Belikov Daniil &amp;lt;br&amp;gt; tg: [https://t.me/DanBel1kov @DanBel1kov]&lt;br /&gt;
|| Latyshev Ivan &amp;lt;br&amp;gt; tg: [https://t.me/ivan_latysh @ivan_latysh]&lt;br /&gt;
|| Gadaev Isa &amp;lt;br&amp;gt; tg: [https://t.me/elohimapproximation @elohimapproximation]&lt;br /&gt;
|| Pavlov Leonid &amp;lt;br&amp;gt; tg: [https://t.me/leon1dl @leon1dl]&lt;br /&gt;
|-&lt;br /&gt;
|| Head TA&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | Pronina Anna &amp;lt;br&amp;gt; tg: [https://t.me/l_AnnaPronina_l @l_AnnaPronina_l]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
You may find your grades [https://docs.google.com/spreadsheets/d/1JeoxJpMexYYpLPCNpzng5Xcr3SczH91BndCNhy9Cs-I/edit?gid=11487808#gid=11487808 here].&lt;br /&gt;
&lt;br /&gt;
== Formula ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Final Grade = M1 * 0.3 + M4 * 0.7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mi = E * 0.4 + HW * 0.2 + Q * 0.2 + S * 0.2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039; - exam grade: rational number [0, 10] = sum of the grade for the oral and written parts, out of 5 each&lt;br /&gt;
* &#039;&#039;&#039;HW&#039;&#039;&#039; - homework grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;Q&#039;&#039;&#039; - lecture quizzes grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039; - seminar practice grade: rational number [0, 10]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;rounding&#039;&#039;&#039;: each element in the formulae is rounded up&lt;br /&gt;
&lt;br /&gt;
== Plagiarism policy ==&lt;br /&gt;
&lt;br /&gt;
If plagiarism is detected, the assessment element will be assigned a score of &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the student is suspected of preparing the task not on his own, the teacher has the right to initiate additional verification or defense of this particular assessment element. Then such an assessment element will be graded based on the additional verification or the defense.&lt;br /&gt;
&lt;br /&gt;
= Home assignments =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Contest !! Deadline !! Topic&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/68732/enter/ Contest 1] || 16 oct 2024, 23:59:59  || Sorting Algorithms&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/69563/enter/ Contest 2] || 25 oct 2024, 23:59:59  || Trees&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/70462/enter/ Contest 3] || 15 nov 2024, 23:59:59  || String Algorithms I&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/70464/enter/ Contest 4] || 22 nov 2024, 23:59:59  || String Algorithms II&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/71931/enter/ Contest 5] || 8 dec 2024, 23:59:59  || Dynamic Programming&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/72567/enter/ Contest 6] || 18 dec 2024, 23:59:59  || Dynamic Programming&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/75049/enter/ Contest 7] || 22 feb 2024, 23:59:59  || Graphs, DFS&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/75538/enter/ Contest 8] || 12 mar 2024, 23:59:59  || Graphs, BFS, Dijkstra, Bellman-Ford, Floyd&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Lectures = &lt;br /&gt;
Lectures are held on Saturdays from 14:40 till 17:40.&lt;br /&gt;
&lt;br /&gt;
== Lecture Materials ==&lt;br /&gt;
&#039;&#039;&#039;Sep 7&#039;&#039;&#039;&lt;br /&gt;
* Introduction to the course&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, heap sort (including building a heap)&lt;br /&gt;
* Lower bounds of sorting&lt;br /&gt;
* Counting sort&lt;br /&gt;
* Radix sort&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 2, 3, 6, 8&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 14&#039;&#039;&#039;&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, main operations (insert, delete, rotate)&lt;br /&gt;
* AVL-trees, main operations&lt;br /&gt;
* Red-black trees, main definitions&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 12, 13&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 21&#039;&#039;&#039;&lt;br /&gt;
* Red-black trees, main operations&lt;br /&gt;
* Treaps, main operations&lt;br /&gt;
* Tries, main operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 13, Mehta, ch. 28&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 28&#039;&#039;&#039;&lt;br /&gt;
* Tries, compact tries, PATRICIA trie, main operations&lt;br /&gt;
* 2-3-4 trees, main operations&lt;br /&gt;
* B-trees, main operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 5&#039;&#039;&#039;&lt;br /&gt;
* Quiz #1&lt;br /&gt;
* Exact string matching: naive method, Z algorithm, Knuth-Morris-Pratt algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 1, 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 12&#039;&#039;&#039;&lt;br /&gt;
* Exact string matching: Knuth-Morris-Pratt algorithm, preprocessing for real-time string matching, Boyer-Moore algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 19&#039;&#039;&#039;&lt;br /&gt;
* Exact matching with a set of patterns: Aho-Corasick algorithm&lt;br /&gt;
* Exact string matching: Apostolico-Giancarlo algorithm&lt;br /&gt;
* Suffix trees: basic definition, naive algorithm to build&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 3, 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 26&#039;&#039;&#039;&lt;br /&gt;
* Module 1 Exam&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 9&#039;&#039;&#039;&lt;br /&gt;
* Suffix trees: basic definition, naive algorithm to build&lt;br /&gt;
* Suffix trees: Ukkonen&#039;s algorithm, applications&lt;br /&gt;
* Suffix arrays: building using suffix tree, exact string matching&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 5, 6, 7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 16&#039;&#039;&#039;&lt;br /&gt;
* Suffix arrays: building without suffix tree&lt;br /&gt;
* Dynamic programming: longest common subsequence, Levenstein distance&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 15&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 23&#039;&#039;&#039;&lt;br /&gt;
* Dynamic programming: two conveyors problem, 0-1 knapsack problem&lt;br /&gt;
* Greedy algorithm: activity selection problem, fraction knapsack problem, longest increasing subsequence, Huffman codes&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 15, 16&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 30&#039;&#039;&#039;&lt;br /&gt;
* Text compression, models: static, semistatic, adaptive, symbolwise models, dictionary models&lt;br /&gt;
* Serialization, tree serialization in semistatic Huffman codes&lt;br /&gt;
* Dictionary models: LZ-77, LZ-78, LZW&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 2, Atallah, ch. 12&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 7&#039;&#039;&#039;&lt;br /&gt;
* Quiz #2&lt;br /&gt;
* Dictionary models: LZW&lt;br /&gt;
* Symbolwise models: arithmetic coding, adaptive Huffman codes&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 2, Atallah, ch. 12&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 14&#039;&#039;&#039;&lt;br /&gt;
* Symbolwise models: adaptive Huffman codes&lt;br /&gt;
* Burrows-Wheeler transform&lt;br /&gt;
* Move-to-Front transform&lt;br /&gt;
* Run-Length Encoding&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 2, Atallah, ch. 12&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 11&#039;&#039;&#039;&lt;br /&gt;
* Graphs: main definitions, representation of graphs&lt;br /&gt;
* Breadth-first search&lt;br /&gt;
* Depth-first search, strongly connected components&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 22&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 17&#039;&#039;&#039;&lt;br /&gt;
* Topological sort&lt;br /&gt;
* Single-source shortest paths, Bellman-Ford algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 22, 24&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 31&#039;&#039;&#039;&lt;br /&gt;
* Single-source shortest paths, Bellman-Ford algorithm, Dijkstra&#039;s algorithm&lt;br /&gt;
* All-pairs shortest paths, &amp;quot;matrix multiplication&amp;quot;&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 24, 25&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feb 8&#039;&#039;&#039;&lt;br /&gt;
* All-pairs shortest paths, Floyd-Warshall algorithm, Johnson&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 25&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feb 15&#039;&#039;&#039;&lt;br /&gt;
* Quiz #3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feb 22&#039;&#039;&#039;&lt;br /&gt;
* Maximum flow: Ford-Fulkerson method, Edmonds-Karp algorithm&lt;br /&gt;
* Maximum bipartite matching: Ford-Fulkerson method, Kuhn&#039;s algorithm&lt;br /&gt;
* Minimum spanning trees: Prim&#039;s algorithm, Kruskal&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 22, 26&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mar 1&#039;&#039;&#039;&lt;br /&gt;
* Disjoint sets: linked list representation, disjoint-set forest&lt;br /&gt;
* Maximum flow: push-relabel algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 22, 26&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mar 14&#039;&#039;&#039;&lt;br /&gt;
* Preparing for the quiz&lt;br /&gt;
* All-pairs shortest paths, &amp;quot;matrix multiplication&amp;quot;, Johnson&#039;s algorithm&lt;br /&gt;
* Maximum bipartite matching: Kuhn&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 25, 26&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mar 15&#039;&#039;&#039;&lt;br /&gt;
* Quiz #4&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mar 22&#039;&#039;&#039;&lt;br /&gt;
* Big integers, main operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Knuth, vol.2, ch. 4.3 &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Apr 5&#039;&#039;&#039;&lt;br /&gt;
* Polynomials, coefficient representation, point-value representation, main operations&lt;br /&gt;
* Discrete Fourier transform&lt;br /&gt;
* Fast Fourier transform&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 30 &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Apr 12&#039;&#039;&#039;&lt;br /&gt;
* Discrete Fourier transform&lt;br /&gt;
* Fast Fourier transform&lt;br /&gt;
* Deterministic finite automata&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 30, Hopcroft, ch. 1, 2 &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Apr 19&#039;&#039;&#039;&lt;br /&gt;
* Deterministic finite automata&lt;br /&gt;
* Nondeterministic finite automata&lt;br /&gt;
* Equivalence of DFA and NFA&lt;br /&gt;
* Finite automata with epsilon-transitions&lt;br /&gt;
* Regular expressions&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Hopcroft, ch. 2, 3 &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Apr 26&#039;&#039;&#039;&lt;br /&gt;
* Regular expressions&lt;br /&gt;
* Converting DFA&#039;s to RE&lt;br /&gt;
* Converting RE to NFA with epsilon-transitions&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Hopcroft, ch. 3 &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;May 31&#039;&#039;&#039;&lt;br /&gt;
* Regular languages, the pumping lemma&lt;br /&gt;
* Rquivalence of automata&lt;br /&gt;
* Context-free languages&lt;br /&gt;
* Context-free grammar, derivations using a grammar&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Hopcroft, ch. 4, 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jun 7&#039;&#039;&#039;&lt;br /&gt;
* Derivations using a grammar, leftmost and rightmost derivations&lt;br /&gt;
* Parse trees&lt;br /&gt;
* Ambiguity in grammars and languages&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Hopcroft, ch. 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jun 14&#039;&#039;&#039;&lt;br /&gt;
* Pushdown automata&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Hopcroft, ch. 6&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 1==&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, heap sort (including building a heap), counting sort, radix sort&lt;br /&gt;
* Lower bounds of sorting using comparisons&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, main operations (search, insert, delete, rotate)&lt;br /&gt;
* AVL-trees, main operations (search, insert, delete)&lt;br /&gt;
* Red-black trees, main operations (search, insert)&lt;br /&gt;
* Treaps, main operations (search, insert, delete, split, merge)&lt;br /&gt;
* Tries, compact tries, main operations (search, insert, delete)&lt;br /&gt;
* 2-3-4 trees, main operations (search, insert, delete), transformation into red-black tree&lt;br /&gt;
* B-trees, main operations (search, insert, delete)&lt;br /&gt;
* Exact string matching: naive method, Z algorithm, Knuth-Morris-Pratt algorithm, Boyer-Moore algorithm&lt;br /&gt;
* Exact matching with a set of patterns: Aho-Corasick algorithm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 4==&lt;/div&gt;</summary>
		<author><name>Nkmakarov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2024/25&amp;diff=91113</id>
		<title>Algorithms and Data Structures DSBA 2024/25</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2024/25&amp;diff=91113"/>
		<updated>2025-06-07T18:58:00Z</updated>

		<summary type="html">&lt;p&gt;Nkmakarov: Update list of lectures&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
This page contains basic information for the course Algorithms and Data Structures in 2024/2025 academic year at Bachelor’s Programme in &#039;&#039;&#039;Data Science and Business Analytics&#039;&#039;&#039; (DSBA).&lt;br /&gt;
&lt;br /&gt;
The full syllabus can be accessed at [https://www.hse.ru/ba/data/courses/912653105.html this page]. &lt;br /&gt;
&lt;br /&gt;
In case you find any inconsistencies on this page, please, contact [https://t.me/l_AnnaPronina_l @l_AnnaPronina_l].&lt;br /&gt;
&lt;br /&gt;
= Teachers and assistants = &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Group !! 231 !! 232 !! 233 !! 234&lt;br /&gt;
|-&lt;br /&gt;
|| Lecturer &lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | [https://www.hse.ru/org/persons/528651897 Nikita Makarov]&lt;br /&gt;
|- &lt;br /&gt;
|-&lt;br /&gt;
|| Seminar Instructor &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | [https://www.hse.ru/org/persons/305061980 Andrey Borevskiy] &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | [https://www.hse.ru/org/persons/191485259 Vladimir Kurenkov] &lt;br /&gt;
|-&lt;br /&gt;
|| Teaching Assistant&lt;br /&gt;
|| Belikov Daniil &amp;lt;br&amp;gt; tg: [https://t.me/DanBel1kov @DanBel1kov]&lt;br /&gt;
|| Latyshev Ivan &amp;lt;br&amp;gt; tg: [https://t.me/ivan_latysh @ivan_latysh]&lt;br /&gt;
|| Gadaev Isa &amp;lt;br&amp;gt; tg: [https://t.me/elohimapproximation @elohimapproximation]&lt;br /&gt;
|| Pavlov Leonid &amp;lt;br&amp;gt; tg: [https://t.me/leon1dl @leon1dl]&lt;br /&gt;
|-&lt;br /&gt;
|| Head TA&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | Pronina Anna &amp;lt;br&amp;gt; tg: [https://t.me/l_AnnaPronina_l @l_AnnaPronina_l]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
You may find your grades [https://docs.google.com/spreadsheets/d/1JeoxJpMexYYpLPCNpzng5Xcr3SczH91BndCNhy9Cs-I/edit?gid=11487808#gid=11487808 here].&lt;br /&gt;
&lt;br /&gt;
== Formula ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Final Grade = M1 * 0.3 + M4 * 0.7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mi = E * 0.4 + HW * 0.2 + Q * 0.2 + S * 0.2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039; - exam grade: rational number [0, 10] = sum of the grade for the oral and written parts, out of 5 each&lt;br /&gt;
* &#039;&#039;&#039;HW&#039;&#039;&#039; - homework grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;Q&#039;&#039;&#039; - lecture quizzes grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039; - seminar practice grade: rational number [0, 10]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;rounding&#039;&#039;&#039;: each element in the formulae is rounded up&lt;br /&gt;
&lt;br /&gt;
== Plagiarism policy ==&lt;br /&gt;
&lt;br /&gt;
If plagiarism is detected, the assessment element will be assigned a score of &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the student is suspected of preparing the task not on his own, the teacher has the right to initiate additional verification or defense of this particular assessment element. Then such an assessment element will be graded based on the additional verification or the defense.&lt;br /&gt;
&lt;br /&gt;
= Home assignments =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Contest !! Deadline !! Topic&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/68732/enter/ Contest 1] || 16 oct 2024, 23:59:59  || Sorting Algorithms&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/69563/enter/ Contest 2] || 25 oct 2024, 23:59:59  || Trees&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/70462/enter/ Contest 3] || 15 nov 2024, 23:59:59  || String Algorithms I&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/70464/enter/ Contest 4] || 22 nov 2024, 23:59:59  || String Algorithms II&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/71931/enter/ Contest 5] || 8 dec 2024, 23:59:59  || Dynamic Programming&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/72567/enter/ Contest 6] || 18 dec 2024, 23:59:59  || Dynamic Programming&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/75049/enter/ Contest 7] || 22 feb 2024, 23:59:59  || Graphs, DFS&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/75538/enter/ Contest 8] || 12 mar 2024, 23:59:59  || Graphs, BFS, Dijkstra, Bellman-Ford, Floyd&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Lectures = &lt;br /&gt;
Lectures are held on Saturdays from 14:40 till 17:40.&lt;br /&gt;
&lt;br /&gt;
== Lecture Materials ==&lt;br /&gt;
&#039;&#039;&#039;Sep 7&#039;&#039;&#039;&lt;br /&gt;
* Introduction to the course&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, heap sort (including building a heap)&lt;br /&gt;
* Lower bounds of sorting&lt;br /&gt;
* Counting sort&lt;br /&gt;
* Radix sort&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 2, 3, 6, 8&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 14&#039;&#039;&#039;&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, main operations (insert, delete, rotate)&lt;br /&gt;
* AVL-trees, main operations&lt;br /&gt;
* Red-black trees, main definitions&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 12, 13&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 21&#039;&#039;&#039;&lt;br /&gt;
* Red-black trees, main operations&lt;br /&gt;
* Treaps, main operations&lt;br /&gt;
* Tries, main operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 13, Mehta, ch. 28&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 28&#039;&#039;&#039;&lt;br /&gt;
* Tries, compact tries, PATRICIA trie, main operations&lt;br /&gt;
* 2-3-4 trees, main operations&lt;br /&gt;
* B-trees, main operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 5&#039;&#039;&#039;&lt;br /&gt;
* Quiz #1&lt;br /&gt;
* Exact string matching: naive method, Z algorithm, Knuth-Morris-Pratt algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 1, 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 12&#039;&#039;&#039;&lt;br /&gt;
* Exact string matching: Knuth-Morris-Pratt algorithm, preprocessing for real-time string matching, Boyer-Moore algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 19&#039;&#039;&#039;&lt;br /&gt;
* Exact matching with a set of patterns: Aho-Corasick algorithm&lt;br /&gt;
* Exact string matching: Apostolico-Giancarlo algorithm&lt;br /&gt;
* Suffix trees: basic definition, naive algorithm to build&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 3, 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 26&#039;&#039;&#039;&lt;br /&gt;
* Module 1 Exam&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 9&#039;&#039;&#039;&lt;br /&gt;
* Suffix trees: basic definition, naive algorithm to build&lt;br /&gt;
* Suffix trees: Ukkonen&#039;s algorithm, applications&lt;br /&gt;
* Suffix arrays: building using suffix tree, exact string matching&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 5, 6, 7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 16&#039;&#039;&#039;&lt;br /&gt;
* Suffix arrays: building without suffix tree&lt;br /&gt;
* Dynamic programming: longest common subsequence, Levenstein distance&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 15&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 23&#039;&#039;&#039;&lt;br /&gt;
* Dynamic programming: two conveyors problem, 0-1 knapsack problem&lt;br /&gt;
* Greedy algorithm: activity selection problem, fraction knapsack problem, longest increasing subsequence, Huffman codes&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 15, 16&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 30&#039;&#039;&#039;&lt;br /&gt;
* Text compression, models: static, semistatic, adaptive, symbolwise models, dictionary models&lt;br /&gt;
* Serialization, tree serialization in semistatic Huffman codes&lt;br /&gt;
* Dictionary models: LZ-77, LZ-78, LZW&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 2, Atallah, ch. 12&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 7&#039;&#039;&#039;&lt;br /&gt;
* Quiz #2&lt;br /&gt;
* Dictionary models: LZW&lt;br /&gt;
* Symbolwise models: arithmetic coding, adaptive Huffman codes&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 2, Atallah, ch. 12&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 14&#039;&#039;&#039;&lt;br /&gt;
* Symbolwise models: adaptive Huffman codes&lt;br /&gt;
* Burrows-Wheeler transform&lt;br /&gt;
* Move-to-Front transform&lt;br /&gt;
* Run-Length Encoding&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 2, Atallah, ch. 12&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 11&#039;&#039;&#039;&lt;br /&gt;
* Graphs: main definitions, representation of graphs&lt;br /&gt;
* Breadth-first search&lt;br /&gt;
* Depth-first search, strongly connected components&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 22&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 17&#039;&#039;&#039;&lt;br /&gt;
* Topological sort&lt;br /&gt;
* Single-source shortest paths, Bellman-Ford algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 22, 24&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 31&#039;&#039;&#039;&lt;br /&gt;
* Single-source shortest paths, Bellman-Ford algorithm, Dijkstra&#039;s algorithm&lt;br /&gt;
* All-pairs shortest paths, &amp;quot;matrix multiplication&amp;quot;&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 24, 25&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feb 8&#039;&#039;&#039;&lt;br /&gt;
* All-pairs shortest paths, Floyd-Warshall algorithm, Johnson&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 25&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feb 15&#039;&#039;&#039;&lt;br /&gt;
* Quiz #3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feb 22&#039;&#039;&#039;&lt;br /&gt;
* Maximum flow: Ford-Fulkerson method, Edmonds-Karp algorithm&lt;br /&gt;
* Maximum bipartite matching: Ford-Fulkerson method, Kuhn&#039;s algorithm&lt;br /&gt;
* Minimum spanning trees: Prim&#039;s algorithm, Kruskal&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 22, 26&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mar 1&#039;&#039;&#039;&lt;br /&gt;
* Disjoint sets: linked list representation, disjoint-set forest&lt;br /&gt;
* Maximum flow: push-relabel algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 22, 26&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mar 14&#039;&#039;&#039;&lt;br /&gt;
* Preparing for the quiz&lt;br /&gt;
* All-pairs shortest paths, &amp;quot;matrix multiplication&amp;quot;, Johnson&#039;s algorithm&lt;br /&gt;
* Maximum bipartite matching: Kuhn&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 25, 26&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mar 15&#039;&#039;&#039;&lt;br /&gt;
* Quiz #4&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mar 22&#039;&#039;&#039;&lt;br /&gt;
* Big integers, main operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Knuth, vol.2, ch. 4.3 &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Apr 5&#039;&#039;&#039;&lt;br /&gt;
* Polynomials, coefficient representation, point-value representation, main operations&lt;br /&gt;
* Discrete Fourier transform&lt;br /&gt;
* Fast Fourier transform&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 30 &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Apr 12&#039;&#039;&#039;&lt;br /&gt;
* Discrete Fourier transform&lt;br /&gt;
* Fast Fourier transform&lt;br /&gt;
* Deterministic finite automata&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 30, Hopcroft, ch. 1, 2 &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Apr 19&#039;&#039;&#039;&lt;br /&gt;
* Deterministic finite automata&lt;br /&gt;
* Nondeterministic finite automata&lt;br /&gt;
* Equivalence of DFA and NFA&lt;br /&gt;
* Finite automata with epsilon-transitions&lt;br /&gt;
* Regular expressions&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Hopcroft, ch. 2, 3 &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Apr 26&#039;&#039;&#039;&lt;br /&gt;
* Regular expressions&lt;br /&gt;
* Converting DFA&#039;s to RE&lt;br /&gt;
* Converting RE to NFA with epsilon-transitions&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Hopcroft, ch. 3 &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;May 31&#039;&#039;&#039;&lt;br /&gt;
* Regular languages, the pumping lemma&lt;br /&gt;
* Rquivalence of automata&lt;br /&gt;
* Context-free languages&lt;br /&gt;
* Context-free grammar, derivations using a grammar&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Hopcroft, ch. 4, 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jun 7&#039;&#039;&#039;&lt;br /&gt;
* Derivations using a grammar, leftmost and rightmost derivations&lt;br /&gt;
* Parse trees&lt;br /&gt;
* Ambiguity in grammars and languages&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Hopcroft, ch. 5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 1==&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, heap sort (including building a heap), counting sort, radix sort&lt;br /&gt;
* Lower bounds of sorting using comparisons&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, main operations (search, insert, delete, rotate)&lt;br /&gt;
* AVL-trees, main operations (search, insert, delete)&lt;br /&gt;
* Red-black trees, main operations (search, insert)&lt;br /&gt;
* Treaps, main operations (search, insert, delete, split, merge)&lt;br /&gt;
* Tries, compact tries, main operations (search, insert, delete)&lt;br /&gt;
* 2-3-4 trees, main operations (search, insert, delete), transformation into red-black tree&lt;br /&gt;
* B-trees, main operations (search, insert, delete)&lt;br /&gt;
* Exact string matching: naive method, Z algorithm, Knuth-Morris-Pratt algorithm, Boyer-Moore algorithm&lt;br /&gt;
* Exact matching with a set of patterns: Aho-Corasick algorithm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 4==&lt;/div&gt;</summary>
		<author><name>Nkmakarov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2024/25&amp;diff=90680</id>
		<title>Algorithms and Data Structures DSBA 2024/25</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2024/25&amp;diff=90680"/>
		<updated>2025-04-21T13:37:32Z</updated>

		<summary type="html">&lt;p&gt;Nkmakarov: Update list of lectures&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
This page contains basic information for the course Algorithms and Data Structures in 2024/2025 academic year at Bachelor’s Programme in &#039;&#039;&#039;Data Science and Business Analytics&#039;&#039;&#039; (DSBA).&lt;br /&gt;
&lt;br /&gt;
The full syllabus can be accessed at [https://www.hse.ru/ba/data/courses/912653105.html this page]. &lt;br /&gt;
&lt;br /&gt;
In case you find any inconsistencies on this page, please, contact [https://t.me/l_AnnaPronina_l @l_AnnaPronina_l].&lt;br /&gt;
&lt;br /&gt;
= Teachers and assistants = &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Group !! 231 !! 232 !! 233 !! 234&lt;br /&gt;
|-&lt;br /&gt;
|| Lecturer &lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | [https://www.hse.ru/org/persons/528651897 Nikita Makarov]&lt;br /&gt;
|- &lt;br /&gt;
|-&lt;br /&gt;
|| Seminar Instructor &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | [https://www.hse.ru/org/persons/305061980 Andrey Borevskiy] &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | [https://www.hse.ru/org/persons/191485259 Vladimir Kurenkov] &lt;br /&gt;
|-&lt;br /&gt;
|| Teaching Assistant&lt;br /&gt;
|| Belikov Daniil &amp;lt;br&amp;gt; tg: [https://t.me/DanBel1kov @DanBel1kov]&lt;br /&gt;
|| Latyshev Ivan &amp;lt;br&amp;gt; tg: [https://t.me/ivan_latysh @ivan_latysh]&lt;br /&gt;
|| Gadaev Isa &amp;lt;br&amp;gt; tg: [https://t.me/elohimapproximation @elohimapproximation]&lt;br /&gt;
|| Pavlov Leonid &amp;lt;br&amp;gt; tg: [https://t.me/leon1dl @leon1dl]&lt;br /&gt;
|-&lt;br /&gt;
|| Head TA&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | Pronina Anna &amp;lt;br&amp;gt; tg: [https://t.me/l_AnnaPronina_l @l_AnnaPronina_l]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
You may find your grades [https://docs.google.com/spreadsheets/d/1JeoxJpMexYYpLPCNpzng5Xcr3SczH91BndCNhy9Cs-I/edit?gid=11487808#gid=11487808 here].&lt;br /&gt;
&lt;br /&gt;
== Formula ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Final Grade = M1 * 0.3 + M4 * 0.7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mi = E * 0.4 + HW * 0.2 + Q * 0.2 + S * 0.2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039; - exam grade: rational number [0, 10] = sum of the grade for the oral and written parts, out of 5 each&lt;br /&gt;
* &#039;&#039;&#039;HW&#039;&#039;&#039; - homework grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;Q&#039;&#039;&#039; - lecture quizzes grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039; - seminar practice grade: rational number [0, 10]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;rounding&#039;&#039;&#039;: each element in the formulae is rounded up&lt;br /&gt;
&lt;br /&gt;
== Plagiarism policy ==&lt;br /&gt;
&lt;br /&gt;
If plagiarism is detected, the assessment element will be assigned a score of &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the student is suspected of preparing the task not on his own, the teacher has the right to initiate additional verification or defense of this particular assessment element. Then such an assessment element will be graded based on the additional verification or the defense.&lt;br /&gt;
&lt;br /&gt;
= Home assignments =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Contest !! Deadline !! Topic&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/68732/enter/ Contest 1] || 16 oct 2024, 23:59:59  || Sorting Algorithms&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/69563/enter/ Contest 2] || 25 oct 2024, 23:59:59  || Trees&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/70462/enter/ Contest 3] || 15 nov 2024, 23:59:59  || String Algorithms I&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/70464/enter/ Contest 4] || 22 nov 2024, 23:59:59  || String Algorithms II&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/71931/enter/ Contest 5] || 8 dec 2024, 23:59:59  || Dynamic Programming&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/72567/enter/ Contest 6] || 18 dec 2024, 23:59:59  || Dynamic Programming&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/75049/enter/ Contest 7] || 22 feb 2024, 23:59:59  || Graphs, DFS&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/75538/enter/ Contest 8] || 12 mar 2024, 23:59:59  || Graphs, BFS, Dijkstra, Bellman-Ford, Floyd&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Lectures = &lt;br /&gt;
Lectures are held on Saturdays from 14:40 till 17:40.&lt;br /&gt;
&lt;br /&gt;
== Lecture Materials ==&lt;br /&gt;
&#039;&#039;&#039;Sep 7&#039;&#039;&#039;&lt;br /&gt;
* Introduction to the course&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, heap sort (including building a heap)&lt;br /&gt;
* Lower bounds of sorting&lt;br /&gt;
* Counting sort&lt;br /&gt;
* Radix sort&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 2, 3, 6, 8&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 14&#039;&#039;&#039;&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, main operations (insert, delete, rotate)&lt;br /&gt;
* AVL-trees, main operations&lt;br /&gt;
* Red-black trees, main definitions&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 12, 13&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 21&#039;&#039;&#039;&lt;br /&gt;
* Red-black trees, main operations&lt;br /&gt;
* Treaps, main operations&lt;br /&gt;
* Tries, main operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 13, Mehta, ch. 28&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 28&#039;&#039;&#039;&lt;br /&gt;
* Tries, compact tries, PATRICIA trie, main operations&lt;br /&gt;
* 2-3-4 trees, main operations&lt;br /&gt;
* B-trees, main operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 5&#039;&#039;&#039;&lt;br /&gt;
* Quiz #1&lt;br /&gt;
* Exact string matching: naive method, Z algorithm, Knuth-Morris-Pratt algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 1, 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 12&#039;&#039;&#039;&lt;br /&gt;
* Exact string matching: Knuth-Morris-Pratt algorithm, preprocessing for real-time string matching, Boyer-Moore algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 19&#039;&#039;&#039;&lt;br /&gt;
* Exact matching with a set of patterns: Aho-Corasick algorithm&lt;br /&gt;
* Exact string matching: Apostolico-Giancarlo algorithm&lt;br /&gt;
* Suffix trees: basic definition, naive algorithm to build&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 3, 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 26&#039;&#039;&#039;&lt;br /&gt;
* Module 1 Exam&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 9&#039;&#039;&#039;&lt;br /&gt;
* Suffix trees: basic definition, naive algorithm to build&lt;br /&gt;
* Suffix trees: Ukkonen&#039;s algorithm, applications&lt;br /&gt;
* Suffix arrays: building using suffix tree, exact string matching&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 5, 6, 7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 16&#039;&#039;&#039;&lt;br /&gt;
* Suffix arrays: building without suffix tree&lt;br /&gt;
* Dynamic programming: longest common subsequence, Levenstein distance&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 15&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 23&#039;&#039;&#039;&lt;br /&gt;
* Dynamic programming: two conveyors problem, 0-1 knapsack problem&lt;br /&gt;
* Greedy algorithm: activity selection problem, fraction knapsack problem, longest increasing subsequence, Huffman codes&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 15, 16&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 30&#039;&#039;&#039;&lt;br /&gt;
* Text compression, models: static, semistatic, adaptive, symbolwise models, dictionary models&lt;br /&gt;
* Serialization, tree serialization in semistatic Huffman codes&lt;br /&gt;
* Dictionary models: LZ-77, LZ-78, LZW&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 2, Atallah, ch. 12&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 7&#039;&#039;&#039;&lt;br /&gt;
* Quiz #2&lt;br /&gt;
* Dictionary models: LZW&lt;br /&gt;
* Symbolwise models: arithmetic coding, adaptive Huffman codes&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 2, Atallah, ch. 12&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 14&#039;&#039;&#039;&lt;br /&gt;
* Symbolwise models: adaptive Huffman codes&lt;br /&gt;
* Burrows-Wheeler transform&lt;br /&gt;
* Move-to-Front transform&lt;br /&gt;
* Run-Length Encoding&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 2, Atallah, ch. 12&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 11&#039;&#039;&#039;&lt;br /&gt;
* Graphs: main definitions, representation of graphs&lt;br /&gt;
* Breadth-first search&lt;br /&gt;
* Depth-first search, strongly connected components&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 22&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 17&#039;&#039;&#039;&lt;br /&gt;
* Topological sort&lt;br /&gt;
* Single-source shortest paths, Bellman-Ford algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 22, 24&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 31&#039;&#039;&#039;&lt;br /&gt;
* Single-source shortest paths, Bellman-Ford algorithm, Dijkstra&#039;s algorithm&lt;br /&gt;
* All-pairs shortest paths, &amp;quot;matrix multiplication&amp;quot;&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 24, 25&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feb 8&#039;&#039;&#039;&lt;br /&gt;
* All-pairs shortest paths, Floyd-Warshall algorithm, Johnson&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 25&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feb 15&#039;&#039;&#039;&lt;br /&gt;
* Quiz #3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feb 22&#039;&#039;&#039;&lt;br /&gt;
* Maximum flow: Ford-Fulkerson method, Edmonds-Karp algorithm&lt;br /&gt;
* Maximum bipartite matching: Ford-Fulkerson method, Kuhn&#039;s algorithm&lt;br /&gt;
* Minimum spanning trees: Prim&#039;s algorithm, Kruskal&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 22, 26&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mar 1&#039;&#039;&#039;&lt;br /&gt;
* Disjoint sets: linked list representation, disjoint-set forest&lt;br /&gt;
* Maximum flow: push-relabel algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 22, 26&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mar 14&#039;&#039;&#039;&lt;br /&gt;
* Preparing for the quiz&lt;br /&gt;
* All-pairs shortest paths, &amp;quot;matrix multiplication&amp;quot;, Johnson&#039;s algorithm&lt;br /&gt;
* Maximum bipartite matching: Kuhn&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 25, 26&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mar 15&#039;&#039;&#039;&lt;br /&gt;
* Quiz #4&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mar 22&#039;&#039;&#039;&lt;br /&gt;
* Big integers, main operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Knuth, vol.2, ch. 4.3 &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Apr 5&#039;&#039;&#039;&lt;br /&gt;
* Polynomials, coefficient representation, point-value representation, main operations&lt;br /&gt;
* Discrete Fourier transform&lt;br /&gt;
* Fast Fourier transform&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 30 &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Apr 12&#039;&#039;&#039;&lt;br /&gt;
* Discrete Fourier transform&lt;br /&gt;
* Fast Fourier transform&lt;br /&gt;
* Deterministic finite automata&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 30, Hopcroft, ch. 1, 2 &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Apr 19&#039;&#039;&#039;&lt;br /&gt;
* Deterministic finite automata&lt;br /&gt;
* Nondeterministic finite automata&lt;br /&gt;
* Equivalence of DFA and NFA&lt;br /&gt;
* Finite automata with epsilon-transitions&lt;br /&gt;
* Regular expressions&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Hopcroft, ch. 2, 3 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 1==&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, heap sort (including building a heap), counting sort, radix sort&lt;br /&gt;
* Lower bounds of sorting using comparisons&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, main operations (search, insert, delete, rotate)&lt;br /&gt;
* AVL-trees, main operations (search, insert, delete)&lt;br /&gt;
* Red-black trees, main operations (search, insert)&lt;br /&gt;
* Treaps, main operations (search, insert, delete, split, merge)&lt;br /&gt;
* Tries, compact tries, main operations (search, insert, delete)&lt;br /&gt;
* 2-3-4 trees, main operations (search, insert, delete), transformation into red-black tree&lt;br /&gt;
* B-trees, main operations (search, insert, delete)&lt;br /&gt;
* Exact string matching: naive method, Z algorithm, Knuth-Morris-Pratt algorithm, Boyer-Moore algorithm&lt;br /&gt;
* Exact matching with a set of patterns: Aho-Corasick algorithm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 4==&lt;/div&gt;</summary>
		<author><name>Nkmakarov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2024/25&amp;diff=90570</id>
		<title>Algorithms and Data Structures DSBA 2024/25</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2024/25&amp;diff=90570"/>
		<updated>2025-04-12T13:05:15Z</updated>

		<summary type="html">&lt;p&gt;Nkmakarov: Update list of lectures&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
This page contains basic information for the course Algorithms and Data Structures in 2024/2025 academic year at Bachelor’s Programme in &#039;&#039;&#039;Data Science and Business Analytics&#039;&#039;&#039; (DSBA).&lt;br /&gt;
&lt;br /&gt;
The full syllabus can be accessed at [https://www.hse.ru/ba/data/courses/912653105.html this page]. &lt;br /&gt;
&lt;br /&gt;
In case you find any inconsistencies on this page, please, contact [https://t.me/l_AnnaPronina_l @l_AnnaPronina_l].&lt;br /&gt;
&lt;br /&gt;
= Teachers and assistants = &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Group !! 231 !! 232 !! 233 !! 234&lt;br /&gt;
|-&lt;br /&gt;
|| Lecturer &lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | [https://www.hse.ru/org/persons/528651897 Nikita Makarov]&lt;br /&gt;
|- &lt;br /&gt;
|-&lt;br /&gt;
|| Seminar Instructor &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | [https://www.hse.ru/org/persons/305061980 Andrey Borevskiy] &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | [https://www.hse.ru/org/persons/191485259 Vladimir Kurenkov] &lt;br /&gt;
|-&lt;br /&gt;
|| Teaching Assistant&lt;br /&gt;
|| Belikov Daniil &amp;lt;br&amp;gt; tg: [https://t.me/DanBel1kov @DanBel1kov]&lt;br /&gt;
|| Latyshev Ivan &amp;lt;br&amp;gt; tg: [https://t.me/ivan_latysh @ivan_latysh]&lt;br /&gt;
|| Gadaev Isa &amp;lt;br&amp;gt; tg: [https://t.me/elohimapproximation @elohimapproximation]&lt;br /&gt;
|| Pavlov Leonid &amp;lt;br&amp;gt; tg: [https://t.me/leon1dl @leon1dl]&lt;br /&gt;
|-&lt;br /&gt;
|| Head TA&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | Pronina Anna &amp;lt;br&amp;gt; tg: [https://t.me/l_AnnaPronina_l @l_AnnaPronina_l]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
You may find your grades [https://docs.google.com/spreadsheets/d/1JeoxJpMexYYpLPCNpzng5Xcr3SczH91BndCNhy9Cs-I/edit?gid=11487808#gid=11487808 here].&lt;br /&gt;
&lt;br /&gt;
== Formula ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Final Grade = M1 * 0.3 + M4 * 0.7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mi = E * 0.4 + HW * 0.2 + Q * 0.2 + S * 0.2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039; - exam grade: rational number [0, 10] = sum of the grade for the oral and written parts, out of 5 each&lt;br /&gt;
* &#039;&#039;&#039;HW&#039;&#039;&#039; - homework grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;Q&#039;&#039;&#039; - lecture quizzes grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039; - seminar practice grade: rational number [0, 10]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;rounding&#039;&#039;&#039;: each element in the formulae is rounded up&lt;br /&gt;
&lt;br /&gt;
== Plagiarism policy ==&lt;br /&gt;
&lt;br /&gt;
If plagiarism is detected, the assessment element will be assigned a score of &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the student is suspected of preparing the task not on his own, the teacher has the right to initiate additional verification or defense of this particular assessment element. Then such an assessment element will be graded based on the additional verification or the defense.&lt;br /&gt;
&lt;br /&gt;
= Home assignments =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Contest !! Deadline !! Topic&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/68732/enter/ Contest 1] || 16 oct 2024, 23:59:59  || Sorting Algorithms&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/69563/enter/ Contest 2] || 25 oct 2024, 23:59:59  || Trees&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/70462/enter/ Contest 3] || 15 nov 2024, 23:59:59  || String Algorithms I&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/70464/enter/ Contest 4] || 22 nov 2024, 23:59:59  || String Algorithms II&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/71931/enter/ Contest 5] || 8 dec 2024, 23:59:59  || Dynamic Programming&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/72567/enter/ Contest 6] || 18 dec 2024, 23:59:59  || Dynamic Programming&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/75049/enter/ Contest 7] || 22 feb 2024, 23:59:59  || Graphs, DFS&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/75538/enter/ Contest 8] || 12 mar 2024, 23:59:59  || Graphs, BFS, Dijkstra, Bellman-Ford, Floyd&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Lectures = &lt;br /&gt;
Lectures are held on Saturdays from 14:40 till 17:40.&lt;br /&gt;
&lt;br /&gt;
== Lecture Materials ==&lt;br /&gt;
&#039;&#039;&#039;Sep 7&#039;&#039;&#039;&lt;br /&gt;
* Introduction to the course&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, heap sort (including building a heap)&lt;br /&gt;
* Lower bounds of sorting&lt;br /&gt;
* Counting sort&lt;br /&gt;
* Radix sort&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 2, 3, 6, 8&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 14&#039;&#039;&#039;&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, main operations (insert, delete, rotate)&lt;br /&gt;
* AVL-trees, main operations&lt;br /&gt;
* Red-black trees, main definitions&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 12, 13&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 21&#039;&#039;&#039;&lt;br /&gt;
* Red-black trees, main operations&lt;br /&gt;
* Treaps, main operations&lt;br /&gt;
* Tries, main operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 13, Mehta, ch. 28&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 28&#039;&#039;&#039;&lt;br /&gt;
* Tries, compact tries, PATRICIA trie, main operations&lt;br /&gt;
* 2-3-4 trees, main operations&lt;br /&gt;
* B-trees, main operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 5&#039;&#039;&#039;&lt;br /&gt;
* Quiz #1&lt;br /&gt;
* Exact string matching: naive method, Z algorithm, Knuth-Morris-Pratt algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 1, 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 12&#039;&#039;&#039;&lt;br /&gt;
* Exact string matching: Knuth-Morris-Pratt algorithm, preprocessing for real-time string matching, Boyer-Moore algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 19&#039;&#039;&#039;&lt;br /&gt;
* Exact matching with a set of patterns: Aho-Corasick algorithm&lt;br /&gt;
* Exact string matching: Apostolico-Giancarlo algorithm&lt;br /&gt;
* Suffix trees: basic definition, naive algorithm to build&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 3, 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 26&#039;&#039;&#039;&lt;br /&gt;
* Module 1 Exam&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 9&#039;&#039;&#039;&lt;br /&gt;
* Suffix trees: basic definition, naive algorithm to build&lt;br /&gt;
* Suffix trees: Ukkonen&#039;s algorithm, applications&lt;br /&gt;
* Suffix arrays: building using suffix tree, exact string matching&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 5, 6, 7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 16&#039;&#039;&#039;&lt;br /&gt;
* Suffix arrays: building without suffix tree&lt;br /&gt;
* Dynamic programming: longest common subsequence, Levenstein distance&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 15&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 23&#039;&#039;&#039;&lt;br /&gt;
* Dynamic programming: two conveyors problem, 0-1 knapsack problem&lt;br /&gt;
* Greedy algorithm: activity selection problem, fraction knapsack problem, longest increasing subsequence, Huffman codes&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 15, 16&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 30&#039;&#039;&#039;&lt;br /&gt;
* Text compression, models: static, semistatic, adaptive, symbolwise models, dictionary models&lt;br /&gt;
* Serialization, tree serialization in semistatic Huffman codes&lt;br /&gt;
* Dictionary models: LZ-77, LZ-78, LZW&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 2, Atallah, ch. 12&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 7&#039;&#039;&#039;&lt;br /&gt;
* Quiz #2&lt;br /&gt;
* Dictionary models: LZW&lt;br /&gt;
* Symbolwise models: arithmetic coding, adaptive Huffman codes&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 2, Atallah, ch. 12&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 14&#039;&#039;&#039;&lt;br /&gt;
* Symbolwise models: adaptive Huffman codes&lt;br /&gt;
* Burrows-Wheeler transform&lt;br /&gt;
* Move-to-Front transform&lt;br /&gt;
* Run-Length Encoding&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 2, Atallah, ch. 12&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 11&#039;&#039;&#039;&lt;br /&gt;
* Graphs: main definitions, representation of graphs&lt;br /&gt;
* Breadth-first search&lt;br /&gt;
* Depth-first search, strongly connected components&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 22&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 17&#039;&#039;&#039;&lt;br /&gt;
* Topological sort&lt;br /&gt;
* Single-source shortest paths, Bellman-Ford algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 22, 24&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 31&#039;&#039;&#039;&lt;br /&gt;
* Single-source shortest paths, Bellman-Ford algorithm, Dijkstra&#039;s algorithm&lt;br /&gt;
* All-pairs shortest paths, &amp;quot;matrix multiplication&amp;quot;&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 24, 25&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feb 8&#039;&#039;&#039;&lt;br /&gt;
* All-pairs shortest paths, Floyd-Warshall algorithm, Johnson&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 25&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feb 15&#039;&#039;&#039;&lt;br /&gt;
* Quiz #3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feb 22&#039;&#039;&#039;&lt;br /&gt;
* Maximum flow: Ford-Fulkerson method, Edmonds-Karp algorithm&lt;br /&gt;
* Maximum bipartite matching: Ford-Fulkerson method, Kuhn&#039;s algorithm&lt;br /&gt;
* Minimum spanning trees: Prim&#039;s algorithm, Kruskal&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 22, 26&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mar 1&#039;&#039;&#039;&lt;br /&gt;
* Disjoint sets: linked list representation, disjoint-set forest&lt;br /&gt;
* Maximum flow: push-relabel algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 22, 26&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mar 14&#039;&#039;&#039;&lt;br /&gt;
* Preparing for the quiz&lt;br /&gt;
* All-pairs shortest paths, &amp;quot;matrix multiplication&amp;quot;, Johnson&#039;s algorithm&lt;br /&gt;
* Maximum bipartite matching: Kuhn&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 25, 26&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mar 15&#039;&#039;&#039;&lt;br /&gt;
* Quiz #4&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mar 22&#039;&#039;&#039;&lt;br /&gt;
* Big integers, main operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Knuth, vol.2, ch. 4.3 &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Apr 5&#039;&#039;&#039;&lt;br /&gt;
* Polynomials, coefficient representation, point-value representation, main operations&lt;br /&gt;
* Discrete Fourier transform&lt;br /&gt;
* Fast Fourier transform&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 30 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 1==&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, heap sort (including building a heap), counting sort, radix sort&lt;br /&gt;
* Lower bounds of sorting using comparisons&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, main operations (search, insert, delete, rotate)&lt;br /&gt;
* AVL-trees, main operations (search, insert, delete)&lt;br /&gt;
* Red-black trees, main operations (search, insert)&lt;br /&gt;
* Treaps, main operations (search, insert, delete, split, merge)&lt;br /&gt;
* Tries, compact tries, main operations (search, insert, delete)&lt;br /&gt;
* 2-3-4 trees, main operations (search, insert, delete), transformation into red-black tree&lt;br /&gt;
* B-trees, main operations (search, insert, delete)&lt;br /&gt;
* Exact string matching: naive method, Z algorithm, Knuth-Morris-Pratt algorithm, Boyer-Moore algorithm&lt;br /&gt;
* Exact matching with a set of patterns: Aho-Corasick algorithm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 4==&lt;/div&gt;</summary>
		<author><name>Nkmakarov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2024/25&amp;diff=90206</id>
		<title>Algorithms and Data Structures DSBA 2024/25</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2024/25&amp;diff=90206"/>
		<updated>2025-03-17T12:28:10Z</updated>

		<summary type="html">&lt;p&gt;Nkmakarov: Update list of lectures&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
This page contains basic information for the course Algorithms and Data Structures in 2024/2025 academic year at Bachelor’s Programme in &#039;&#039;&#039;Data Science and Business Analytics&#039;&#039;&#039; (DSBA).&lt;br /&gt;
&lt;br /&gt;
The full syllabus can be accessed at [https://www.hse.ru/ba/data/courses/912653105.html this page]. &lt;br /&gt;
&lt;br /&gt;
In case you find any inconsistencies on this page, please, contact [https://t.me/l_AnnaPronina_l @l_AnnaPronina_l].&lt;br /&gt;
&lt;br /&gt;
= Teachers and assistants = &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Group !! 231 !! 232 !! 233 !! 234&lt;br /&gt;
|-&lt;br /&gt;
|| Lecturer &lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | [https://www.hse.ru/org/persons/528651897 Nikita Makarov]&lt;br /&gt;
|- &lt;br /&gt;
|-&lt;br /&gt;
|| Seminar Instructor &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | [https://www.hse.ru/org/persons/305061980 Andrey Borevskiy] &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | [https://www.hse.ru/org/persons/191485259 Vladimir Kurenkov] &lt;br /&gt;
|-&lt;br /&gt;
|| Teaching Assistant&lt;br /&gt;
|| Belikov Daniil &amp;lt;br&amp;gt; tg: [https://t.me/DanBel1kov @DanBel1kov]&lt;br /&gt;
|| Latyshev Ivan &amp;lt;br&amp;gt; tg: [https://t.me/ivan_latysh @ivan_latysh]&lt;br /&gt;
|| Gadaev Isa &amp;lt;br&amp;gt; tg: [https://t.me/elohimapproximation @elohimapproximation]&lt;br /&gt;
|| Pavlov Leonid &amp;lt;br&amp;gt; tg: [https://t.me/leon1dl @leon1dl]&lt;br /&gt;
|-&lt;br /&gt;
|| Head TA&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | Pronina Anna &amp;lt;br&amp;gt; tg: [https://t.me/l_AnnaPronina_l @l_AnnaPronina_l]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
You may find your grades [https://docs.google.com/spreadsheets/d/1JeoxJpMexYYpLPCNpzng5Xcr3SczH91BndCNhy9Cs-I/edit?gid=11487808#gid=11487808 here].&lt;br /&gt;
&lt;br /&gt;
== Formula ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Final Grade = M1 * 0.3 + M4 * 0.7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mi = E * 0.4 + HW * 0.2 + Q * 0.2 + S * 0.2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039; - exam grade: rational number [0, 10] = sum of the grade for the oral and written parts, out of 5 each&lt;br /&gt;
* &#039;&#039;&#039;HW&#039;&#039;&#039; - homework grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;Q&#039;&#039;&#039; - lecture quizzes grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039; - seminar practice grade: rational number [0, 10]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;rounding&#039;&#039;&#039;: each element in the formulae is rounded up&lt;br /&gt;
&lt;br /&gt;
== Plagiarism policy ==&lt;br /&gt;
&lt;br /&gt;
If plagiarism is detected, the assessment element will be assigned a score of &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the student is suspected of preparing the task not on his own, the teacher has the right to initiate additional verification or defense of this particular assessment element. Then such an assessment element will be graded based on the additional verification or the defense.&lt;br /&gt;
&lt;br /&gt;
= Home assignments =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Contest !! Deadline !! Topic&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/68732/enter/ Contest 1] || 16 oct 2024, 23:59:59  || Sorting Algorithms&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/69563/enter/ Contest 2] || 25 oct 2024, 23:59:59  || Trees&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/70462/enter/ Contest 3] || 15 nov 2024, 23:59:59  || String Algorithms I&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/70464/enter/ Contest 4] || 22 nov 2024, 23:59:59  || String Algorithms II&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/71931/enter/ Contest 5] || 8 dec 2024, 23:59:59  || Dynamic Programming&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/72567/enter/ Contest 6] || 18 dec 2024, 23:59:59  || Dynamic Programming&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/75049/enter/ Contest 7] || 22 feb 2024, 23:59:59  || Graphs, DFS&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/75538/enter/ Contest 8] || 12 mar 2024, 23:59:59  || Graphs, BFS, Dijkstra, Bellman-Ford, Floyd&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Lectures = &lt;br /&gt;
Lectures are held on Saturdays from 14:40 till 17:40.&lt;br /&gt;
&lt;br /&gt;
== Lecture Materials ==&lt;br /&gt;
&#039;&#039;&#039;Sep 7&#039;&#039;&#039;&lt;br /&gt;
* Introduction to the course&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, heap sort (including building a heap)&lt;br /&gt;
* Lower bounds of sorting&lt;br /&gt;
* Counting sort&lt;br /&gt;
* Radix sort&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 2, 3, 6, 8&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 14&#039;&#039;&#039;&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, main operations (insert, delete, rotate)&lt;br /&gt;
* AVL-trees, main operations&lt;br /&gt;
* Red-black trees, main definitions&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 12, 13&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 21&#039;&#039;&#039;&lt;br /&gt;
* Red-black trees, main operations&lt;br /&gt;
* Treaps, main operations&lt;br /&gt;
* Tries, main operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 13, Mehta, ch. 28&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 28&#039;&#039;&#039;&lt;br /&gt;
* Tries, compact tries, PATRICIA trie, main operations&lt;br /&gt;
* 2-3-4 trees, main operations&lt;br /&gt;
* B-trees, main operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 5&#039;&#039;&#039;&lt;br /&gt;
* Quiz #1&lt;br /&gt;
* Exact string matching: naive method, Z algorithm, Knuth-Morris-Pratt algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 1, 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 12&#039;&#039;&#039;&lt;br /&gt;
* Exact string matching: Knuth-Morris-Pratt algorithm, preprocessing for real-time string matching, Boyer-Moore algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 19&#039;&#039;&#039;&lt;br /&gt;
* Exact matching with a set of patterns: Aho-Corasick algorithm&lt;br /&gt;
* Exact string matching: Apostolico-Giancarlo algorithm&lt;br /&gt;
* Suffix trees: basic definition, naive algorithm to build&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 3, 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 26&#039;&#039;&#039;&lt;br /&gt;
* Module 1 Exam&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 9&#039;&#039;&#039;&lt;br /&gt;
* Suffix trees: basic definition, naive algorithm to build&lt;br /&gt;
* Suffix trees: Ukkonen&#039;s algorithm, applications&lt;br /&gt;
* Suffix arrays: building using suffix tree, exact string matching&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 5, 6, 7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 16&#039;&#039;&#039;&lt;br /&gt;
* Suffix arrays: building without suffix tree&lt;br /&gt;
* Dynamic programming: longest common subsequence, Levenstein distance&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 15&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 23&#039;&#039;&#039;&lt;br /&gt;
* Dynamic programming: two conveyors problem, 0-1 knapsack problem&lt;br /&gt;
* Greedy algorithm: activity selection problem, fraction knapsack problem, longest increasing subsequence, Huffman codes&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 15, 16&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 30&#039;&#039;&#039;&lt;br /&gt;
* Text compression, models: static, semistatic, adaptive, symbolwise models, dictionary models&lt;br /&gt;
* Serialization, tree serialization in semistatic Huffman codes&lt;br /&gt;
* Dictionary models: LZ-77, LZ-78, LZW&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 2, Atallah, ch. 12&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 7&#039;&#039;&#039;&lt;br /&gt;
* Quiz #2&lt;br /&gt;
* Dictionary models: LZW&lt;br /&gt;
* Symbolwise models: arithmetic coding, adaptive Huffman codes&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 2, Atallah, ch. 12&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 14&#039;&#039;&#039;&lt;br /&gt;
* Symbolwise models: adaptive Huffman codes&lt;br /&gt;
* Burrows-Wheeler transform&lt;br /&gt;
* Move-to-Front transform&lt;br /&gt;
* Run-Length Encoding&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 2, Atallah, ch. 12&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 11&#039;&#039;&#039;&lt;br /&gt;
* Graphs: main definitions, representation of graphs&lt;br /&gt;
* Breadth-first search&lt;br /&gt;
* Depth-first search, strongly connected components&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 22&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 17&#039;&#039;&#039;&lt;br /&gt;
* Topological sort&lt;br /&gt;
* Single-source shortest paths, Bellman-Ford algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 22, 24&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 31&#039;&#039;&#039;&lt;br /&gt;
* Single-source shortest paths, Bellman-Ford algorithm, Dijkstra&#039;s algorithm&lt;br /&gt;
* All-pairs shortest paths, &amp;quot;matrix multiplication&amp;quot;&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 24, 25&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feb 8&#039;&#039;&#039;&lt;br /&gt;
* All-pairs shortest paths, Floyd-Warshall algorithm, Johnson&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 25&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feb 15&#039;&#039;&#039;&lt;br /&gt;
* Quiz #3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feb 22&#039;&#039;&#039;&lt;br /&gt;
* Maximum flow: Ford-Fulkerson method, Edmonds-Karp algorithm&lt;br /&gt;
* Maximum bipartite matching: Ford-Fulkerson method, Kuhn&#039;s algorithm&lt;br /&gt;
* Minimum spanning trees: Prim&#039;s algorithm, Kruskal&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 22, 26&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mar 1&#039;&#039;&#039;&lt;br /&gt;
* Disjoint sets: linked list representation, disjoint-set forest&lt;br /&gt;
* Maximum flow: push-relabel algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 22, 26&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mar 14&#039;&#039;&#039;&lt;br /&gt;
* Preparing for the quiz&lt;br /&gt;
* All-pairs shortest paths, &amp;quot;matrix multiplication&amp;quot;, Johnson&#039;s algorithm&lt;br /&gt;
* Maximum bipartite matching: Kuhn&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 25, 26&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mar 15&#039;&#039;&#039;&lt;br /&gt;
* Quiz #4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 1==&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, heap sort (including building a heap), counting sort, radix sort&lt;br /&gt;
* Lower bounds of sorting using comparisons&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, main operations (search, insert, delete, rotate)&lt;br /&gt;
* AVL-trees, main operations (search, insert, delete)&lt;br /&gt;
* Red-black trees, main operations (search, insert)&lt;br /&gt;
* Treaps, main operations (search, insert, delete, split, merge)&lt;br /&gt;
* Tries, compact tries, main operations (search, insert, delete)&lt;br /&gt;
* 2-3-4 trees, main operations (search, insert, delete), transformation into red-black tree&lt;br /&gt;
* B-trees, main operations (search, insert, delete)&lt;br /&gt;
* Exact string matching: naive method, Z algorithm, Knuth-Morris-Pratt algorithm, Boyer-Moore algorithm&lt;br /&gt;
* Exact matching with a set of patterns: Aho-Corasick algorithm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 4==&lt;/div&gt;</summary>
		<author><name>Nkmakarov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2024/25&amp;diff=89936</id>
		<title>Algorithms and Data Structures DSBA 2024/25</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2024/25&amp;diff=89936"/>
		<updated>2025-02-27T15:29:45Z</updated>

		<summary type="html">&lt;p&gt;Nkmakarov: Update list of lectures&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
This page contains basic information for the course Algorithms and Data Structures in 2024/2025 academic year at Bachelor’s Programme in &#039;&#039;&#039;Data Science and Business Analytics&#039;&#039;&#039; (DSBA).&lt;br /&gt;
&lt;br /&gt;
The full syllabus can be accessed at [https://www.hse.ru/ba/data/courses/912653105.html this page]. &lt;br /&gt;
&lt;br /&gt;
In case you find any inconsistencies on this page, please, contact [https://t.me/l_AnnaPronina_l @l_AnnaPronina_l].&lt;br /&gt;
&lt;br /&gt;
= Teachers and assistants = &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Group !! 231 !! 232 !! 233 !! 234&lt;br /&gt;
|-&lt;br /&gt;
|| Lecturer &lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | [https://www.hse.ru/org/persons/528651897 Nikita Makarov]&lt;br /&gt;
|- &lt;br /&gt;
|-&lt;br /&gt;
|| Seminar Instructor &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | [https://www.hse.ru/org/persons/305061980 Andrey Borevskiy] &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | [https://www.hse.ru/org/persons/191485259 Vladimir Kurenkov] &lt;br /&gt;
|-&lt;br /&gt;
|| Teaching Assistant&lt;br /&gt;
|| Belikov Daniil &amp;lt;br&amp;gt; tg: [https://t.me/DanBel1kov @DanBel1kov]&lt;br /&gt;
|| Latyshev Ivan &amp;lt;br&amp;gt; tg: [https://t.me/ivan_latysh @ivan_latysh]&lt;br /&gt;
|| Gadaev Isa &amp;lt;br&amp;gt; tg: [https://t.me/elohimapproximation @elohimapproximation]&lt;br /&gt;
|| Pavlov Leonid &amp;lt;br&amp;gt; tg: [https://t.me/leon1dl @leon1dl]&lt;br /&gt;
|-&lt;br /&gt;
|| Head TA&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | Pronina Anna &amp;lt;br&amp;gt; tg: [https://t.me/l_AnnaPronina_l @l_AnnaPronina_l]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
You may find your grades [https://docs.google.com/spreadsheets/d/1JeoxJpMexYYpLPCNpzng5Xcr3SczH91BndCNhy9Cs-I/edit?gid=11487808#gid=11487808 here].&lt;br /&gt;
&lt;br /&gt;
== Formula ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Final Grade = M1 * 0.3 + M4 * 0.7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mi = E * 0.4 + HW * 0.2 + Q * 0.2 + S * 0.2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039; - exam grade: rational number [0, 10] = sum of the grade for the oral and written parts, out of 5 each&lt;br /&gt;
* &#039;&#039;&#039;HW&#039;&#039;&#039; - homework grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;Q&#039;&#039;&#039; - lecture quizzes grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039; - seminar practice grade: rational number [0, 10]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;rounding&#039;&#039;&#039;: each element in the formulae is rounded up&lt;br /&gt;
&lt;br /&gt;
== Plagiarism policy ==&lt;br /&gt;
&lt;br /&gt;
If plagiarism is detected, the assessment element will be assigned a score of &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the student is suspected of preparing the task not on his own, the teacher has the right to initiate additional verification or defense of this particular assessment element. Then such an assessment element will be graded based on the additional verification or the defense.&lt;br /&gt;
&lt;br /&gt;
= Home assignments =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Contest !! Deadline !! Topic&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/68732/enter/ Contest 1] || 16 oct 2024, 23:59:59  || Sorting Algorithms&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/69563/enter/ Contest 2] || 25 oct 2024, 23:59:59  || Trees&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/70462/enter/ Contest 3] || 15 nov 2024, 23:59:59  || String Algorithms I&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/70464/enter/ Contest 4] || 22 nov 2024, 23:59:59  || String Algorithms II&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/71931/enter/ Contest 5] || 8 dec 2024, 23:59:59  || Dynamic Programming&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/72567/enter/ Contest 6] || 18 dec 2024, 23:59:59  || Dynamic Programming&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/75049/enter/ Contest 7] || 22 feb 2024, 23:59:59  || Graphs, DFS&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Lectures = &lt;br /&gt;
Lectures are held on Saturdays from 14:40 till 17:40.&lt;br /&gt;
&lt;br /&gt;
== Lecture Materials ==&lt;br /&gt;
&#039;&#039;&#039;Sep 7&#039;&#039;&#039;&lt;br /&gt;
* Introduction to the course&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, heap sort (including building a heap)&lt;br /&gt;
* Lower bounds of sorting&lt;br /&gt;
* Counting sort&lt;br /&gt;
* Radix sort&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 2, 3, 6, 8&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 14&#039;&#039;&#039;&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, main operations (insert, delete, rotate)&lt;br /&gt;
* AVL-trees, main operations&lt;br /&gt;
* Red-black trees, main definitions&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 12, 13&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 21&#039;&#039;&#039;&lt;br /&gt;
* Red-black trees, main operations&lt;br /&gt;
* Treaps, main operations&lt;br /&gt;
* Tries, main operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 13, Mehta, ch. 28&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 28&#039;&#039;&#039;&lt;br /&gt;
* Tries, compact tries, PATRICIA trie, main operations&lt;br /&gt;
* 2-3-4 trees, main operations&lt;br /&gt;
* B-trees, main operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 5&#039;&#039;&#039;&lt;br /&gt;
* Quiz #1&lt;br /&gt;
* Exact string matching: naive method, Z algorithm, Knuth-Morris-Pratt algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 1, 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 12&#039;&#039;&#039;&lt;br /&gt;
* Exact string matching: Knuth-Morris-Pratt algorithm, preprocessing for real-time string matching, Boyer-Moore algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 19&#039;&#039;&#039;&lt;br /&gt;
* Exact matching with a set of patterns: Aho-Corasick algorithm&lt;br /&gt;
* Exact string matching: Apostolico-Giancarlo algorithm&lt;br /&gt;
* Suffix trees: basic definition, naive algorithm to build&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 3, 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 26&#039;&#039;&#039;&lt;br /&gt;
* Module 1 Exam&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 9&#039;&#039;&#039;&lt;br /&gt;
* Suffix trees: basic definition, naive algorithm to build&lt;br /&gt;
* Suffix trees: Ukkonen&#039;s algorithm, applications&lt;br /&gt;
* Suffix arrays: building using suffix tree, exact string matching&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 5, 6, 7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 16&#039;&#039;&#039;&lt;br /&gt;
* Suffix arrays: building without suffix tree&lt;br /&gt;
* Dynamic programming: longest common subsequence, Levenstein distance&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 15&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 23&#039;&#039;&#039;&lt;br /&gt;
* Dynamic programming: two conveyors problem, 0-1 knapsack problem&lt;br /&gt;
* Greedy algorithm: activity selection problem, fraction knapsack problem, longest increasing subsequence, Huffman codes&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 15, 16&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 30&#039;&#039;&#039;&lt;br /&gt;
* Text compression, models: static, semistatic, adaptive, symbolwise models, dictionary models&lt;br /&gt;
* Serialization, tree serialization in semistatic Huffman codes&lt;br /&gt;
* Dictionary models: LZ-77, LZ-78, LZW&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 2, Atallah, ch. 12&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 7&#039;&#039;&#039;&lt;br /&gt;
* Quiz #2&lt;br /&gt;
* Dictionary models: LZW&lt;br /&gt;
* Symbolwise models: arithmetic coding, adaptive Huffman codes&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 2, Atallah, ch. 12&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 14&#039;&#039;&#039;&lt;br /&gt;
* Symbolwise models: adaptive Huffman codes&lt;br /&gt;
* Burrows-Wheeler transform&lt;br /&gt;
* Move-to-Front transform&lt;br /&gt;
* Run-Length Encoding&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 2, Atallah, ch. 12&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 11&#039;&#039;&#039;&lt;br /&gt;
* Graphs: main definitions, representation of graphs&lt;br /&gt;
* Breadth-first search&lt;br /&gt;
* Depth-first search, strongly connected components&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 22&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 17&#039;&#039;&#039;&lt;br /&gt;
* Topological sort&lt;br /&gt;
* Single-source shortest paths, Bellman-Ford algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 22, 24&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 31&#039;&#039;&#039;&lt;br /&gt;
* Single-source shortest paths, Bellman-Ford algorithm, Dijkstra&#039;s algorithm&lt;br /&gt;
* All-pairs shortest paths, &amp;quot;matrix multiplication&amp;quot;&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 24, 25&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feb 8&#039;&#039;&#039;&lt;br /&gt;
* All-pairs shortest paths, Floyd-Warshall algorithm, Johnson&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 25&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feb 15&#039;&#039;&#039;&lt;br /&gt;
* Quiz #3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feb 22&#039;&#039;&#039;&lt;br /&gt;
* Maximum flow: Ford-Fulkerson method, Edmonds-Karp algorithm&lt;br /&gt;
* Maximum bipartite matching: Ford-Fulkerson method, Kuhn&#039;s algorithm&lt;br /&gt;
* Minimum spanning trees: Prim&#039;s algorithm, Kruskal&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 22, 26&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 1==&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, heap sort (including building a heap), counting sort, radix sort&lt;br /&gt;
* Lower bounds of sorting using comparisons&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, main operations (search, insert, delete, rotate)&lt;br /&gt;
* AVL-trees, main operations (search, insert, delete)&lt;br /&gt;
* Red-black trees, main operations (search, insert)&lt;br /&gt;
* Treaps, main operations (search, insert, delete, split, merge)&lt;br /&gt;
* Tries, compact tries, main operations (search, insert, delete)&lt;br /&gt;
* 2-3-4 trees, main operations (search, insert, delete), transformation into red-black tree&lt;br /&gt;
* B-trees, main operations (search, insert, delete)&lt;br /&gt;
* Exact string matching: naive method, Z algorithm, Knuth-Morris-Pratt algorithm, Boyer-Moore algorithm&lt;br /&gt;
* Exact matching with a set of patterns: Aho-Corasick algorithm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 4==&lt;/div&gt;</summary>
		<author><name>Nkmakarov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2024/25&amp;diff=89763</id>
		<title>Algorithms and Data Structures DSBA 2024/25</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2024/25&amp;diff=89763"/>
		<updated>2025-02-17T18:59:10Z</updated>

		<summary type="html">&lt;p&gt;Nkmakarov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
This page contains basic information for the course Algorithms and Data Structures in 2024/2025 academic year at Bachelor’s Programme in &#039;&#039;&#039;Data Science and Business Analytics&#039;&#039;&#039; (DSBA).&lt;br /&gt;
&lt;br /&gt;
The full syllabus can be accessed at [https://www.hse.ru/ba/data/courses/912653105.html this page]. &lt;br /&gt;
&lt;br /&gt;
In case you find any inconsistencies on this page, please, contact [https://t.me/l_AnnaPronina_l @l_AnnaPronina_l].&lt;br /&gt;
&lt;br /&gt;
= Teachers and assistants = &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Group !! 231 !! 232 !! 233 !! 234&lt;br /&gt;
|-&lt;br /&gt;
|| Lecturer &lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | [https://www.hse.ru/org/persons/528651897 Nikita Makarov]&lt;br /&gt;
|- &lt;br /&gt;
|-&lt;br /&gt;
|| Seminar Instructor &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | [https://www.hse.ru/org/persons/305061980 Andrey Borevskiy] &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | [https://www.hse.ru/org/persons/191485259 Vladimir Kurenkov] &lt;br /&gt;
|-&lt;br /&gt;
|| Teaching Assistant&lt;br /&gt;
|| Belikov Daniil &amp;lt;br&amp;gt; tg: [https://t.me/DanBel1kov @DanBel1kov]&lt;br /&gt;
|| Latyshev Ivan &amp;lt;br&amp;gt; tg: [https://t.me/ivan_latysh @ivan_latysh]&lt;br /&gt;
|| Gadaev Isa &amp;lt;br&amp;gt; tg: [https://t.me/elohimapproximation @elohimapproximation]&lt;br /&gt;
|| Pavlov Leonid &amp;lt;br&amp;gt; tg: [https://t.me/leon1dl @leon1dl]&lt;br /&gt;
|-&lt;br /&gt;
|| Head TA&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | Pronina Anna &amp;lt;br&amp;gt; tg: [https://t.me/l_AnnaPronina_l @l_AnnaPronina_l]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
You may find your grades [https://docs.google.com/spreadsheets/d/1JeoxJpMexYYpLPCNpzng5Xcr3SczH91BndCNhy9Cs-I/edit?gid=11487808#gid=11487808 here].&lt;br /&gt;
&lt;br /&gt;
== Formula ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Final Grade = M1 * 0.3 + M4 * 0.7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mi = E * 0.4 + HW * 0.2 + Q * 0.2 + S * 0.2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039; - exam grade: rational number [0, 10] = sum of the grade for the oral and written parts, out of 5 each&lt;br /&gt;
* &#039;&#039;&#039;HW&#039;&#039;&#039; - homework grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;Q&#039;&#039;&#039; - lecture quizzes grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039; - seminar practice grade: rational number [0, 10]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;rounding&#039;&#039;&#039;: each element in the formulae is rounded up&lt;br /&gt;
&lt;br /&gt;
== Plagiarism policy ==&lt;br /&gt;
&lt;br /&gt;
If plagiarism is detected, the assessment element will be assigned a score of &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the student is suspected of preparing the task not on his own, the teacher has the right to initiate additional verification or defense of this particular assessment element. Then such an assessment element will be graded based on the additional verification or the defense.&lt;br /&gt;
&lt;br /&gt;
= Home assignments =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Contest !! Deadline !! Topic&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/68732/enter/ Contest 1] || 16 oct 2024, 23:59:59  || Sorting Algorithms&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/69563/enter/ Contest 2] || 25 oct 2024, 23:59:59  || Trees&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/70462/enter/ Contest 3] || 15 nov 2024, 23:59:59  || String Algorithms I&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/70464/enter/ Contest 4] || 22 nov 2024, 23:59:59  || String Algorithms II&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/71931/enter/ Contest 5] || 8 dec 2024, 23:59:59  || Dynamic Programming&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/72567/enter/ Contest 6] || 18 dec 2024, 23:59:59  || Dynamic Programming&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Lectures = &lt;br /&gt;
Lectures are held on Saturdays from 14:40 till 17:40.&lt;br /&gt;
&lt;br /&gt;
== Lecture Materials ==&lt;br /&gt;
&#039;&#039;&#039;Sep 7&#039;&#039;&#039;&lt;br /&gt;
* Introduction to the course&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, heap sort (including building a heap)&lt;br /&gt;
* Lower bounds of sorting&lt;br /&gt;
* Counting sort&lt;br /&gt;
* Radix sort&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 2, 3, 6, 8&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 14&#039;&#039;&#039;&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, main operations (insert, delete, rotate)&lt;br /&gt;
* AVL-trees, main operations&lt;br /&gt;
* Red-black trees, main definitions&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 12, 13&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 21&#039;&#039;&#039;&lt;br /&gt;
* Red-black trees, main operations&lt;br /&gt;
* Treaps, main operations&lt;br /&gt;
* Tries, main operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 13, Mehta, ch. 28&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 28&#039;&#039;&#039;&lt;br /&gt;
* Tries, compact tries, PATRICIA trie, main operations&lt;br /&gt;
* 2-3-4 trees, main operations&lt;br /&gt;
* B-trees, main operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 5&#039;&#039;&#039;&lt;br /&gt;
* Quiz #1&lt;br /&gt;
* Exact string matching: naive method, Z algorithm, Knuth-Morris-Pratt algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 1, 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 12&#039;&#039;&#039;&lt;br /&gt;
* Exact string matching: Knuth-Morris-Pratt algorithm, preprocessing for real-time string matching, Boyer-Moore algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 19&#039;&#039;&#039;&lt;br /&gt;
* Exact matching with a set of patterns: Aho-Corasick algorithm&lt;br /&gt;
* Exact string matching: Apostolico-Giancarlo algorithm&lt;br /&gt;
* Suffix trees: basic definition, naive algorithm to build&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 3, 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 26&#039;&#039;&#039;&lt;br /&gt;
* Module 1 Exam&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 9&#039;&#039;&#039;&lt;br /&gt;
* Suffix trees: basic definition, naive algorithm to build&lt;br /&gt;
* Suffix trees: Ukkonen&#039;s algorithm, applications&lt;br /&gt;
* Suffix arrays: building using suffix tree, exact string matching&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 5, 6, 7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 16&#039;&#039;&#039;&lt;br /&gt;
* Suffix arrays: building without suffix tree&lt;br /&gt;
* Dynamic programming: longest common subsequence, Levenstein distance&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 15&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 23&#039;&#039;&#039;&lt;br /&gt;
* Dynamic programming: two conveyors problem, 0-1 knapsack problem&lt;br /&gt;
* Greedy algorithm: activity selection problem, fraction knapsack problem, longest increasing subsequence, Huffman codes&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 15, 16&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 30&#039;&#039;&#039;&lt;br /&gt;
* Text compression, models: static, semistatic, adaptive, symbolwise models, dictionary models&lt;br /&gt;
* Serialization, tree serialization in semistatic Huffman codes&lt;br /&gt;
* Dictionary models: LZ-77, LZ-78, LZW&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 2, Atallah, ch. 12&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 7&#039;&#039;&#039;&lt;br /&gt;
* Quiz #2&lt;br /&gt;
* Dictionary models: LZW&lt;br /&gt;
* Symbolwise models: arithmetic coding, adaptive Huffman codes&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 2, Atallah, ch. 12&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 14&#039;&#039;&#039;&lt;br /&gt;
* Symbolwise models: adaptive Huffman codes&lt;br /&gt;
* Burrows-Wheeler transform&lt;br /&gt;
* Move-to-Front transform&lt;br /&gt;
* Run-Length Encoding&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 2, Atallah, ch. 12&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 11&#039;&#039;&#039;&lt;br /&gt;
* Graphs: main definitions, representation of graphs&lt;br /&gt;
* Breadth-first search&lt;br /&gt;
* Depth-first search, strongly connected components&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 22&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 17&#039;&#039;&#039;&lt;br /&gt;
* Topological sort&lt;br /&gt;
* Single-source shortest paths, Bellman-Ford algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 22, 24&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 31&#039;&#039;&#039;&lt;br /&gt;
* Single-source shortest paths, Bellman-Ford algorithm, Dijkstra&#039;s algorithm&lt;br /&gt;
* All-pairs shortest paths, &amp;quot;matrix multiplication&amp;quot;&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 24, 25&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feb 8&#039;&#039;&#039;&lt;br /&gt;
* All-pairs shortest paths, Floyd-Warshall algorithm, Johnson&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 25&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feb 15&#039;&#039;&#039;&lt;br /&gt;
* Quiz #3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 1==&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, heap sort (including building a heap), counting sort, radix sort&lt;br /&gt;
* Lower bounds of sorting using comparisons&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, main operations (search, insert, delete, rotate)&lt;br /&gt;
* AVL-trees, main operations (search, insert, delete)&lt;br /&gt;
* Red-black trees, main operations (search, insert)&lt;br /&gt;
* Treaps, main operations (search, insert, delete, split, merge)&lt;br /&gt;
* Tries, compact tries, main operations (search, insert, delete)&lt;br /&gt;
* 2-3-4 trees, main operations (search, insert, delete), transformation into red-black tree&lt;br /&gt;
* B-trees, main operations (search, insert, delete)&lt;br /&gt;
* Exact string matching: naive method, Z algorithm, Knuth-Morris-Pratt algorithm, Boyer-Moore algorithm&lt;br /&gt;
* Exact matching with a set of patterns: Aho-Corasick algorithm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 4==&lt;/div&gt;</summary>
		<author><name>Nkmakarov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2024/25&amp;diff=89633</id>
		<title>Algorithms and Data Structures DSBA 2024/25</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2024/25&amp;diff=89633"/>
		<updated>2025-02-08T19:01:55Z</updated>

		<summary type="html">&lt;p&gt;Nkmakarov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
This page contains basic information for the course Algorithms and Data Structures in 2024/2025 academic year at Bachelor’s Programme in &#039;&#039;&#039;Data Science and Business Analytics&#039;&#039;&#039; (DSBA).&lt;br /&gt;
&lt;br /&gt;
The full syllabus can be accessed at [https://www.hse.ru/ba/data/courses/912653105.html this page]. &lt;br /&gt;
&lt;br /&gt;
In case you find any inconsistencies on this page, please, contact [https://t.me/l_AnnaPronina_l @l_AnnaPronina_l].&lt;br /&gt;
&lt;br /&gt;
= Teachers and assistants = &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Group !! 231 !! 232 !! 233 !! 234&lt;br /&gt;
|-&lt;br /&gt;
|| Lecturer &lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | [https://www.hse.ru/org/persons/528651897 Nikita Makarov]&lt;br /&gt;
|- &lt;br /&gt;
|-&lt;br /&gt;
|| Seminar Instructor &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | [https://www.hse.ru/org/persons/305061980 Andrey Borevskiy] &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | [https://www.hse.ru/org/persons/191485259 Vladimir Kurenkov] &lt;br /&gt;
|-&lt;br /&gt;
|| Teaching Assistant&lt;br /&gt;
|| Belikov Daniil &amp;lt;br&amp;gt; tg: [https://t.me/DanBel1kov @DanBel1kov]&lt;br /&gt;
|| Latyshev Ivan &amp;lt;br&amp;gt; tg: [https://t.me/ivan_latysh @ivan_latysh]&lt;br /&gt;
|| Gadaev Isa &amp;lt;br&amp;gt; tg: [https://t.me/elohimapproximation @elohimapproximation]&lt;br /&gt;
|| Pavlov Leonid &amp;lt;br&amp;gt; tg: [https://t.me/leon1dl @leon1dl]&lt;br /&gt;
|-&lt;br /&gt;
|| Head TA&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | Pronina Anna &amp;lt;br&amp;gt; tg: [https://t.me/l_AnnaPronina_l @l_AnnaPronina_l]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
You may find your grades [https://docs.google.com/spreadsheets/d/1JeoxJpMexYYpLPCNpzng5Xcr3SczH91BndCNhy9Cs-I/edit?gid=11487808#gid=11487808 here].&lt;br /&gt;
&lt;br /&gt;
== Formula ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Final Grade = M1 * 0.3 + M4 * 0.7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mi = E * 0.4 + HW * 0.2 + Q * 0.2 + S * 0.2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039; - exam grade: rational number [0, 10] = sum of the grade for the oral and written parts, out of 5 each&lt;br /&gt;
* &#039;&#039;&#039;HW&#039;&#039;&#039; - homework grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;Q&#039;&#039;&#039; - lecture quizzes grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039; - seminar practice grade: rational number [0, 10]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;rounding&#039;&#039;&#039;: each element in the formulae is rounded up&lt;br /&gt;
&lt;br /&gt;
== Plagiarism policy ==&lt;br /&gt;
&lt;br /&gt;
If plagiarism is detected, the assessment element will be assigned a score of &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the student is suspected of preparing the task not on his own, the teacher has the right to initiate additional verification or defense of this particular assessment element. Then such an assessment element will be graded based on the additional verification or the defense.&lt;br /&gt;
&lt;br /&gt;
= Home assignments =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Contest !! Deadline !! Topic&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/68732/enter/ Contest 1] || 16 oct 2024, 23:59:59  || Sorting Algorithms&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/69563/enter/ Contest 2] || 25 oct 2024, 23:59:59  || Trees&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/70462/enter/ Contest 3] || 15 nov 2024, 23:59:59  || String Algorithms I&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/70464/enter/ Contest 4] || 22 nov 2024, 23:59:59  || String Algorithms II&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/71931/enter/ Contest 5] || 8 dec 2024, 23:59:59  || Dynamic Programming&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/72567/enter/ Contest 6] || 18 dec 2024, 23:59:59  || Dynamic Programming&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Lectures = &lt;br /&gt;
Lectures are held on Saturdays from 14:40 till 17:40.&lt;br /&gt;
&lt;br /&gt;
== Lecture Materials ==&lt;br /&gt;
&#039;&#039;&#039;Sep 7&#039;&#039;&#039;&lt;br /&gt;
* Introduction to the course&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, heap sort (including building a heap)&lt;br /&gt;
* Lower bounds of sorting&lt;br /&gt;
* Counting sort&lt;br /&gt;
* Radix sort&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 2, 3, 6, 8&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 14&#039;&#039;&#039;&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, main operations (insert, delete, rotate)&lt;br /&gt;
* AVL-trees, main operations&lt;br /&gt;
* Red-black trees, main definitions&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 12, 13&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 21&#039;&#039;&#039;&lt;br /&gt;
* Red-black trees, main operations&lt;br /&gt;
* Treaps, main operations&lt;br /&gt;
* Tries, main operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 13, Mehta, ch. 28&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 28&#039;&#039;&#039;&lt;br /&gt;
* Tries, compact tries, PATRICIA trie, main operations&lt;br /&gt;
* 2-3-4 trees, main operations&lt;br /&gt;
* B-trees, main operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 5&#039;&#039;&#039;&lt;br /&gt;
* Quiz #1&lt;br /&gt;
* Exact string matching: naive method, Z algorithm, Knuth-Morris-Pratt algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 1, 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 12&#039;&#039;&#039;&lt;br /&gt;
* Exact string matching: Knuth-Morris-Pratt algorithm, preprocessing for real-time string matching, Boyer-Moore algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 19&#039;&#039;&#039;&lt;br /&gt;
* Exact matching with a set of patterns: Aho-Corasick algorithm&lt;br /&gt;
* Exact string matching: Apostolico-Giancarlo algorithm&lt;br /&gt;
* Suffix trees: basic definition, naive algorithm to build&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 3, 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 26&#039;&#039;&#039;&lt;br /&gt;
* Module 1 Exam&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 9&#039;&#039;&#039;&lt;br /&gt;
* Suffix trees: basic definition, naive algorithm to build&lt;br /&gt;
* Suffix trees: Ukkonen&#039;s algorithm, applications&lt;br /&gt;
* Suffix arrays: building using suffix tree, exact string matching&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 5, 6, 7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 16&#039;&#039;&#039;&lt;br /&gt;
* Suffix arrays: building without suffix tree&lt;br /&gt;
* Dynamic programming: longest common subsequence, Levenstein distance&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 15&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 23&#039;&#039;&#039;&lt;br /&gt;
* Dynamic programming: two conveyors problem, 0-1 knapsack problem&lt;br /&gt;
* Greedy algorithm: activity selection problem, fraction knapsack problem, longest increasing subsequence, Huffman codes&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 15, 16&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 30&#039;&#039;&#039;&lt;br /&gt;
* Text compression, models: static, semistatic, adaptive, symbolwise models, dictionary models&lt;br /&gt;
* Serialization, tree serialization in semistatic Huffman codes&lt;br /&gt;
* Dictionary models: LZ-77, LZ-78, LZW&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 2, Atallah, ch. 12&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 7&#039;&#039;&#039;&lt;br /&gt;
* Quiz #2&lt;br /&gt;
* Dictionary models: LZW&lt;br /&gt;
* Symbolwise models: arithmetic coding, adaptive Huffman codes&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 2, Atallah, ch. 12&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 14&#039;&#039;&#039;&lt;br /&gt;
* Symbolwise models: adaptive Huffman codes&lt;br /&gt;
* Burrows-Wheeler transform&lt;br /&gt;
* Move-to-Front transform&lt;br /&gt;
* Run-Length Encoding&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 2, Atallah, ch. 12&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 11&#039;&#039;&#039;&lt;br /&gt;
* Graphs: main definitions, representation of graphs&lt;br /&gt;
* Breadth-first search&lt;br /&gt;
* Depth-first search, strongly connected components&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 22&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 17&#039;&#039;&#039;&lt;br /&gt;
* Topological sort&lt;br /&gt;
* Single-source shortest paths, Bellman-Ford algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 22, 24&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 31&#039;&#039;&#039;&lt;br /&gt;
* Single-source shortest paths, Bellman-Ford algorithm, Dijkstra&#039;s algorithm&lt;br /&gt;
* All-pairs shortest paths, &amp;quot;matrix multiplication&amp;quot;&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 24, 25&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feb 8&#039;&#039;&#039;&lt;br /&gt;
* All-pairs shortest paths, Floyd-Warshall algorithm, Johnson&#039;s algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 25&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 1==&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, heap sort (including building a heap), counting sort, radix sort&lt;br /&gt;
* Lower bounds of sorting using comparisons&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, main operations (search, insert, delete, rotate)&lt;br /&gt;
* AVL-trees, main operations (search, insert, delete)&lt;br /&gt;
* Red-black trees, main operations (search, insert)&lt;br /&gt;
* Treaps, main operations (search, insert, delete, split, merge)&lt;br /&gt;
* Tries, compact tries, main operations (search, insert, delete)&lt;br /&gt;
* 2-3-4 trees, main operations (search, insert, delete), transformation into red-black tree&lt;br /&gt;
* B-trees, main operations (search, insert, delete)&lt;br /&gt;
* Exact string matching: naive method, Z algorithm, Knuth-Morris-Pratt algorithm, Boyer-Moore algorithm&lt;br /&gt;
* Exact matching with a set of patterns: Aho-Corasick algorithm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 4==&lt;/div&gt;</summary>
		<author><name>Nkmakarov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2024/25&amp;diff=89494</id>
		<title>Algorithms and Data Structures DSBA 2024/25</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2024/25&amp;diff=89494"/>
		<updated>2025-01-31T20:05:35Z</updated>

		<summary type="html">&lt;p&gt;Nkmakarov: Update list of lectures&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
This page contains basic information for the course Algorithms and Data Structures in 2024/2025 academic year at Bachelor’s Programme in &#039;&#039;&#039;Data Science and Business Analytics&#039;&#039;&#039; (DSBA).&lt;br /&gt;
&lt;br /&gt;
The full syllabus can be accessed at [https://www.hse.ru/ba/data/courses/912653105.html this page]. &lt;br /&gt;
&lt;br /&gt;
In case you find any inconsistencies on this page, please, contact [https://t.me/l_AnnaPronina_l @l_AnnaPronina_l].&lt;br /&gt;
&lt;br /&gt;
= Teachers and assistants = &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Group !! 231 !! 232 !! 233 !! 234&lt;br /&gt;
|-&lt;br /&gt;
|| Lecturer &lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | [https://www.hse.ru/org/persons/528651897 Nikita Makarov]&lt;br /&gt;
|- &lt;br /&gt;
|-&lt;br /&gt;
|| Seminar Instructor &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | [https://www.hse.ru/org/persons/305061980 Andrey Borevskiy] &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | [https://www.hse.ru/org/persons/191485259 Vladimir Kurenkov] &lt;br /&gt;
|-&lt;br /&gt;
|| Teaching Assistant&lt;br /&gt;
|| Belikov Daniil &amp;lt;br&amp;gt; tg: [https://t.me/DanBel1kov @DanBel1kov]&lt;br /&gt;
|| Latyshev Ivan &amp;lt;br&amp;gt; tg: [https://t.me/ivan_latysh @ivan_latysh]&lt;br /&gt;
|| Gadaev Isa &amp;lt;br&amp;gt; tg: [https://t.me/elohimapproximation @elohimapproximation]&lt;br /&gt;
|| Pavlov Leonid &amp;lt;br&amp;gt; tg: [https://t.me/leon1dl @leon1dl]&lt;br /&gt;
|-&lt;br /&gt;
|| Head TA&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | Pronina Anna &amp;lt;br&amp;gt; tg: [https://t.me/l_AnnaPronina_l @l_AnnaPronina_l]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
You may find your grades [https://docs.google.com/spreadsheets/d/1JeoxJpMexYYpLPCNpzng5Xcr3SczH91BndCNhy9Cs-I/edit?gid=11487808#gid=11487808 here].&lt;br /&gt;
&lt;br /&gt;
== Formula ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Final Grade = M1 * 0.3 + M4 * 0.7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mi = E * 0.4 + HW * 0.2 + Q * 0.2 + S * 0.2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039; - exam grade: rational number [0, 10] = sum of the grade for the oral and written parts, out of 5 each&lt;br /&gt;
* &#039;&#039;&#039;HW&#039;&#039;&#039; - homework grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;Q&#039;&#039;&#039; - lecture quizzes grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039; - seminar practice grade: rational number [0, 10]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;rounding&#039;&#039;&#039;: each element in the formulae is rounded up&lt;br /&gt;
&lt;br /&gt;
== Plagiarism policy ==&lt;br /&gt;
&lt;br /&gt;
If plagiarism is detected, the assessment element will be assigned a score of &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the student is suspected of preparing the task not on his own, the teacher has the right to initiate additional verification or defense of this particular assessment element. Then such an assessment element will be graded based on the additional verification or the defense.&lt;br /&gt;
&lt;br /&gt;
= Home assignments =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Contest !! Deadline !! Topic&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/68732/enter/ Contest 1] || 16 oct 2024, 23:59:59  || Sorting Algorithms&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/69563/enter/ Contest 2] || 25 oct 2024, 23:59:59  || Trees&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/70462/enter/ Contest 3] || 15 nov 2024, 23:59:59  || String Algorithms I&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/70464/enter/ Contest 4] || 22 nov 2024, 23:59:59  || String Algorithms II&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/71931/enter/ Contest 5] || 8 dec 2024, 23:59:59  || Dynamic Programming&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/72567/enter/ Contest 6] || 18 dec 2024, 23:59:59  || Dynamic Programming&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Lectures = &lt;br /&gt;
Lectures are held on Saturdays from 14:40 till 17:40.&lt;br /&gt;
&lt;br /&gt;
== Lecture Materials ==&lt;br /&gt;
&#039;&#039;&#039;Sep 7&#039;&#039;&#039;&lt;br /&gt;
* Introduction to the course&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, heap sort (including building a heap)&lt;br /&gt;
* Lower bounds of sorting&lt;br /&gt;
* Counting sort&lt;br /&gt;
* Radix sort&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 2, 3, 6, 8&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 14&#039;&#039;&#039;&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, main operations (insert, delete, rotate)&lt;br /&gt;
* AVL-trees, main operations&lt;br /&gt;
* Red-black trees, main definitions&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 12, 13&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 21&#039;&#039;&#039;&lt;br /&gt;
* Red-black trees, main operations&lt;br /&gt;
* Treaps, main operations&lt;br /&gt;
* Tries, main operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 13, Mehta, ch. 28&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 28&#039;&#039;&#039;&lt;br /&gt;
* Tries, compact tries, PATRICIA trie, main operations&lt;br /&gt;
* 2-3-4 trees, main operations&lt;br /&gt;
* B-trees, main operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 5&#039;&#039;&#039;&lt;br /&gt;
* Quiz #1&lt;br /&gt;
* Exact string matching: naive method, Z algorithm, Knuth-Morris-Pratt algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 1, 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 12&#039;&#039;&#039;&lt;br /&gt;
* Exact string matching: Knuth-Morris-Pratt algorithm, preprocessing for real-time string matching, Boyer-Moore algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 19&#039;&#039;&#039;&lt;br /&gt;
* Exact matching with a set of patterns: Aho-Corasick algorithm&lt;br /&gt;
* Exact string matching: Apostolico-Giancarlo algorithm&lt;br /&gt;
* Suffix trees: basic definition, naive algorithm to build&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 3, 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 26&#039;&#039;&#039;&lt;br /&gt;
* Module 1 Exam&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 9&#039;&#039;&#039;&lt;br /&gt;
* Suffix trees: basic definition, naive algorithm to build&lt;br /&gt;
* Suffix trees: Ukkonen&#039;s algorithm, applications&lt;br /&gt;
* Suffix arrays: building using suffix tree, exact string matching&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 5, 6, 7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 16&#039;&#039;&#039;&lt;br /&gt;
* Suffix arrays: building without suffix tree&lt;br /&gt;
* Dynamic programming: longest common subsequence, Levenstein distance&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 15&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 23&#039;&#039;&#039;&lt;br /&gt;
* Dynamic programming: two conveyors problem, 0-1 knapsack problem&lt;br /&gt;
* Greedy algorithm: activity selection problem, fraction knapsack problem, longest increasing subsequence, Huffman codes&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 15, 16&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 30&#039;&#039;&#039;&lt;br /&gt;
* Text compression, models: static, semistatic, adaptive, symbolwise models, dictionary models&lt;br /&gt;
* Serialization, tree serialization in semistatic Huffman codes&lt;br /&gt;
* Dictionary models: LZ-77, LZ-78, LZW&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 2, Atallah, ch. 12&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 7&#039;&#039;&#039;&lt;br /&gt;
* Quiz #2&lt;br /&gt;
* Dictionary models: LZW&lt;br /&gt;
* Symbolwise models: arithmetic coding, adaptive Huffman codes&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 2, Atallah, ch. 12&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 14&#039;&#039;&#039;&lt;br /&gt;
* Symbolwise models: adaptive Huffman codes&lt;br /&gt;
* Burrows-Wheeler transform&lt;br /&gt;
* Move-to-Front transform&lt;br /&gt;
* Run-Length Encoding&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 2, Atallah, ch. 12&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 11&#039;&#039;&#039;&lt;br /&gt;
* Graphs: main definitions, representation of graphs&lt;br /&gt;
* Breadth-first search&lt;br /&gt;
* Depth-first search, strongly connected components&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 22&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 17&#039;&#039;&#039;&lt;br /&gt;
* Topological sort&lt;br /&gt;
* Single-source shortest paths, Bellman-Ford algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 22, 24&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 31&#039;&#039;&#039;&lt;br /&gt;
* Single-source shortest paths, Bellman-Ford algorithm, Dijkstra&#039;s algorithm&lt;br /&gt;
* All-pairs shortest paths, &amp;quot;matrix multiplication&amp;quot;&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 24, 25&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 1==&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, heap sort (including building a heap), counting sort, radix sort&lt;br /&gt;
* Lower bounds of sorting using comparisons&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, main operations (search, insert, delete, rotate)&lt;br /&gt;
* AVL-trees, main operations (search, insert, delete)&lt;br /&gt;
* Red-black trees, main operations (search, insert)&lt;br /&gt;
* Treaps, main operations (search, insert, delete, split, merge)&lt;br /&gt;
* Tries, compact tries, main operations (search, insert, delete)&lt;br /&gt;
* 2-3-4 trees, main operations (search, insert, delete), transformation into red-black tree&lt;br /&gt;
* B-trees, main operations (search, insert, delete)&lt;br /&gt;
* Exact string matching: naive method, Z algorithm, Knuth-Morris-Pratt algorithm, Boyer-Moore algorithm&lt;br /&gt;
* Exact matching with a set of patterns: Aho-Corasick algorithm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 4==&lt;/div&gt;</summary>
		<author><name>Nkmakarov</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2024/25&amp;diff=89168</id>
		<title>Algorithms and Data Structures DSBA 2024/25</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=Algorithms_and_Data_Structures_DSBA_2024/25&amp;diff=89168"/>
		<updated>2025-01-18T09:58:03Z</updated>

		<summary type="html">&lt;p&gt;Nkmakarov: Update lectures list&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
This page contains basic information for the course Algorithms and Data Structures in 2024/2025 academic year at Bachelor’s Programme in &#039;&#039;&#039;Data Science and Business Analytics&#039;&#039;&#039; (DSBA).&lt;br /&gt;
&lt;br /&gt;
The full syllabus can be accessed at [https://www.hse.ru/ba/data/courses/912653105.html this page]. &lt;br /&gt;
&lt;br /&gt;
In case you find any inconsistencies on this page, please, contact [https://t.me/l_AnnaPronina_l @l_AnnaPronina_l].&lt;br /&gt;
&lt;br /&gt;
= Teachers and assistants = &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Group !! 231 !! 232 !! 233 !! 234&lt;br /&gt;
|-&lt;br /&gt;
|| Lecturer &lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | [https://www.hse.ru/org/persons/528651897 Nikita Makarov]&lt;br /&gt;
|- &lt;br /&gt;
|-&lt;br /&gt;
|| Seminar Instructor &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | [https://www.hse.ru/org/persons/305061980 Andrey Borevskiy] &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | [https://www.hse.ru/org/persons/191485259 Vladimir Kurenkov] &lt;br /&gt;
|-&lt;br /&gt;
|| Teaching Assistant&lt;br /&gt;
|| Belikov Daniil &amp;lt;br&amp;gt; tg: [https://t.me/DanBel1kov @DanBel1kov]&lt;br /&gt;
|| Latyshev Ivan &amp;lt;br&amp;gt; tg: [https://t.me/ivan_latysh @ivan_latysh]&lt;br /&gt;
|| Gadaev Isa &amp;lt;br&amp;gt; tg: [https://t.me/elohimapproximation @elohimapproximation]&lt;br /&gt;
|| Pavlov Leonid &amp;lt;br&amp;gt; tg: [https://t.me/leon1dl @leon1dl]&lt;br /&gt;
|-&lt;br /&gt;
|| Head TA&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | Pronina Anna &amp;lt;br&amp;gt; tg: [https://t.me/l_AnnaPronina_l @l_AnnaPronina_l]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
You may find your grades [https://docs.google.com/spreadsheets/d/1JeoxJpMexYYpLPCNpzng5Xcr3SczH91BndCNhy9Cs-I/edit?gid=11487808#gid=11487808 here].&lt;br /&gt;
&lt;br /&gt;
== Formula ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Final Grade = M1 * 0.3 + M4 * 0.7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mi = E * 0.4 + HW * 0.2 + Q * 0.2 + S * 0.2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039; - exam grade: rational number [0, 10] = sum of the grade for the oral and written parts, out of 5 each&lt;br /&gt;
* &#039;&#039;&#039;HW&#039;&#039;&#039; - homework grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;Q&#039;&#039;&#039; - lecture quizzes grade: rational number [0, 10]&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039; - seminar practice grade: rational number [0, 10]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;rounding&#039;&#039;&#039;: each element in the formulae is rounded up&lt;br /&gt;
&lt;br /&gt;
== Plagiarism policy ==&lt;br /&gt;
&lt;br /&gt;
If plagiarism is detected, the assessment element will be assigned a score of &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the student is suspected of preparing the task not on his own, the teacher has the right to initiate additional verification or defense of this particular assessment element. Then such an assessment element will be graded based on the additional verification or the defense.&lt;br /&gt;
&lt;br /&gt;
= Home assignments =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Contest !! Deadline !! Topic&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/68732/enter/ Contest 1] || 16 oct 2024, 23:59:59  || Sorting Algorithms&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/69563/enter/ Contest 2] || 25 oct 2024, 23:59:59  || Trees&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/70462/enter/ Contest 3] || 15 nov 2024, 23:59:59  || String Algorithms I&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/70464/enter/ Contest 4] || 22 nov 2024, 23:59:59  || String Algorithms II&lt;br /&gt;
|-&lt;br /&gt;
|| [https://official.contest.yandex.ru/contest/71931/enter/ Contest 5] || 8 dec 2024, 23:59:59  || Dynamic Programming&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Lectures = &lt;br /&gt;
Lectures are held on Saturdays from 14:40 till 17:40.&lt;br /&gt;
&lt;br /&gt;
== Lecture Materials ==&lt;br /&gt;
&#039;&#039;&#039;Sep 7&#039;&#039;&#039;&lt;br /&gt;
* Introduction to the course&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, heap sort (including building a heap)&lt;br /&gt;
* Lower bounds of sorting&lt;br /&gt;
* Counting sort&lt;br /&gt;
* Radix sort&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 2, 3, 6, 8&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 14&#039;&#039;&#039;&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, main operations (insert, delete, rotate)&lt;br /&gt;
* AVL-trees, main operations&lt;br /&gt;
* Red-black trees, main definitions&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 12, 13&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 21&#039;&#039;&#039;&lt;br /&gt;
* Red-black trees, main operations&lt;br /&gt;
* Treaps, main operations&lt;br /&gt;
* Tries, main operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 13, Mehta, ch. 28&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sep 28&#039;&#039;&#039;&lt;br /&gt;
* Tries, compact tries, PATRICIA trie, main operations&lt;br /&gt;
* 2-3-4 trees, main operations&lt;br /&gt;
* B-trees, main operations&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Mehta, ch. 28, Cormen, ch. 18&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 5&#039;&#039;&#039;&lt;br /&gt;
* Quiz #1&lt;br /&gt;
* Exact string matching: naive method, Z algorithm, Knuth-Morris-Pratt algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 1, 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 12&#039;&#039;&#039;&lt;br /&gt;
* Exact string matching: Knuth-Morris-Pratt algorithm, preprocessing for real-time string matching, Boyer-Moore algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 19&#039;&#039;&#039;&lt;br /&gt;
* Exact matching with a set of patterns: Aho-Corasick algorithm&lt;br /&gt;
* Exact string matching: Apostolico-Giancarlo algorithm&lt;br /&gt;
* Suffix trees: basic definition, naive algorithm to build&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 3, 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oct 26&#039;&#039;&#039;&lt;br /&gt;
* Module 1 Exam&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 9&#039;&#039;&#039;&lt;br /&gt;
* Suffix trees: basic definition, naive algorithm to build&lt;br /&gt;
* Suffix trees: Ukkonen&#039;s algorithm, applications&lt;br /&gt;
* Suffix arrays: building using suffix tree, exact string matching&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Gusfield, ch. 5, 6, 7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 16&#039;&#039;&#039;&lt;br /&gt;
* Suffix arrays: building without suffix tree&lt;br /&gt;
* Dynamic programming: longest common subsequence, Levenstein distance&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 15&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 23&#039;&#039;&#039;&lt;br /&gt;
* Dynamic programming: two conveyors problem, 0-1 knapsack problem&lt;br /&gt;
* Greedy algorithm: activity selection problem, fraction knapsack problem, longest increasing subsequence, Huffman codes&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 15, 16&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nov 30&#039;&#039;&#039;&lt;br /&gt;
* Text compression, models: static, semistatic, adaptive, symbolwise models, dictionary models&lt;br /&gt;
* Serialization, tree serialization in semistatic Huffman codes&lt;br /&gt;
* Dictionary models: LZ-77, LZ-78, LZW&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 2, Atallah, ch. 12&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 7&#039;&#039;&#039;&lt;br /&gt;
* Quiz #2&lt;br /&gt;
* Dictionary models: LZW&lt;br /&gt;
* Symbolwise models: arithmetic coding, adaptive Huffman codes&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 2, Atallah, ch. 12&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dec 14&#039;&#039;&#039;&lt;br /&gt;
* Symbolwise models: adaptive Huffman codes&lt;br /&gt;
* Burrows-Wheeler transform&lt;br /&gt;
* Move-to-Front transform&lt;br /&gt;
* Run-Length Encoding&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Witten, ch. 2, Atallah, ch. 12&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 11&#039;&#039;&#039;&lt;br /&gt;
* Graphs: main definitions, representation of graphs&lt;br /&gt;
* Breadth-first search&lt;br /&gt;
* Depth-first search, strongly connected components&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 22&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jan 17&#039;&#039;&#039;&lt;br /&gt;
* Topological sort&lt;br /&gt;
* Single-source shortest path, Bellman-Ford algorithm&lt;br /&gt;
&#039;&#039;Bibliography&#039;&#039;: Cormen, ch. 22, 24&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 1==&lt;br /&gt;
* Asymptotic notation&lt;br /&gt;
* Sorting algorithms: insertion sort, merge sort, heap sort (including building a heap), counting sort, radix sort&lt;br /&gt;
* Lower bounds of sorting using comparisons&lt;br /&gt;
* Basic data structures: array, stack, queue, deque, linked list, tree; basic operations: search, insert, delete&lt;br /&gt;
* Binary search trees, main operations (search, insert, delete, rotate)&lt;br /&gt;
* AVL-trees, main operations (search, insert, delete)&lt;br /&gt;
* Red-black trees, main operations (search, insert)&lt;br /&gt;
* Treaps, main operations (search, insert, delete, split, merge)&lt;br /&gt;
* Tries, compact tries, main operations (search, insert, delete)&lt;br /&gt;
* 2-3-4 trees, main operations (search, insert, delete), transformation into red-black tree&lt;br /&gt;
* B-trees, main operations (search, insert, delete)&lt;br /&gt;
* Exact string matching: naive method, Z algorithm, Knuth-Morris-Pratt algorithm, Boyer-Moore algorithm&lt;br /&gt;
* Exact matching with a set of patterns: Aho-Corasick algorithm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List of topics for exam in module 4==&lt;/div&gt;</summary>
		<author><name>Nkmakarov</name></author>
	</entry>
</feed>