Навчіться обирати й створювати алгоритми для пошуку нестандартних рішень, оптимізації програмного коду та масштабування IT-систем.
Артем Верещака
Tech Lead у Bolt
9 блоків \ 40 годин
Комплексний курс про те, як знаходити нестандартні рішення у складних робочих задачах, оптимізувати рядки програмного коду та масштабувати ІТ-системи, спираючись на знання з алгоритміки.
щоб розумітися на архітектурних підходах, дотримуватися стилю, писати чистий код і мінімізувати системні баги замість того, щоб копіпастити «милиці»
щоб набути практичного досвіду розв’язання задач з алгоритміки, навчитися адаптувати класичні методи під свої завдання та винаходити на їхній основі власні рішення
щоб розібратися у структурах даних, оптимізовувати та покращувати робочі алгоритми й писати досконалі коди для машинного навчання
Якщо ви хочете не просто виконувати робочі завдання, а шукати найефективніші рішення на користь продукту, алгоритми та структури даних — це must-have. Саме вони надають розробникам та інженерам інструменти для ефективного зберігання, організації та обробки даних, а також оптимізації виконання завдань.
Протягом курсу ви набудете всіх потрібних навичок для написання і використання алгоритмів: почнемо з масивів даних, алгоритмів пошуку та сортування, вивчимо різні структури даних. Потім розберемо графи та хеш-таблиці. Після цього опануємо динамічне програмування. Наприкінці підіб'ємо підсумки та підготуємося до технічних інтерв'ю.
Лектор поділиться особистим досвідом застосування алгоритмів, ознайомить вас із класичними методами розв’язання завдань алгоритміки та навчить структурувати дані для максимально ефективного використання.
Ви навчитеся розв’язувати робочі завдання за допомогою класичних методів алгоритміки, опануєте алгоритми сортування, бінарні та збалансовані дерева, графи, хеш-функції та хеш-таблиці, одновимірні та двовимірні завдання динамічного програмування.
Ви розбиратимете алгоритми мовами Python, Java, JavaScript. Однією із цих мов на ваш вибір писатимете домашні завдання, а лектор даватиме фідбек щодо вашого коду. Після цього ви отримуватимете повний розбір задач і зможете відстежувати свої помилки.
Ви закриєте прогалини в знаннях та підготуєтеся до problem solving interview у великій IT-компанії. Для 3 найуспішніших студентів лектор проведе тестове технічне інтерв’ю чи особисту консультацію.
Результати: дізнаєтеся, що таке структури даних та алгоритми. Зрозумієте, що таке складність алгоритмів та як її рахувати.
Результати: дізнаєтеся, що таке масиви та як з ними працювати. Навчитеся реалізовувати типові завдання на масивах, застосовувати операції та дії над масивами, визначати часову та просторову складність під час роботи з масивами. Зможете розв’язувати алгоритмічні задачі різної складності.
Результати: дізнаєтеся, що таке звʼязані списки, стеки, черги та як з ними працювати. Навчитеся здійснювати операції над ними, виконувати типові завдання зі звʼязаними списками, зі стеків та черг, а також алгоритмічні задачі різної складності.
Результати: дізнаєтеся про основні алгоритми пошуку та сортування та їх реалізацію. Ознайомитеся з бібліотеками сортування. Навчитеся реалізувати завдання щодо застосування бінарного алгоритму та сортувати масиви даних. Зможете визначити, який алгоритм краще підходить для розв’язання конкретного завдання.
Результати: дізнаєтеся, які бувають дерева, та навчитеся знаходити спільного предка, діаметр дерева, глибину вузла та суму гілок. Попрацюєте із деревом пошуку. Навчитеся реалізовувати обхід дерева та пошук за ним. Дізнаєтеся про збалансовані дерева. Навчитеся працювати зі спеціальними деревами та розв’язувати класичні завдання з використанням дерев.
Результати: дізнаєтеся, які бувають графи, як їх задавати у вигляді матриці чи списку суміжності. Навчитеся реалізовувати алгоритми обходу та пошуку, знаходження найкоротшого шляху. Зможете розв’язувати типові завдання на графи.
Результати: дізнаєтеся про хеш-функції та їхнє призначення, хеш-таблиці та їхні властивості. Навчитеся застосовувати хеш-таблиці та хеш-функції для розв’язання завдань.
Результати: дізнаєтеся, що таке динамічне програмування, навчитеся визначати прості завдання на динаміку й знаходити розв’язання до них. Зможете застосовувати динамічне програмування, оптимізувати time and space complexity, визначати та виконувати завдання на динаміку з різними підходами. Дізнаєтеся, що таке жадібні алгоритми, та навчитеся розв’язувати проблеми з їхньою допомогою.
Результати: дізнаєтеся, з яких етапів складається кодинг інтерв'ю та як до нього підготуватися. Навчитеся визначити класичні підходи та завдання на співбесіді, реалізовувати завдання під час інтерв’ю з обмеженими ресурсами та використовувати інформацію з опису для швидкого пошуку рішення. Зможете декомпозувати завдання.