Algorithms in Practice NEW
Solve problems at the speed of thought.
400 $/місяць
ср, 18:30 / сб, 10:00 (UTC+3)
старт:
20 трав. 2026 р.
// 40 занять, 4 місяці
400 $/місяць
ср, 18:30 / сб, 10:00 (UTC+3)

про курс
Алгоритми та структури даних — фундамент, який працює в будь-якій мові програмування, але на рівні middle/senior справа вже не в тому, щоб їх "знати". Справа в тому, щоб вміти виводити рішення з обмежень задачі — від наївного підходу до оптимального, з усвідомленням trade-offs на кожному кроці. Саме цьому ми й вчимо: не запам'ятовувати готові розв'язки, а думати так, щоб приходити до них самостійно.
На курсі ми починаємо з ключових ідей, розбираємо їх глибоко й системно, а потім закріплюємо на великій кількості прикладів та продакшн-кейсів. У результаті ви зможете впевнено розв’язувати задачі рівня LeetCode Hard, проходити техспівбесіди в Big Tech, оптимізувати legacy-код і краще розуміти внутрішню логіку складних систем. Курс побудований як траєкторія: кожна наступна тема логічно виростає з попередньої, а інструменти з’являються саме тоді, коли стають потрібними для наступного кроку — так формується цілісна картина, а не набір розрізнених технік.
Це курс-виклик. 40 занять, сотні задач, код кожного тижня. Тих, хто не виконує домашки — відраховуємо. Тих, хто залишається — чекає розбір їхнього коду, живі дискусії та оточення інженерів, які теж хочуть стати сильнішими. Найкращі студенти наприкінці курсу отримають mock-інтервʼю з інженером із FAANG з персональним фідбеком.
Навчальний план
буде гаряче
ДЛЯ ІНЖЕНЕРІВ
Analysis of algorithms
Thinking in constraints: від Big-O на папері до аналізу реального production-коду.
• Time complexity: цикли, вкладені цикли, рекурсія
• Space complexity: стек рекурсії, heap allocations, вартість копіювання структур даних і приховані витрати пам'яті
• Асимптотичний аналіз ітеративних та рекурсивних алгоритмів
• Аналіз ймовірнісних алгоритмів та структур даних: коли точна відповідь надто дорога
Практика
• Реальний кейс з інфраструктури Facebook — серед мільйонів клієнтів знайти того єдиного, що DDOS-ить сервіс, маючи в пам'яті лише дві змінні. Розбираємо, чому хеш-таблиця тут програє і як алгоритм 1981 р. дає O(1) пам'яті за один прохід.
• Беремо реальний бекенд із CRUD-ендпоінтами. Розбираємо Big-O кожного методу. Вчимося бачити справжню ціну кожного рядка коду крізь абстракції фреймворку.
Brute force algorithms
Від collision detection в іграх до convex hull у computer vision — як перебір вирішує реальні задачі, коли його правильно застосувати.
• Ітеративний перебір як baseline: коректне просте рішення, від якого відштовхуємося в оптимізації
• Прогноз за обмеженнями: як з аналізу циклів і вкладених циклів зрозуміти, чи пройде рішення за часом і пам'яттю, ще до написання коду
• Коли brute force — це правильна відповідь: малі n, обмеження, що дозволяють перебір, читабельність важливіша за мікрооптимізації
• Стрес-тестинг — техніка, якою користуються топ-команди ICPC і senior-інженери для пошуку багів, що не ловляться звичайними unit-тестами
Практика
• Closest pair of points: серед тисяч об'єктів на екрані знайти два найближчі — задача, що виникає у collision detection в іграх, фізичних симуляціях і кластеризації даних.
• Convex hull: побудувати мінімальну опуклу оболонку, що охоплює задану множину точок — задача, що лежить в основі визначення меж об'єктів у комп'ютерному зорі, виявлення колізій у CAD-системах та оптимізації маршрутів.
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: робота з рухомим вікном даних і умови монотонності, за яких воно працює
• Префіксні суми: O(1) на запит про суму діапазону замість O(n)
• Двовимірні префіксні суми та 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 тих років.
Searching and Sqrt decomposition
Нюанси ефективного пошуку в продакшені та його зв’язок із кореневими методами оптимізації.
• Як писати код без помилок, використовуючи інваріанти
• Лінійний пошук для гри Minesweeper та Run-length encoding
• Коренева ідея: техніка для прискорення коду
• Binary search у продакшн-системах та на невідсортованих даних
• Jump search і Galloping search: коли бінарний пошук — не єдиний вихід
• Нижня межа складності задачі пошуку
Sorting and Divide-and-Сonquer
Від класичних ідей до неочевидних оптимізацій та спеціалізованих методів сортування гігабайтів даних.
• Convex Hull: як оптимально оточити країну 404 стіною
• External sort: сортування гігабайтів даних, що не вміщуються в пам’ять
• Quick sort та Quick select: задача Dutch National Flag
• Зв’язок між Selection sort та Heap sort
• Неасимптотичні оптимізації Merge sort
• Radix sort: як відсортувати 1 000 000 чисел швидше за Quick sort
• Метод Scanline: обробка подій у відсортованому порядку
Heap and Linear data structures
Прикладні структури для зберігання, обробки та швидкого доступу до даних на прикладі Redis та SingleStore.
• Динамічні масиви: як зробити їх швидкими
• Задача Shuffle та зв’язок із Reservoir Sampling на MapReduce
• Union-Find: швидке об'єднання та пошук у множинах
• Реалізація підтримки TTL у Redis
• Top-K найпопулярніших елементів: ефективні підходи
• Linked List і його варіації для баз даних
• Monotonic Stack та Circular Queue: модифікації класичних структур
• Перевірка коректності XML та RPN для обчислення виразів
Greedy
Як жадібні алгоритми допомагають створювати найефективніші стратегії кешування та стиснення даних?
• LRU Cache та оптимальні алгоритми кешування
• Huffman Coding: як стискати дані без втрат
• Оптимальне планування подій: коли жадібний підхід працює?
• Minimum Spanning Tree: найкоротший шлях для з’єднання всього
Recursion
Від хвостової рекурсії до регулярних виразів. Як використовувати рекурсію для комбінаторики та парсингу.
• Реалізація регулярних виразів: як працює парсинг regex?
• Комбінаторні об'єкти та їх перебір
• Backtracking: як заповнити Sudoku та знайти вихід із лабіринту
• Хвостова рекурсія та Tail Call оптимізація
Probabilistic algorithms and data structures
Реалізуємо свою хеш-таблицю та представимо її компактно в пам'яті.
• Як компактно представити хеш-таблицю в пам'яті
• Вирішення колізій. Chaining та Linear Probing
• Bloom filter або що робити якщо дані не влазять в пам'ять?
• Алгоритм Рабіна-Карпа для задачі Pattern matching
Dynamic programming
Як працюють текстові редактори, Photoshop та навіть стратегії у карткових іграх?
• The algorithm behind spell checkers
• Як LaTeX та Microsoft Word вирівнюють текст
• Git diff та до чого тут обчислювальна біологія?
• Як виграти в Blackjack та «красиво» зменшити розмір картинки
• Knapsack та оптимальний шлях робота в лабіринті
Graphs and Trees
Про реалізацію Web Crawler та автодоповнення тексту на сайті.
Графи — найуніверсальніша модель у CS. Соціальна мережа — граф. Файлова система — дерево. Залежності між мікросервісами — DAG. Навігація — зважений граф. Якщо ви не вмієте думати графами, ви не бачите половини задач.
• DFS та BFS: два погляди на обхід. Коли який використовувати. BFS для найкоротшого шляху в незваженому графі. DFS для пошуку циклів, топологічного сортування, connected components. Реалізація web crawler через BFS
• Циклічні залежності та топологічне сортування
• Знаходження найкоротших шляхів: Dijkstra vs. Bellman-Ford
• Binary Search Tree та як їх легко балансувати: AVL, Treap
• Ефективна реалізація автодоповнення на Ternary Search Tree
читає
буде гаряче
ДЛЯ ІНЖЕНЕРІВ

