top of page

Algorithms

in Practices

Solve problems at the speed of thought.

20 трав. 2026 р.

// старт наступної групи

2 місяці

// 16 занять, 2 місяці

350 $/місяць

700 $

до 30 учасників

// кількість місць обмежена

The revolution needs builders

Frame 8523.png

Це було саме те, чого мені не вистачало. Результат не забарився — я в компанії своєї мрії.

// Дмитро Коваленко,

@Netflix

Frame 8523.png

Найкращий курс з Алгоритмів і крапка.

// Дмитро Космаков,

@Amazon

Frame 8523.png

Мені екстремально сподобалось.

// Максим Крамаренко,

@Netflix

Frame 8523.png

Структурована, оригінальна та весела подача складних тем.

// Тимур Пірієв,

@Lyft @ex-Google

Frame 8523.png

Завдяки курсу я успішно пройшов співбесіду в IBM.

// Сергій Старовойт,

@IBM

Frame 8523.png

Це було саме те, чого мені не вистачало. Результат не забарився — я в компанії своєї мрії.

// Дмитро Коваленко,

@Netflix

ПРО КУРС

Python швидкий настільки, наскільки добре ви розумієте, що відбувається під капотом. На цьому курсі ми відкриємо те, що зазвичай приховано: модель памʼяті CPython, PyObject, алокації та фрагментацію, GIL і конкурентність потоків, multiprocessing, async та zero-copy підходи. Ви навчитеся не «припускати», а міряти, профілювати й оптимізувати. Ви переконаєтесь, що робота з пам’яттю чи потоками — це не дрібниці, а фундамент, що визначає швидкість, стійкість та вартість вашої системи.

Цей курс переводить розробника у категорію those who understand Python beneath Python — інженерів, що контролюють поведінку інтерпретатора, вміють будувати scalable-рішення, зменшувати latency та споживання RAM, писати код стійкий до високих навантажень. Результат — відчутний приріст продуктивності програм і повний контроль над тим, як вони працюють зсередини.

Програма не для пасивного перегляду, а для глибокої роботи: дослідження, експерименти, оптимізація й, можливо, переписування того, що здавалося правильним роками.

prerequisites

:: Практичний досвід програмування від 1 року
:: Практичний досвід програмування від 1 року
:: Практичний досвід програмування від 1 року
:: Практичний досвід програмування від 1 року
:: Практичний досвід програмування від 1 року
:: Практичний досвід програмування від 1 року

ДВІЧІ на тиждень

Субота

10:00 UTC+3

Середа

18:30 UTC+3

// live зустрічі з записом

Стек

Будь-яка мова програмування

// live зустрічі з записом

ПРОГРАМА

:: 32 live заняття

:: 8 Q&A сесій

:: до 30 студентів в групі

Graphs and Trees

Соцмережі, файлові системи, залежності мікросервісів і маршрути — це графи в різних формах. Вчимося бачити ці структури й застосовувати bfs, dfs, shortest paths і topological sort на практиці.
• DFS і BFS як два погляди на обхід графу
• Топологічне сортування й детекція циклів: порядок збірки, розв'язання залежностей, dependency hell у пакетних менеджерах
• Знаходження найкоротших шляхів: Dijkstra vs. Bellman-Ford
• Бінарні дерева пошуку (BST) та як їх балансувати: AVL, Treap
• Trie і Ternary Search Tree

Практика
• State machine як граф: вершини — стани системи, ребра — дозволені переходи, і граф ніде не заданий явно
• Пишемо web crawler на BFS — та сама модель, що в основі індексаторів пошуковиків
• Автодоповнення на Trie/TST: префіксний пошук із ранжуванням за популярністю — те, що відпрацьовує під рядком пошуку на кожному великому сайті
•  Lowest common ancestor (binary lifting)

Dynamic programming

DP — це мистецтво не рахувати те саме двічі. За ним стоять spell-checkers, git diff, вирівнювання тексту в LaTeX і навіть порівняння ДНК
• Від рекурсії з memoization до bottom-up таблиці: одна й та сама ідея під двома кутами, і коли який вигідніший за пам'яттю
• Edit distance (Левенштейн): скільки правок між двома рядками — основа spell-check, fuzzy search і автокорекції
• Sequence alignment: git diff, LCS і той самий алгоритм, що вирівнює ДНК у біоінформатиці
• Як виграти в Blackjack та «красиво» зменшити розмір картинки
• Knapsack та оптимальний шлях робота в лабіринті

