Алгоритми та структури даних
(Мета вивчення дисципліни: забезпечити базову підготовку щодо побудування алгоритмів та освоєння особливостей їх реалізації в комп’ютерних програмах, формування навичок використання відповідних структур даних з метою отримання ефективного алгоритму розв’язування задачі, вміння аналізувати, оцінювати ефективність алгоритму, вибирати та застосовувати алгоритми пошуку та сортування на різних структурах, використовувати базові алгоритми для роботи з основними динамічними структурами даних.
Практичне значення та використання отриманих знань: оволодіння базовими поняттями аналізу та оцінювання ефективності алгоритмів, способів їх запису; оволодіння базовими алгоритмами пошуку та сортування на різних структурах даних; отримання навичок роботи з основними статичними та динамічними структурами даних, базовими алгоритмами на бінарних деревах та графових структурах; сприяття розвитку тих якостей особистості, що мають для майбутнього бакалавра особисте профессійне значення в контексті інтеграції у європейський освітній простір.
Тематика та види навчальних занять
Для денної форми здобуття освіти
Лекційні заняття
Лекція 1. “Базові поняття теорії алгоритмів та аналізу їх ефективності”.
Лекція 2. “Алгоритми пошуку та їх аналіз: лінійний алгоритм пошуку, бінарний алгоритм пошуку”.
Лекція 3. “Основні види алгоритмів сортування, їх класифікування”.
Лекція 4. “Бульбашкове сортування, сортування вставками: алгоритм та аналіз їх складності. Сортування Шелла, її особливості та переваги”.
Лекція 5. “Пірамідальне сортування, алгоритм та аналіз складності. Кореневе сортування, алгоритм та аналіз складності”.
Лекція 6. “Рекурсивні методи сортування: сортування злиттям, швидке сортування, алгоритми та аналіз їх складності”.
Лекція 7. “Статичні та динамічні структури даних. Масиви, множини та їх особливості. Стеки та черги: операції над ними, реалізація алгоритмів за допомогою цих структур даних”.
Лекція 8. “Зв’язані списки: однозв’язні списки, двозв'язні списки, операції над ними, переваги та недоліки однозвязних та двозвязних списків”.
Лекція 9. “Бінарні дерева пошуку. Основні поняття та властивості бінарних дерев”.
Лекція 10 “Балансування бінарних дерев пошуку: мета балансування бінарних дерев пошуку та обзор різних способів балансування дерев пошуку”.
Лекція 11. “Хешування, області застосування хешування. Основні види хешування даних”.
Лекція 12. “Хеш-функції. Вимоги до хеш-функцій. Поняття. колізії під час хешування та способи їх усунення. Основні види хеш-функцій”.
Лекція 13. “Хеш-таблиці. Способи організації хеш-таблиць. Подвійне хешування”.
Лекція 14. “Алгоритми обходу графів: пошук в ширину та пошук в глибину, особливості їх застосування в алгоритмах”.
Лекція 15. “Основні алгоритми на графах. Поняття та приклади жадібних алгоритмів”.
Лабораторні заняття
Лабораторна робота №1. “Лінійний та бінарний пошук елемента масиву”.
Мета заняття: Отримання навичок розробці, налагодження програми пошуку елемента масиву, здійснення аналізу отриманих результатів.
Лабораторна робота №2. “Методи сортування списку даних”.
Мета заняття: Навчитися застосуванню методів сортування даних, уявлення особливостей їх роботи, навчитися розробляти програмні реалізації сортування даних та використати їх для конкретних прикладів.
Лабораторна робота №3. “Методи рекурсивного сортування списку даних”.
Мета заняття: Навчитися використовувати сортування злиттям та швидке сортування та уяснити їх особливості.
Лабораторна робота №4. “Стек і черга, їх застосування в комп'ютерних програмах”.
Мета заняття: Отримання практичних навичок використання структур даних – стек і черга, особливостей роботи з такими структурами даних, розробки алгоритмів, які застосовують стеки і черги.
Лабораторна робота №5. “Зв’язані списки та робота з ними”.
Мета заняття: Отримання практичних навичок роботи зі зв’язаними списками, побудови алгоритмів операцій зі зв’язаними списками.
Лабораторна робота №6. “Вивчення основних алгоритмів на графах та їх використання для розв’язування прикладних задач”.
Мета заняття: Навчитися застосувати графові структури для розв’язування прикладних задач.
Лабораторна робота №7. “Жадібні алгоритми та приклади їх використання на графах”.
Мета заняття: Навчитися будувати жадібні алгоритми для розв’язування прикладних задач.
Консультації здійснюються впродовж семестру згідно встановленого розкладу.
Індивідуальна робота
Не передбачено за планом.
Форми контрольних заходів та оцінювання результатів навчання
Для денної форми здобуття освіти
Поточний контроль полягає у виконанні
1) 7-ми індивідуальних поточних завдань. Індивідуальні поточні завдання виконуються письмово і полягають в розв’язуванні типових задач відповідно до мети та завдань лабораторних занять. Бездоганне виконання індивідуальних поточних завдань №1-2 оцінюється у 8 балів; №3-4 оцінюється у 7 балів, №5-7 оцінюється у 10 балів.
2) двох модульних контрольних робіт. Модульна робота складається з теоретичної частини та практичної частини.
Бездоганне виконання кожної модульної контрольної роботи становить 20 балів.
Підсумковий контроль – залік. Мінімальна оцінка, яка дозволяє отримати «зараховано» - 60 балів. Максимальна оцінка, яку може отримати студент – 100 балів.
Політика освітнього процесу та умови допуску до підсумкового контролю
Активна участь в практичних заняттях, дотримання графіків здачі контрольних та індивідуальних завдань, самостійна робота здобувача при підготовці до всіх видів аудиторних занять, присутність на консультаціях. Здобувачі зобов’язані дотримуватись принципів академічної доброчесності при виконанні модульних контрольних робіт, поточних контрольних та індивідуальних завдань, складання заліку/екзамену.
Робота, яка виконана після встановлених викладачем термінів, не приймається.
Відсутність здобувача на контрольній роботі відповідає оцінці «0».
Під час всіх видів аудиторних занять здійснювати телефонні дзвінки забороняється.
Заборонено використання будь-яких підручників, посібників, конспектів лекцій, шпаргалок під час проходження модульних та підсумкового контролів.
ПРН8. Володіти сучасними методами розробки програм і програмних комплексів та прийняття оптимальних рішень щодо складу програмного забезпечення, алгоритмів процедур і операцій.
ПРН9. Вміти створювати ефективні алгоритми для обчислювальних задач системного аналізу та систем підтримки прийняття рішень.