Іван Петрушенко
Engineering Lead y @SQUAD, Founder в @CS Osvita.
Former: @Dell Software Engineer, @Fiverr Senior Software Engineer, @Ring Machine Learning Engineer.
Реєстрація. Перший крок за вами
реєстрація
перший крок за вами
Я приймаю умови Публічної оферти та надаю згоду на обробку своїх персональних даних відповідно до Політики конфі денційності.
відгуки
що говорять випускники
ДЛЯ ІНЖЕНЕРІВ
відгуки
що говорять випускники
Говорять
випускники

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

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

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

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

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

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

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

Software Engineer @Lyft @ex-Google
Тимур Пірієв
Структурована, оригінальна та весела подача складних тем. Дуже якісні матеріали, що доповнюють основні лекції. Продумані домашні завдання. Моя рекомендація всім.

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

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

Senior Software Development Engineer @Amazon
Дмитро Космаков
Найкращий курс з Алгоритмів і крапка.

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

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

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

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

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

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

Senior Software Engineer @Emlen.io, командир взводу управління дивізіону в ЗСУ
Михайло Панчук
Курс допоміг повноцінно повернутись в програмування після служби. Програма дуже класно структурована та має багато практичних кейсів. Домашні завдання насичені й потребують часу, але саме завдяки їм матеріал реально засвоюється. Викладач Іван Петрушенко справді вміє мотивувати до навчання, і готовий допомогти та пояснити все, що незрозуміло. Формат лекцій інтерактивний: багато спілкування і можливість почути думки одногрупників.
комунікація, яка тримає в тонусі
Зустрічаємось у Zoom двічі на тиждень — щопонедіка і щосереди о 19:00. Лекції тривають 1.5 години, кожна записується, тож ви завжди зможете передивитися матеріал у зручний час. Мова викладання — українська. Додаткові матеріали — англійською.
Slack — наш спільний простір. Тут обговорюємо задачі, ділимось підказками, пишемо хитрі тести й обговорюємо реферали в топ-компанії.
формат, який працює
Постійний зворотний зв’язок у Slack. Жодних поверхневих слайдів: тільки глибокий розбір цікавих задач із реального продакшену.
Сертифікат видаємо лише за реальні результати — виконані домашки, участь у дискусіях, відчутний прогрес.
оточення, яке заряджає
Проводимо відбір, щоб ви навчалися в середовищі сильних і вмотивованих. Тих, хто не виконує домашки, — відраховуємо.
Лектор завжди на зв’язку — пояснить, доки не стане зрозуміло. Іноді це третя ітерація code review, іноді — залишаємося після лекції, щоб розібратись разом. Це нормально — ми тут, щоб вчитись і ставати сильнішими.