top of page

algorithms in practice

Solve problems at the speed of thought.

start:

1 трав. 2025 р.

4 місяці: 32 заняття + 16 QA сесій

350 $/міс

10% goes to the Armed Forces of Ukraine

about the course

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

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

Увага: даний курс є викликом. Налаштуйтеся на серйозну роботу, адже результати, яких ви досягнете, перевершать всі очікування.

curriculum
things will get hot

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

Analysis of algorithms

Від оцінки швидкодії API до аналізу ймовірнісних алгоритмів.

  • Ітеративний перебір: коли "в лоб" — це теж рішення
  • Техніка написання стрес-тестів: як перевіряти алгоритми на граничних випадках
  • Метод двох вказівників: як пришвидшити brute-force
  • Префіксні суми: оптимізація обчислень у масивах і матрицях

Brute-force and Two pointers technique

Від наївного рішення до оптимізації двома вказівниками в базах даних та машинному навчанні.

  • Як писати код без помилок, використовуючи інваріанти
  • Лінійний пошук у грі Minesweeper та Run-length encoding
  • Коренева ідея: техніка для прискорення коду
  • Binary search у продакшн-системах та на невідсортованих даних
  • Jump search і Galloping search: коли бінарний пошук — не єдиний вихід
  • Нижня межа складності задачі пошуку

Searching and Sqrt decomposition

Нюанси ефективного пошуку в продакшені та його зв’язок із кореневими методами оптимізації.

  • 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: обробка подій у відсортованому порядку

Sorting and Divide-and-Сonquer

Від класичних ідей до неочевидних оптимізацій та спеціалізованих методів сортування гігабайтів даних.

  • Динамічні масиви: як зробити їх швидкими 
  • Задача Shuffle та зв’язок із Reservoir Sampling на MapReduce
  • Union-Find: швидке об'єднання та пошук у множинах
  • Реалізація підтримки TTL у Redis
  • Top-K найпопулярніших елементів: ефективні підходи
  • Linked List і його варіації для баз даних
  • Monotonic Stack та Circular Queue: модифікації класичних структур
  • Перевірка XML на коректність та RPN для обчислення виразів

Heap and Linear data structures

Прикладні структури для зберігання, обробки та швидкого доступу до даних на прикладі Redis та SingleStore.

  • LRU Cache та оптимальні алгоритми кешування
  • Huffman Coding: як стискати дані без втрат
  • Оптимальне планування подій: коли жадібний підхід працює?
  • Minimum Spanning Tree: найкоротший шлях для з’єднання всього

Greedy

Як жадібні алгоритми допомагають створювати найефективніші стратегії кешування та стиснення даних?

  • Реалізація регулярних виразів: як працює парсинг regex?
  • Комбінаторні об'єкти та їх перебір
  • Backtracking: як заповнити Sudoku та знайти вихід із лабіринту
  • Хвостова рекурсія та Tail Call оптимізація

Recursion

Від хвостової рекурсії до регулярних виразів. Як використовувати рекурсію для комбінаторики та парсингу.

  • Як компактно представити хеш-таблицю в пам'яті
  • Вирішення колізій. Chaining та Linear Probing
  • Bloom filter або що робити якщо дані не влазять в пам'ять?
  • Алгоритм Рабіна-Карпа для задачі Pattern matching

Probabilistic algorithms and data structures

Реалізуємо свою хеш-таблицю та представимо її компактно в пам'яті.

  • The algorithm behind spell checkers
  • Як LaTeX та Microsoft Word вирівнюють текст
  • Git diff та причому тут обчислювальна біологія?​
  • Як виграти в Blackjack та "красиво" зменшити розмір картинки
  • Knapsack та оптимальний шлях робота в лабіринті

Dynamic programming

Як працюють текстові редактори, Photoshop та навіть стратегії у карткових іграх?

  • DFS та BFS у дії: реалізація Web Crawler та команди PSTree у Linux
  • Циклічні залежності та топологічне сортування
  • Знаходження найкоротших шляхів: Dijkstra vs. Bellman-Ford
  • Binary Search Tree та як їх легко балансувати: AVL, Treap
  • Ефективна реалізація автодоповнення на Ternary Search Tree

Graphs and Trees

Про реалізацію Web Crawler та автодоповнення тексту на сайті.

read by

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

Engineering Lead y Squad, Founder в CS Osvita. 
Former: Dell Software Engineer, Fiverr Senior Software Engineer, Ring Machine Learning Engineer.

Register. The first step is yours.

register
the first step is yours

Вітаємо, перший крок до курсу зроблено! 

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

reviews
What graduates say

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 @Google

Тимур Пірієв

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

Software Engineer @Booking.com

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

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

Vice President Software Engineer @JPMorgan

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

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

Senior Software Development Engineer @Amazon

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

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

What awaits you?
have fun and dive deep

Середа о 18:30, субота о 10:00, тривалість 1.5 години. Окрім занять, щотижневі зустрічі з куратором для Q&A сесій. Отримуєте регулярний зворотний зв’язок в Slack.

зустрічі в Zoom двічі на тиждень

Пояснення особливо складних моментів з лекцій. Code review та коментарі до домашніх робіт.
І, так, третя ітерація — це ок.

Панує атмосфера відкритості, доброзичливості, дисциплінованості та русофобії.

цінності

Ком'юніті для обговорення лекцій та обміну хитрими тестами до задач. У кожного ДЗ дедлайн. Коду доведеться написати багато. Мова програмування на ваш вибір.

закрита Slack група

bottom of page