Практика
• Реалізуємо edit distance і будуємо на ньому мінімальний «did you mean?» — той самий кістяк, що в пошуку й текстових редакторах
• Як LaTeX та Microsoft Word вирівнюють текст по ширині рядка?

Probabilistic algorithms & data structures

Від класичних hash table до bloom filter: як хешування дозволяє швидко знаходити дані, а на великому масштабі — свідомо міняти точність на памʼять, швидкість і передбачувану похибку
• Як компактно представити хеш-таблицю в пам'яті
• Хеш-функції й колізії: chaining vs open addressing, linear probing, load factor і чому resize неминучий
• Bloom Filter: як за крихітну памʼять відповідати “цього точно немає” з ризиком false positive — і економити дорогі походи в БД, як у Cassandra чи Bigtable
• HyperLogLog: порахувати кількість унікальних серед мільярдів за кілька кілобайт — як це рахує unique visitors аналітика
• Rabin–Karp: хешування рядка для пошуку патерну й rolling hash, на якому будується дедуплікація і rsync

Практика
• Reservoir sampling: чесний випадковий семпл із потоку невідомої довжини — те, що працює в MapReduce та аналітиці на льоту
• Shuffle: як чесно перемішати масив так, щоб кожна перестановка мала однакову ймовірність — від Fisher–Yates до типових помилок у “random sort”, які непомітно ламають випадковість

Greedy algorithms

Як жадібні алгоритми допомагають створювати найефективніші стратегії кешування, планування та стиснення даних?
• Коли жадібність взагалі коректна: exchange argument замість «здається, спрацює»
• Кешування як greedy-задача: чому LRU — це лише евристика. Який алгоритм кешування оптимальний?
• Huffman coding: як побудувати оптимальний код без втрат — те, що всередині gzip, JPEG і HTTP-стиснення
• Оптимальне планування подій: коли жадібний підхід працює?
• Minimum Spanning Tree через Kruskal/Prim: найдешевший спосіб з'єднати все — від мереж до кластеризації

Практика
• Реалізуємо Huffman-кодер і стискаємо реальний текстовий файл
• Interval scheduling: максимум несуперечливих задач — основа планувальників, бронювань і розподілу ресурсів

Linear data structures: array & linked list & stack & queue & heap

Глибокий аналіз прикладних структур даних під зберігання, потокову обробку і швидкий доступ
• Динамічні масиви зсередини: amortized O(1) на append, чому ріст саме ×2 і скільки реально коштує append у Python чи push_back у C++
• Як зробити Linked list швидким? Skip list на практиці
• Stack зсередини: реалізація через dynamic array і через linked list. Monotonic stack та як він використовується для аналізу ринку акцій
• Queue зсередини: від наївної реалізації до циклічного буфера — розбираємо, чому черга на масиві не повинна зсувати всі елементи після кожного pop, як head і tail перетворюють масив на кільце
• Heap та priority queue: структура для ситуацій, де дані постійно змінюються, але нам завжди треба швидко дістати “найважливіший” елемент

Практика
• TTL у Redis: як expiry мільйонів ключів робиться без сканування всієї бази
• Перевірка коректності XML та RPN для обчислення виразів
• Top-K найпопулярніших елементів в потоці даних
• Union-Find: міста зʼєднуються дорогами, користувачі — у кластери, вершини графа — в одну компоненту. Як підтримувати це ефективно
•  LRU cache: задача з реальних кешів, браузерів та баз даних

Sorting & Divide and Сonquer

Від класичних ідей до неочевидних оптимізацій і сортування гігабайтів даних, що фізично не влазять у RAM
• External sort: як відсортувати 100 GB на машині з 8 GB RAM — те, що реально роблять бази даних і MapReduce
• Quick sort і Quick select: пошук k-ї статистики за O(n) і задача Dutch National Flag
• Зв’язок між Selection sort та Heap sort
• Неасимптотичні оптимізації Merge sort та Insertion sort
• Radix sort: як відсортувати 1 000 000 чисел швидше за Quick sort
• Метод Scanline: обробка подій у відсортованому порядку

