Алгоритми та структури даних
Опануйте алгоритми, щоб побудувати фундамент для ефективнішої роботи з даними, машинного навчання й моделювання.
Артем Верещака
Platform Software Engineer у
Speechify
former Tech Lead у Bolt

ЦЕЙ КУРС ДЛЯ ВАС, ЯКЩО ВИ ХОЧЕТЕ:
про курс
- Тривалість:
10 тижнів
- Мови для практики:
JavaScript, Java та Python
Комплексний курс про те, як знаходити нестандартні рішення у складних робочих завданнях, оптимізувати рядки програмного коду й масштабувати ІТ-системи, спираючись на знання з алгоритміки.
ДО ПРОГРАМИ КУРСУ ВХОДЯТЬ
Програма
-
01 блок
Вступ
- Знайомство з курсом та лектором
- Вступ до алгоритмів та структур даних
Результати: дізнаєтеся, що таке структури даних та алгоритми. Зрозумієте, що таке складність алгоритмів та як її рахувати.
-
02 блок
Масиви даних
- Статичні та динамічні масиви даних
- LeetCode Problems Solving: масиви
- Case Study: масиви
Результати: дізнаєтеся, що таке масиви та як з ними працювати. Навчитеся реалізовувати типові завдання на масивах, застосовувати операції та дії над масивами, визначати часову та просторову складність під час роботи з масивами. Зможете розв’язувати алгоритмічні задачі різної складності.
-
03 блок
Списки, стеки, черги, рекурсія
- Зв’язаний список
- Створення стека та черги поверх масиву чи списку
- Deque та ArrayDeque
- LeetCode Problems Solving: списки, стеки, черги
- Case Study: списки, стеки, черги
- Основи рекурсії
- Хвостова рекурсія
- eetCode Problems Solving: список і рекурсія
Результати: дізнаєтеся, що таке звʼязані списки, стеки, черги та як з ними працювати. Навчитеся здійснювати операції над ними, виконувати типові завдання зі звʼязаними списками, зі стеків та черг, а також алгоритмічні задачі різної складності.
-
04 блок
Алгоритми пошуку та сортування
- Алгоритми пошуку
- LeetCode Problems Solving: алгоритми пошуку
- Алгоритми сортування
- Сортування злиттям і швидке сортування
- Сортування: гібридні підходи
- LeetCode Problems Solving: алгоритми сортування
- Case Study: алгоритми пошуку та сортування
Результати: дізнаєтеся про основні алгоритми пошуку й сортування та їхню реалізацію. Ознайомитеся з бібліотеками сортування. Навчитеся реалізувати завдання щодо застосування бінарного алгоритму та сортувати масиви даних. Зможете визначити, який алгоритм краще підходить для розв’язання конкретного завдання.
-
05 блок
Дерева як структури даних
- Дерево як структура даних
- Бінарне дерево пошуку
- LeetCode Problems Solving: дерева
- Case Study: дерева
- Збалансовані дерева
- Heap як структура даних
- Спеціальні дерева
- LeetCode Problems Solving: Heap та спеціальні дерева
- Case Study: дерева Advanced
Результати: дізнаєтеся, які бувають дерева, і навчитеся знаходити спільного предка, діаметр дерева, глибину вузла та суму гілок. Попрацюєте із деревом пошуку. Навчитеся реалізовувати обхід дерева та пошук за ним. Дізнаєтеся про збалансовані дерева. Навчитеся працювати зі спеціальними деревами та розв’язувати класичні завдання з використанням дерев.
-
06 блок
Графи як структури даних
- Графи. Part 1
- Графи. Part 2
- LeetCode Problems Solving: графи
- Case Study: Графи
Результати: дізнаєтеся, які бувають графи, як їх задавати у вигляді матриці чи списку суміжності. Навчитеся реалізовувати алгоритми обходу та пошуку, знаходження найкоротшого шляху. Зможете розв’язувати типові завдання на графи.
-
07 блок
Хеш-таблиця
- Хеш-таблиця
- LeetCode Problems Solving: хеш-таблиця
- Case Study: хеш-таблиця
Результати: дізнаєтеся про хеш-функції та їхнє призначення, хеш-таблиці та їхні властивості. Навчитеся застосовувати хеш-таблиці та хеш-функції для розв’язання завдань.
-
08 блок
Динамічне програмування та жадібні алгоритми
- Динамічне програмування
- LeetCode Problems Solving: динамічне програмування
- Жадібні алгоритми
- Case Study: динамічне програмування та жадібні алгоритми
Результати: дізнаєтеся, що таке динамічне програмування, навчитеся визначати прості завдання на динаміку й знаходити розв’язання до них. Зможете застосовувати динамічне програмування, оптимізувати time and space complexity, визначати й виконувати завдання на динаміку з різними підходами. Дізнаєтеся, що таке жадібні алгоритми, та навчитеся розв’язувати проблеми з їхньою допомогою.
-
09 блок
Підготовка до технічного інтерв'ю
- Підготовка до технічного інтерв’ю
- Підсумки — Q&A
Результати: дізнаєтеся, з яких етапів складається кодинг-інтервʼю та як до нього підготуватися. Навчитеся визначити класичні підходи та завдання на співбесіді, реалізовувати завдання під час інтерв’ю з обмеженими ресурсами та використовувати інформацію з опису для швидкого пошуку рішення. Зможете декомпозувати завдання.
лектор
Артем Верещака
Platform Software Engineer у Speechify, former Tech Lead у Bolt
-
провів більше 100 тех-інтерв'ю для інженерів і розробників у Bolt
-
протягом трьох років успішно випустив понад 250 студентів курсу «Алгоритми та структури даних»
-
брав участь у написанні бекенду з нуля для застосунку для оренди самокатів та велосипедів Bolt
-
розв'язав більше 1500 задач, щоб навчити вас найважливішим
-
працював над розробкою розширеної пошукової системи для ринку нерухомості Великої Британії в OneDome
-
розробляв вебзастосунок DB Compliance для внутрішнього використання аудиторами в Luxoft
реєстрація
Навчіться автоматизувати та пришвидшувати робочі завдання завдяки алгоритмам