Знання алгоритмів і структур даних допоможе пройти технічну співбесіду будь-якої складності при влаштуванні на роботу, а також перейти на позиції рівня middle і вище.
- Пориньте в теорію структур даних і навчитеся вирішувати складні алгоритмічні завдання.
- Навчіться застосовувати алгоритми і структури даних при розробці програм.
- Зможете братися за складні проекти і підвищувати чек за свою роботу.
1. Junior-розробникам і недоджунам
- Курс призначений для тих, хто вже має базові навички в будь-якій об'єктно-орієнтованій мові програмування.
- ви освоїте як теоретичний, так і практичний матеріал.
- зможете вийти на новий рівень, отримати підвищення і більше заробляти.
- підтягнете свої знання по темі алгоритмів і структур даних.
- в курсі теорії зовсім небагато, переважає практика.
- кожен урок включає в себе безліч прикладів.
- в кінці-домашнє завдання.
- ви впевнено зможете брати нові проекти або претендувати на підвищення.
- Знаєте один з об'єктно-орієнтованих мов програмування (Python, Java, PHP, C++, JavaScript, C#).
- Цей курс підійде вам, якщо ви відмінно розбираєтеся в базовій математиці.
1. Користь
Програміст повинен розуміти принцип роботи алгоритмів і вміти використовувати в своїх програмах.
2. Зручність
Показують важливі прийоми алгоритмічного підходу, які застосовуються в інших задачах.
3. Досвід
Вивчаються в університетському курсі на IT-спеціальностях, і часто зустрічаються на ТЕХНІЧНИХ співбесідах.
після курсу Ви:
- Станете розуміти фундаментальні структури даних;
- Розберетеся в складі стандартних бібліотек мов програмування;
- Отримайте практичний досвід вирішення складних алгоритмічних задач;
- Розберетеся в структурах даних;
- Зможете застосовувати вивчені мови при розробці програм;
- Зможете легко пройти технічну співбесіду.
Блок 1-базовий
Модуль 1-Вступ. Продуктивність алгоритмів
Блок 2-просунутий
Модуль 16-сортування
Модуль 1-Вступ. Продуктивність алгоритмів
- знайомство з програмою курсу та алгоритмами.
- способи вимірювання часу виконання алгоритмів.
- о-нотація.
- Числові алгоритми: алгоритм Евкліда, зведення в цілу ступінь, схема Горнера, перевірка простоти, решето Ератосфена.
- масиви.
- покажчики.
- Доступ до елементів.
- лінійний пошук.
- двовимірні масиви.
- динамічний масив.
- бінарний пошук.
- Вставка і видалення елемента.
- видалення декількох елементів.
- поняття про АТД, інтерфейсі.
- Односвязные, двусвязные списки.
- основні операції.
- реалізації на масиві.
- реалізація на списку.
- застосування.
- поняття про піраміду (купі), побудова піраміди.
- Витяг максимуму, додавання елемента.
- Квадратичні сортування.
- сортування злиттям.
- швидке сортування.
- Пірамідальна сортування. std::sort.
- сортування підрахунком.
- пошук медіани і порядкових статистик методом QuickSelect.
- види дерев.
- обходи в глибину і в ширину.
- двійкові дерева пошуку.
- необхідність балансування.
- АВЛ-дерева і т. д.
- Хеш-таблиці та асоціативний доступ.
- методи вирішення колізій.
- приклади жадібних алгоритмів, їх коректність.
- Завдання про Рюкзак.
- Одновимірна і двовимірна Динаміка.
- види графів.
- представлення графів.
- Зв'язність.
- обходи в глибину і в ширину.
- сильна зв'язність, конденсація.
- пошук найкоротших шляхів, алгоритм Дейкстри.
- Символи, кодування, Юнікод.
- пошук в рядках-алгоритми Рабіна-Карпа і Кнута-Морріса-Пратта.
- Бор.
- CRC-коди, MD5, SHA.
Блок 2-просунутий
Модуль 16-сортування
- Шелла, швидка, порозрядна.
- складні алгоритми пошуку рядків.
- редакційна відстань.
- Балансовані дерева.
- В-дерева.
- Остовні дерева, шляхи, розмальовки і т. д.
- Інтернет і графи.
- методи Хаффмена і Лемпель-зіва.
- практичні завдання.
- Завдання комівояжера.
https://privatelink.de/?https://proglib.academy/algorithms_and_data_structures