Практика
• Як пришвидшити bubble sort в 2 рази, не міняючи основну ідею? А як в 50 разів?
• External merge sort на прикладі того, як PostgreSQL сортує результат ORDER BY, що не вміщається в work_mem
• Convex hull: як оптимально оточити множину точок мінімальною оболонкою

Binary search & Galloping search & Range queries

Autocomplete, git bisect, запит до бази, навіть підбір параметра в ML — це все пошук. Заглянемо під капот і розберемо нюанси реалізації
• Інваріанти як спосіб писати код без помилок. Binary search без off-by-one — раз і назавжди, замість вгадування <= чи <
• Лінійний пошук для гри Minesweeper та Run-length encoding. Sentinel linear search
• Коренева декомпозиція (sqrt decomposition): техніка для прискорення коду. Коли segment tree — overkill?
• Binary search не по масиву, а по відповіді: шукаємо мінімальне валідне значення, коли явного відсортованого масиву взагалі немає
• Binary search на невідсортованих і «майже відсортованих» даних
• Jump search і Galloping search: коли бінарний пошук — не єдиний вихід
• Чи можливо в теорії шукати швидше ніж за log n? Нижня межа складності задачі пошуку

Практика
• git bisect як binary search по комітах: знайти один баг-коміт серед тисяч за log(n) кроків 
• Реалізуємо versioned key-value store, який пам'ятає, яке значення мав ключ у будь-який момент часу
•  Знайти кінець лога на S3 без сортування. Append-only лог, файли з послідовними номерами, машина впала — треба знайти найбільший номер. Сканувати весь bucket дорого (LIST коштує як PUT), верхньої межі немає
• Скільки насправді коштує «вигідний» автокредит (binary search on answer). Дилер говорить лише про розмір місячного платежу, а справжню процентну ставку — мовчки приховує

Two pointers & Sliding window & Prefix sums

Як перетворити O(n²) на O(n): техніки, що стоять за face detection у camera hardware, OLAP-запитами в базах даних та половиною LeetCode-задач у FAANG-інтерв'ю
• Two pointers: opposite ends і same direction — паттерни, що перетворюють O(n²) на O(n) без зміни ідеї алгоритму
• Sliding window: робота з рухомим вікном даних і умови монотонності, за яких воно працює
• Prefix sums: O(1) на запит про суму діапазону замість O(n) — фундамент під range queries
• 2D prefix sums та integral images: основа Viola–Jones face detection, що досі живе у camera hardware
• Difference arrays: bulk-оновлення діапазонів за O(1) на запит — як це працює у системах бронювання

Практика
• Алгоритм, що лежить в основі SQL JOIN, повнотекстового пошуку (inverted index у Google і Elasticsearch) та рекомендацій типу «common friends» у соцмережах
• Реалізуємо integral image — структуру з 2D prefix sums, яку у 2001 році використали в алгоритмі Viola–Jones для першого face detection у реальному часі на CPU тих років

Recursion & Backtracking & Heuristic search

Від хвостової рекурсії до регулярних виразів. Як використовувати рекурсію для комбінаторики, парсингу та евристичного пошуку
• Рекурсія як декомпозиція: звести задачу до меншої копії себе і не втратити контроль над глибиною стека
• Backtracking з відсіканням — як не перебирати очевидно мертві гілки
• Генерація перестановок, підмножин, розміщень, комбінацій — каркас під будь-яку переборну задачу
• Хвостова рекурсія та Tail Call оптимізація
• Beam Search: як шукати не ідеальний, а достатньо хороший розвʼязок

Практика
• Пишемо мінімальний regex engine. Чому деякі регулярки "вбивають" сервіс через catastrophic backtracking (ReDoS) — реальний клас вразливостей
• Рекурсивний спуск, що парсить і рахує арифметичний вираз з дужками й пріоритетами — той самий кістяк, що в інтерпретаторах і калькуляторах
• 8 Queens і Sudoku Solver: як рекурсивно будувати розвʼязок, швидко перевіряти обмеження та відсікати неможливі гілки до того, як перебір вибухне

Brute force algorithms

