top of page

algorithms in practice

Solve problems at the speed of thought.

старт:

6 січ. 2025 р.

32 заняття + 12 QA сесій

290 $/міс

10% донатимо ЗСУ

про курс

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

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

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

навчальний план
буде гаряче

  • Аналіз швидкодії типового API WEB-серверу
  • Heavy Hitters для DevOps
  • Асимптотика ітеративних та рекурсивних програм
  • Ймовірнісний аналіз алгоритмів

Analysis of algorithms

Від аналізу роботи API веб-сервера до ймовірнісних алгоритмів.

  • Техніка написання стрес-тестів
  • Ітеративний перебір або як вирішити задачу "в лоб"
  • Клас задач, що покриваються методом двох вказівників
  • Префікс-суми на масиві та матриці

Brute-force and Two pointers technique

Що спільного між запитами в DB та ML-алгоритмами?

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

Searching and Sqrt decomposition

Бінарний пошук у продакшені, а не просто на масиві.

  • External sort для сортування гігабайтів даних
  • Задача Convex Hull або як оптимально оточити русню стіною
  • Quick sort та Quick select. Задача Dutch National Flag
  • Звязок між Selection sort та Heap sort
  • Не асимптотичні оптимізації Merge sort
  • Radix sort або як швидше за Quick sort відсортувати 1.000.000 чисел
  • Метод Scanline

Sorting and Divide& Conquer

Сортування гігабайтів даних, що перевищують об'єм RAM.

  • Find most similar websites
  • Як реалізувати підтримку TTL в Redis
  • Top-K найпопулярніших елементів
  • Ефективна реалізація динамічних масивів
  • Linked list та його варіації для використання в MemSQL
  • Monotonic Stack. Circular Queue
  • Перевірка XML на коректність. RPN for expression evaluation

Heap and Linear data structures

Як знайти сайти, що найбільш схожі, або реалізувати підтримку TTL в Redis.

  • LRU cache та оптимальний cache eviction алгоритм
  • Huffman coding або як стискати дані?
  • Задача планування розпорядку подій
  • Minimum spanning tree

Greedy algorithms

Все про найефективніші алгоритми кешування та стискання даних.

  • Реалізація regular expressions
  • Комбінаторні об'єкти та їх перебір
  • Backtracking або як заповнити Sudoku
  • Хвостова рекурсія. Tail call оптимізація

Recursion

Від хвостової рекурсії до регулярних виразів. І, так, з бектрекінгом теж розберемося.

  • Reservoir sampling на MapReduce
  • Як компактно представити хеш-таблицю в пам'яті
  • Вирішення колізій. 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

Як працюють текстові редактори та фотошоп?

  • Розберемо DFS та BFS і реалізуємо Web Crawler та PSTree Linux cmd
  • Circular dependencies errors і при чому тут Topological sort?
  • Знаходження найкоротших шляхів: Dijkstra, Bellman-Ford
  • Binary search tree та як їх легко балансувати? AVL, Treap
  • Ефективна реалізація auto-complete system на Ternary search tree

Graphs and Trees

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

читає

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

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

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

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

Frontend Lead @Wix

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

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

Software Engineer @Google

Тимур Пірієв

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

Software Engineer @Booking.com

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

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

Vice President Software Engineer @JPMorgan

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

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

Senior Software Development Engineer @Amazon

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

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

що на вас чекає
have fun and dive deep

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

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

цінності

Понеділок, четвер о 18:30, тривалість 1.5 години. Окрім вебінарів, щотижневі зустрічі з куратором. Маєте запитання? Отримуєте відповіді. Мова викладання — українська. Додаткові матеріали — англійською.

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

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

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

bottom of page