top of page

Algorithms in Practice

Solve problems at the speed of thought

Про курс

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

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

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

6 серпня 2024

27 занять

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

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

вебінари понеділок, четвер о 19:00

Під час курсу

Q&A сесії

FAANG-like інтерв'ю

нестандартні домашні завдання

code review та регулярний фідбек

12000 грн/міс.

10% переводимо на ЗСУ

Різні тарифи? Ні. 
Завжди преміум.

Куратор

ivan_petrushenko.jpeg

Engineering Lead y Squad, Founder в CS osvita. Ex - Dell Software Engineer,

Fiverr Senior Software Engineer, Ring Machine Learning Engineer.

Навчальний план.
Буде гаряче

Analysis

  • Аналіз швидкодії типового API WEB-серверу

  • Найчастіші перформанс помилки в продакшн

  • Heavy Hitters для DevOps

  • Асимптотика ітеративних та рекурсивних програм

  • Ймовірнісний аналіз алгоритмів

Brute-force and Two pointers technique

  • Техніка написання стрес-тестів

  • Ітеративний перебір або як вирішити задачу "в лоб"

  • Клас задач, що покриваються методом двох вказівників

  • Префікс-суми на масиві та матриці

Searching and Sqrt decomposition

  • Sentinel та як він дозволяє пришвидшити код

  • Як писати код без помилок використовуючи інваріанти

  • Лінійний пошук для гри Minesweeper та Run-length encoding

  • Коренева ідея як техніка до пришвидшення коду

  • Jump search та Galloping search

  • Binary search в продакшн системах та на невідсортованих даних

  • Нижня оцінка на задачу пошуку

Sorting and Divide and Conquer

  • 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

Heap and Linear data structures

  • Find most similar websites

  • Як реалізувати підтримку TTL в Redis

  • Top-K найпопулярніших елементів

  • Ефективна реалізація динамічних масивів

  • Linked list та його варіації для використання в MemSQL

  • Monotonic Stack. Circular Queue

  • Перевірка XML на коректність. RPN for expression evaluation

Greedy algorithms

  • LRU cache та оптимальний cache eviction алгоритм

  • Huffman coding або як стискати дані?

  • Задача планування розпорядку подій

  • Minimum spanning tree

Recursion

  • Реалізація regular expressions

  • Комбінаторні об'єкти та їх перебір

  • Backtracking або як заповнити Sudoku

  • Хвостова рекурсія. Tail call оптимізація

Probabilistic algorithms and data structures

  • Reservoir sampling на MapReduce

  • Як компактно представити хеш-таблицю в пам'яті

  • Вирішення колізій. Chaining та Linear Probing

  • Bloom filter або що роботи якщо дані не влазять в пам'ять?

  • Алгоритм Рабіна-Карпа для задачі Pattern matching

Dynamic programming

  • The algorithm behind spell checkers

  • Як LaTeX та Microsoft Word вирівнюють текст

  • Git diff та причому тут обчислювальна біологія?​

  • Як виграти в Blackjack та "красиво" зменшити розмір картинки

  • Knapsack та оптимальний шлях робота в лабіринті

Graphs and Trees

  • Розберемо 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

Відгуки.
Що говорять випускники

Що на вас чекає.
Have fun and dive deep

Good Will Hunting

Вілл Гантінґ після закінчення курсу Algorithms in Practice

1. Зустрічі в Zoom двічі на тиждень

Тривалість 1.5 години. Не читання зі слайдів, а жива розмова і написання коду з нуля. Мова викладання - українська. Мова програмування - Python, Java, C++.

2. Домашні завдання

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

3. Q&A сесії

Окрім вебінарів, щотижневі зустрічі з куратором. Маєте запитання? Отримуєте відповіді. 

4. Індивідуальні інтерв'ю

Теоретичні або FAANG-like. 45 хв. 1:1 з куратором чи FAANG-інженером. Розгорнутий відгук після.

5. Регулярний фідбек

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

І, так, третя ітерація — це ок.

6. Slack група

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

7. Цінності

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

Реєстрація.
Перший крок за вами

До зв'язку!

bottom of page