Від collision detection в іграх до convex hull у computer vision — як перебір вирішує реальні задачі, коли його правильно застосувати
• Ітеративний перебір як baseline: коректне просте рішення, від якого відштовхуємося в оптимізації
• Прогноз за обмеженнями: як з аналізу коду зрозуміти, чи пройде рішення за часом і пам'яттю, ще до написання коду
• Коли brute force — це і є правильна відповідь: малі n, дедлайн важливіший за мікрооптимізацію, читабельність дорожча за швидкість
• Stress testing — техніка, якою ловлять баги, що проходять крізь звичайні unit-тести

Практика
• Closest pair of points: серед тисяч об'єктів на екрані знайти два найближчі — задача, що виникає у collision detection в іграх, фізичних симуляціях і кластеризації даних
• Convex hull: побудувати мінімальну опуклу оболонку, що охоплює задану множину точок — задача, що лежить в основі визначення меж об'єктів у комп'ютерному зорі, виявлення колізій у CAD-системах та оптимізації маршрутів

Analysis of algorithms

Thinking in constraints: від Big-O на папері до аналізу реального production-коду
  • Heavy Hitters у DevOps: як швидко виявляти запити, що генерують більше X% трафіку 
  • Аналіз швидкодії API веб-сервера
  • Асимптотичний аналіз ітеративних та рекурсивних алгоритмів 
  • Аналіз ймовірнісних алгоритмів

ЯК ПРОХОДИТЬ
            НАВЧАННЯ

01

фідбек та ітерації

// Домашки не задаємо для галочки. Викладач перевіряє ваші результати та відправляє на доопрацювання та пояснює пробіли

Zoom

01

фідбек та ітерації

// Домашки не задаємо для галочки. Викладач перевіряє ваші результати та відправляє на доопрацювання та пояснює пробіли

Zoom

01

фідбек та ітерації

// Домашки не задаємо для галочки. Викладач перевіряє ваші результати та відправляє на доопрацювання та пояснює пробіли

Zoom

ПРАКТИЧНА
         РОБОТА

:: 30 завдань

:: пишете власну СУБД

:: ФІДБЕК ВИКЛАДАЧА

// Рекомендуємо виділяти 6–10 годин на тиждень для виконання домашніх завдань, щоб отримати максимальний результат від курсу.

Title

<h5 class="font_5">Sub title</h5>
<h5 class="font_5"><br></h5>
Description

ЩО ЗМІНИТЬСЯ
            ПІСЛЯ КУРСУ

1

як ти проходиш coding interview

// 80% технічних співбесід у Big Tech — задачі на алгоритми і структури даних. Після курсу ти заходиш на будь-яку з них з чіткою структурою мислення — і можеш пояснити своє рішення на кожному кроці.

2

як ти підходиш до задачі

// Аналізуєш обмеження до першого рядка коду — впізнаєш клас задачі, знаєш інструмент і розумієш trade-offs між підходами. Бачиш фінішну пряму ще на старті.

3

як ти читаєш
код

// Бачиш реальну ціну кожного рядка крізь абстракції — де фреймворк приховує дорогу операцію, де рекурсія з'їдає пам'ять, де красивий метод насправді O(n²).

ВИКЛАДАЧ
         ТА АВТОР ПРОГРАМИ

ivan2.jpg

Іван Петрушенко

Engineering Lead y @SQUAD, Founder в @CS Osvita. 

Former: @Dell Software Engineer, @Fiverr Senior Software Engineer, @Ring Machine Learning Engineer.

:: випустив понад 300 інженерів
:: 14 років інженерного досвіду з високонавантаженими системами
:: випускник Stanford University

Перевірено випускниками -
        ТОП інженерами з індустрії

google

amazon

netflix

booking.com

spotify

meta

владислав парахін.jpg

Михайло Панчук

Senior Software Engineer @Emlen.io, командир взводу управління дивізіону в ЗСУ

Linkedin

Курс допоміг повноцінно повернутись в програмування після служби. Програма дуже класно структурована та має багато практичних кейсів. Домашні завдання насичені й потребують часу, але саме завдяки їм матеріал реально засвоюється. Викладач Іван Петрушенко справді вміє мотивувати до навчання, і готовий допомогти та пояснити все, що незрозуміло. Формат лекцій інтерактивний: багато спілкування і можливість почути думки одногрупників.

владислав парахін.jpg

Василь Цивінський

Розробник ПЗ в Силах безпілотних систем

Linkedin

