top of page

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, іноді — залишаємося після лекції, щоб розібратись разом. Це нормально — ми тут, щоб вчитись і ставати сильнішими.

Що на вас чекає

have fun and deep dive

ДЛЯ ІНЖЕНЕРІВ

bottom of page