Similar presentations:
Введение в дисциплину. Алгоритмы и структуры данных. Лекция 1
1.
АЛГОРИТМЫ ИСТРУКТУРЫ ДАННЫХ
Тема 1 Введение в
дисциплину
Pump up U
2.
Слайд 2Смеляков Кирилл Сергеевич
профессор кафедры ЭВМ,
доктор технических наук,
профессор
R&D Interests*
Data Science, Data Mining, Artificial Intelligence,
Machine Vision and Pattern Recognition, Algorithms
and Data Structures
*R&D – Research and Development
Pump up U
3.
NURE Data Sciencehttps://www.facebook.com/NUREDataScience
Слайд 3
Pump up U
4.
Тема 1 Введение в дисциплинуOutline
1
2
3
4
5
Слайд 4
Понятие алгоритма
Цели и задачи дисциплины
Структура дисциплины
Frequently Asked Questions (FAQ)
Литература и ресурсы
Lecturer ScD, Professor Kirill Smelyakov
Pump up U
5.
Тема 1 Введениев дисциплину
1 Понятие
алгоритма
Pump up U
6.
Определение алгоритмаСлайд 6
Алгоритм – это формально описанный порядок действий
(операций), которые необходимо выполнить для решения
поставленной задачи за конечное число шагов.
Что значит формально? А это значит, что алгоритм составляется
на основе некоторого стандарта, который регламентирует:
типы данных,
действия с данными,
формы записи алгоритма.
Алгоритм для нас – это новое понятие???
Pump up U
7.
Определение алгоритмаСлайд 7
Описанию алгоритма предшествует постановка задачи (для
решения которой алгоритм и создается) обязательными
элементами которой, помимо функции цели, являются модели:
исходных данных на основе которых работает алгоритм, и
результатов решения поставленной задачи.
Например, при решении задачи сортировки, как минимум,
задают тип данных и отношение порядка элементов на выходе.
Постановка задачи может содержать дополнительные
ограничения и требования, например, по трудоемкости, или по
затратам памяти.
Pump up U
8.
Algorithm and SoftwareСлайд 8
Алгоритм – это прототип программной реализации, при
составлении которой, главным образом, отрабатывают логику
решения поставленной задачи. Алгоритм составляется для того,
чтобы понимать
как писать эффективный код
Описание алгоритма стараются минимально привязывать к
особенностям его программной реализации для долгого
времени жизни алгоритма и возможности выполнения на
различных устройствах.
Pump up U
9.
Наша система координатMathware Development
(Data Science / Mining, etc.)
лексическая / лексикографическая
Prototyping or Scientific Programming
(Python, R, etc.)
текст программы
Algorithms and Data Structures
лексическая / лексикографическая /
блок-схема / псевдокод
Слайд 9
Выполняется в
наукоемких
проектах
Разработка
эффективного кода,
развитие аналитических
способностей и навыка
алгоритмизации
Software Development (C++, etc.)
текст программы
Hardware Development
Pump up U
10.
Уровни познания алгоритмаСлайд 10
Разбор постановки задачи + Изучение принципа действия
Решение типовой задачи: (1) с учителем и (2) без учителя
Разбор модификаций (особое внимание бинарной версии)
Вывод оценок эффективности в отношении трудоемкости и
затрат памяти + рассмотрение зависимости по данным
Сравнительный анализ с аналогами
Программная реализация алгоритма
Экспериментальный анализ эффективности
Pump up U
11.
Слайд 11Формализация познания алгоритма
No
Уровень познания \ Алгоритм
Алгоритм 1
…
Алгоритм n
1
Изучение принципа действия
√
…
√
2
Разбор типовой задачи
√
…
√
3
Разбор оценок эффективности
√
…
4
Изучение модификаций
√
…
5
Изучение сферы и
особенностей применения
√
…
6
Сравнительный анализ
√
…
7
Программная реализация
√
…
√
√
Pump up U
12.
Algorithms and Data StructuresСлайд 12
Все это изучается в рамках дисциплины с типовым названием
Algorithms and Data Structures (от 1 до 4 семестров) на всех
«компьютерных» специальностях по направлениям подготовки
компьютерные науки, компьютерная инженерия, программная
инженерия, информатика и др.
Для
названных
специальностей
Algorithms and Data Structures является
фундаментальной дисциплиной. Так
как прежде всего учит думать:
разрабатывать,
анализировать,
сравнивать, выбирать, отрабатывать
логику решения задачи!
Pump up U
13.
FoundationalАрхитектура и структурная организация ЭВМ
Представление информации (системы счисления, правила перевода чисел,
кодирование информации, таблицы кодировки, прямой и дополнительный
код, форматы с фиксированной и с плавающей точкой (стандарт IEEE 754))
Двоичная логика, арифметика и операции сдвига
Основы дискретной математики
Общий принцип организации вычислений на компьютере
Принципы работы ЦП и его компонент (прежде всего – АЛУ)
Схемы из функциональных элементов (сумматор, …)
Основы компьютерных вычислений
Слайд 13
Теория чисел (теоретико-числовые алгоритмы)
Булева алгебра
Комбинаторика
Алгоритмы на графах (важно понимать как описывать структуры данных в
матричном виде)
Основы программирования
Типы данных, основы алгоритмизации и программирования
Pump up U
14.
Тема 1 Введениев дисциплину
2 Цели и задачи
дисциплины
Pump up U
15.
Наши ожидания и намеренияСлайд 15
Задачи (то, что мы будем прорабатывать по ходу изучения)
разобрать практически значимые алгоритмы
научиться анализировать, объективно выбирать и адекватно
применять алгоритмы для решения актуальных задач
овладеть методологий алгоритмизации
Цели (то, чего мы хотим добиться в результате)
приобрести знания и навыки для разработки эффективного
кода и, следовательно
успешной работы в сфере IT
Pump up U
16.
Тема 1 Введениев дисциплину
3 Структура
дисциплины
Pump up U
17.
Программа дисциплиныСлайд 17
Раздел 1. Введение в дисциплину (6 лекций)
Тема 1. Введение в дисциплину
Тема 2. Типы и структуры данных
Тема 3. Построение и анализ алгоритмов (Большая лекция)
Тема 4. Теоретико-числовые алгоритмы (Большая лекция)
Раздел 2. Сортировка и поиск (4 лекции)
Тема 5. Сортировка обменом
Тема 6. Сортировка слиянием
Тема 7. Сортировка распределением
Тема 8. Сортировка, поиск и вставка
Pump up U
18.
Программа дисциплиныСлайд 18
Раздел 3. Структуры данных (2 лекции)
Тема 9. Хеширование и хеш-таблицы
Тема 10. Деревья
Раздел 4. Специальные темы (6 лекций)
Тема 11. Полный перебор
Тема 12. Метод ветвей и границ
Тема 13. Разделяй и властвуй
Тема 14. Предварительная обработка
Тема 15. Жадные алгоритмы
Тема 16. Заключение
Pump up U
19.
Баланс времениСлайд 19
По дисциплине предусмотрено 18 лекций (36 часов), которые
будут посвящены изучению теоретического материала на
примере решения прикладных задач.
По дисциплине предусмотрено 9 лабораторных и практических
занятий (36 часов), которые посвящены программированию
наиболее важных алгоритмов обработки данных.
Распределение нагрузки «Теория / Практика»
50% / 50%
Pump up U
20.
ОцениваниеСлайд 20
На каждую лабораторную / практическую работу на лекции
выдается задание. Всего в течение семестра будет 10 заданий.
Суть каждого задания – разработать программную реализацию
заданного алгоритма.
Каждое задание оценивается в 5 бальной системе. Сумма
балов в конце семестра умноженная на 2 – это Ваш итог.
Максимальная сумма – 100 баллов.
На экзамене оценку можно улучшить.
Pump up U
21.
Тема 1 Введениев дисциплину
4 FAQ
Pump up U
22.
Frequently Asked QuestionsСлайд 22
Зачем нужна дисциплина?
учимся думать и писать эффективный код
Предназначение и содержание лекций?
теория + практика + ресурсы + задание
Предназначение практических видов занятий?
выполнение, консультация, сдача, оценивание
Самостоятельная работа?
внедрение европейской модели обучения; необходима для
успешной работы в сфере IT
Как сдать экзамен?
выставляется автоматически, оценку можно повысить
О роли английского языка?
это наше все: обучение + стажировки + работа в IT
Что мы забыли?
Pump up U
23.
Тема 1 Введениев дисциплину
5 Литература и
ресурсы
Pump up U
24.
Рекомендуемая литератураСлайд 24
Pump up U
25.
Рекомендуемая литератураСлайд 25
Pump up U
26.
Рекомендуемая литератураСлайд 26
Pump up U
27.
Рекомендуемая литератураСлайд 27
…
Pump up U
28.
Основные ресурсыСлайд 28
Электронные книги для скачивания: http://e-maxx.ru/bookz/
Важные алгоритмы: http://informatics.mccme.ru/
Важные алгоритмы: https://tproger.ru/tag/algorithms/
Соревнования, тренировки, задачи: http://codeforces.com/
Pump up U