Я займався системою ситуативної обізнаності в ЗСУ. Обрав курс з алгоритмів, бо це фундамент, якого мені не вистачало — я не маю технічної університетської освіти, тому хотів систематизувати базу. Курс виявився справді складним, якщо виконувати все по максимуму: понад сотня розв’язаних задач, змагання з однодумцями, постійний інтелектуальний челендж.

Атмосфера в групі була дуже сильною — підтримували одне одного, і спілкування не закінчилося разом із курсом.

владислав парахін.jpg

Василь Недвига

Principal Technical Architect @Adobe

Linkedin

Навчання не легке, як і все що має вартість. Курс дозволив мені поглибити свої знання в програмуванні та знайти сенс в деяких технічних топіках котрі до цього не дуже мали сенс. За рахунок продуманого та фундаментального плану навчання — від математики до алгоритмів.
Також хотів подякувати всьому колективу CS Osvita в організації навчального процесу та покращенні продукту.

владислав парахін.jpg

Юрій Біляєв

Senior Software Engineer @ Kinaxis

Linkedin

Ключова особливість цього курсу — просте і зрозуміле пояснення складних тем з глибоким зануренням у фундаментальні основи. Курс про те, як стати кращим інженером. Він допоміг мені закрити прогалини у знаннях і систематизувати базові концепції. Крім того, це чудова можливість познайомитися з однодумцями. Формат навчання — живий, динамічний і дуже практичний. Цей курс суттєво відрізняється від типових — глибший, зрозуміліший, практичніший.

владислав парахін.jpg

Владислав Посудевський

Software Engineer @Netflix

Linkedin

Якщо ви ще думаєте — не думайте. Цей курс треба брати!
Неймовірне поєднання теорії та практики: заняття проходять наживо з увагою до кожного студента, а домашні завдання підібрані майстерно й допомагають глибоко закріпити знання. Рекомендую.

владислав парахін.jpg

Павло Михайлов

Software Engineer @Grammarly

Linkedin

Дуже добре структурований і глибокий курс, який допомагає зрозуміти, як алгоритми та структури даних працюють "під капотом". Багато практичних завдань із реальними прикладами застосування. Однозначно рекомендую!

владислав парахін.jpg

Сергій Старовойт

Software Engineer @IBM

Linkedin

Залишився дуже задоволений. Через зміну проєкту та роботи часу було обмаль, а знання в алгоритмах, чесно кажучи, прямували до нуля, попри 7 років досвіду в розробці. Тому навчання вимагало багато зусиль і часу, але я жодного разу не пожалкував, що записався. Курс допоміг мені відчувати себе впевнено на співбесідах — і завдяки цьому я успішно пройшов співбесіду в IBM. Дуже рекомендую!

владислав парахін.jpg

Дмитро Космаков

Senior Software Development Engineer @Amazon

Linkedin

Найкращий курс з Алгоритмів і крапка.

владислав парахін.jpg

Ігор Хлапонін

Vice President Software Engineer @JPMorgan

Linkedin

Дуже методичний і структурований підхід, який дозволив зрозуміти алгоритми загалом і чому саме той чи інший використовується у конкретному випадку. Це було інтерактивно та дуже цікаво, а не нудно, як на звичайних лекціях в університеті. Також сподобався елемент контесту — це мотивувало займатися більше, щоб отримати кращий результат.

владислав парахін.jpg

Олександр Верболоз

Software Engineer @Booking.com

Linkedin

Алгоритмічний курс перевершив мої очікування! Викладач відмінно мотивує і пропонує матеріал у захопливій формі, що значно полегшує навчання. Завдяки курсу я нарешті отримав базу якої мені не вистачало. Рекомендую CS osvita як початківцям так і професіоналам.

владислав парахін.jpg

Тимур Пірієв

Software Engineer @Lyft @ex-Google

Linkedin

Структурована, оригінальна та весела подача складних тем. Дуже якісні матеріали, що доповнюють основні лекції. Продумані домашні завдання. Моя рекомендація всім.

владислав парахін.jpg

Максим Крамаренко

Senior Engineer @Netflix

Linkedin

Мені екстремально сподобалось. Я точно дізнався багато нового і згадав круті штуки, які були забуті у вирі роботи над буденними задачами. Складність була доволі високою, щоб кайфувати від кожного вирішенного завдання. Ми охопили всі теми, які мене цікавили і навіть більше!

владислав парахін.jpg

Олександр Шень

Senior Software Engineer @Coursera

Linkedin

Чудовий курс! Дуже сподобалося розв'язувати непрості домашні завдання та працювати над задачами аналогічними до продакшену - це чудово доповнює теорію й дає змогу краще зрозуміти пройдений матеріал.

владислав парахін.jpg

Андрій Забурянний

Senior Java Developer @UKEESS

Linkedin

Що одразу кидається в очі, так це нереально круто структурована подача матеріалу від Івана. До курсу я думав, що осягнути алгоритми майже неможливо, але під час лекцій все ніби прояснялося на ходу. Вважаю, що кожен розробник зможе закрити якусь прогалину в знаннях завдяки цьому курсу. Окремий респект за домашні завдання та лекційні нотатки. Надзвичайно кайфанув від цього крутого курсу.

владислав парахін.jpg

Олексій Згурський

Software Engineer @Grammarly

Linkedin

Крутий курс, раджу. Дав чітке розуміння ключових тем та багато практичних навичок.

владислав парахін.jpg

Дмитро Коваленко

Senior Software Engineer @Netflix

Linkedin

Після місяців підготовки і пари невдалих співбесід, вирішив ґрунтовно зайнятись базою. Потрапив в школу - це було саме те, чого мені не вистачало. Результат не забарився - я в компанії своєї мрії. Раджу пройти навчання щоб виробити звичку освоювати нові теми і вирішувати все складніші задачі, що дуже допоможе у роботі.

владислав парахін.jpg

Дмитро Пащенко

Software Engineer @Apple

Linkedin

Cаме тут я знайшов відсутню частину пазла, яка заповнила прогалину в моїх знаннях. Це дозволило мені отримувати більш глибоке розуміння технологій, з якими я працюю. Для мене пройти курси було справжнім викликом, але зусилля того вартували.

владислав парахін.jpg

Олександра Кулик

Software Engineer @Spotify

Linkedin

Курс дуже потужний. Буде корисним і новачкам, і тим, хто має більше досвіду — за рахунок поступового ускладнення задач та алгоритмів, а також опцій для додаткового опрацювання. Зможете відточити комплексний підхід до розв'язання задач будь-якої складності. Раджу на всі 100%

БРОНЮЙ СВОЄ
       МІСЦЕ В ГРУПІ

оплата помісячно

420 $

курс триває 4 місяці

оплата за весь курс

1600 $

за курсом нбу

ПЕРШИЙ КРОК ЗА ТОБОЮ

Я приймаю умови Публічної оферти та надаю згоду на обробку своїх персональних даних відповідно до Політики конфіденційності.

За тебе може заплатити роботодавець?

Напиши нам на hello@csosvita, і ми оформимо все якнайшвидше.

МАЄШ ПИТАННЯ?
     МИ ВІДПОВІДАЄМО

// Не знайшли відповідь, яку шукали? Напишіть нам на hello@csosvita.com і ми з усім допоможемо

я зможу навчатися на курсі, якщо в мене інший часовий пояс?

Так, звісно. Всі заняття ми записуємо, тож різниця в часових поясах не буде суттєвою перешкодою. Переглядайте лекції коли зручно, а якщо виникнуть питання — викладач і команда на зв'язку в Slack-каналі.

чи є запис занять?

Щоразу організовуємо запис, однак краще долучатися до онлайн-зустрічі — обговорити питання з одногрупниками та проконсультуватися з викладачем. Доступ до записів зберігається протягом року з дня старту курсу.

який рівень підготовки потрібний?

Ти вже пишеш код на роботі і знаєш хоча б одну мову програмування. Алгоритмічної бази може не бути зовсім — але готовність вчитися інтенсивно обов'язкова.

як проходять заняття?

Ми працюємо в невеликих групах до 25-30 людей у форматі живих занять із викладачем — зустрічаємося кілька разів на тиждень у Zoom. На заняттях розбираємо задачі, дискутуємо, уточнюємо деталі, розглядаємо приклади та аргументацію рішень. Формат побудований так, щоб кожен був залучений і мав можливість взаємодіяти з викладачем та групою.

до зустрічі на курсі

bottom of page