Федеральное государственное автономное образовательное учреждение высшего профессионального образования "Национальный исследовательский университет "Высшая школа экономики" Московский институт электроники и математики Департамент прикладной математики Рабочая программа дисциплины Структуры данных и их применение для образовательной программы «Системы управления и обработки информации в инженерии» направления подготовки 01.04.04 «Прикладная математика» уровень «магистр» Автор программы: Поликарпов С.А., к. ф.-м. н., доцент, [email protected], [email protected] Одобрена на заседании кафедры ПИКСиС «__»_____2015 г. _______2015 г. Зав. кафедрой Л.Н. Щур_____________________ Рекомендована Академическим советом образовательной программы «___»____________ 2015 г., № протокола_________________ Утверждена «___»____________ 2015 г. Академический руководитель образовательной программы Е. А. Попова ________________ Москва, 2014 Настоящая программа не может быть использована другими подразделениями университета и другими вузами без разрешения кафедры-разработчика программы. Национальный исследовательский университет «Высшая школа экономики» Программа дисциплины «Структуры данных и их применение» для направления 01.04.04. «Прикладная математика» подготовки магистра 1 Область применения и нормативные ссылки Настоящая программа учебной дисциплины устанавливает минимальные требования к знаниям и умениям студента и определяет содержание и виды учебных занятий и отчетности. Программа предназначена для преподавателей, ведущих данную дисциплину, учебных ассистентов и студентов направления подготовки 01.04.04 «Прикладная математика», обучающихся по магистерской программе «Системы управления и обработки информации в инженерии» по специализации «Прикладные информационно-коммуникационные средства и системы» изучающих дисциплину «Структуры данных и их применение». Программа разработана в соответствии с: ФГОС ВПО по направлению подготовки 01.04.04. Прикладная математика (квалификация «Магистр»); Рабочим учебным планом университета по направлению подготовки 01.04.04 «Прикладная математика», магистерской программы «Системы управления и обработки информации в инженерии», специализации «Прикладные информационно-коммуникационные средства и системы», утвержденным в 2015 г. 2 Цели освоения дисциплины Целями освоения дисциплины «Структуры данных и их применение» являются изучение алгоритмов работы с данными, а также формирование у студентов знаний и умений, позволяющих применять изученные алгоритмы в процессе программирования на языках объектноориентированного программирования (C++, Java). 3 Компетенции обучающегося, формируемые в результате освоения дисциплины В результате освоения дисциплины студент должен: Знать теоретические основы алгоритмов работы с данными. Уметь при решении прикладных задач в области программирования выбирать оптимальную с точки зрения быстродействия и затрачиваемой памяти структуру для организации данных. Иметь навыки (приобрести опыт) применения конкретных алгоритмов работы с данными для решения задач в области программирования и построения математических моделей. В результате освоения дисциплины студент осваивает следующие компетенции: Компетенция Способность разрабатывать и исследовать математические модели объектов, систем, процессов и технологий, предназначенных для проведения расчетов, анализа, подготовки решений. Код по Дескрипторы – основные признаки ФГОС/ освоения (показатели достижения НИУ результата) ПК-7 Дает определение структур данных и методов (алгоритмов) работы с ними, поясняет основные особенности различных алгоритмов, понимает алгоритмы работы с данными в математических моделях, использует алгоритмы работы с данными при построении собственных математических моделей 2 Формы и методы обучения, способствующие формированию и развитию компетенции Лекции, практические занятия, самостоятельная работа Национальный исследовательский университет «Высшая школа экономики» Программа дисциплины «Структуры данных и их применение» для направления 01.04.04. «Прикладная математика» подготовки магистра Код по Дескрипторы – основные признаки ФГОС/ освоения (показатели достижения НИУ результата) Компетенция Способность разрабатывать наукоемкое программное обеспечение работы конкретного предприятия. 4 ПК-8 Дает определение структур данных и методов (алгоритмов) работы с ними, распознает структуры данных в примерах компьютерных программ, использует алгоритмы работы с данными при написании собственного программного обеспечения, применяет структуры данных и алгоритмы работы с ними при решении прикладных задач Формы и методы обучения, способствующие формированию и развитию компетенции Лекции, практические занятия, самостоятельная работа Место дисциплины в структуре образовательной программы Настоящая дисциплина относится к вариативной части профессионального цикла и является дисциплиной по выбору. Изучение данной дисциплины базируется на следующих дисциплинах: Основы программирования, дискретная математика. Основные положения дисциплины могут быть использованы в дальнейшем при изучении следующих дисциплин: научно-исследовательский семинар, выполнение выпускной квалификационной работы. 5 Тематический план учебной дисциплины № Название раздела Сложность алгоритма. Коллекции данных. Сортировка массива. Приоритетная очередь. Ассоциативные массивы. ИТОГО 1 2 3 4 5 6 Всего часов 26 28 30 30 30 144 Аудиторные часы ПрактиЛекСемические ции нары занятия 2 2 4 4 4 16 Формы контроля знаний студентов Тип контроля Текущий (неделя) Форма контроля Домашнее задание Итоговый Экзамен 1 год 1 модуль 2 модуль 7 неделя * Параметры ** Письменные задания по материалам предыдущих занятий Собеседование устно. Тестовые задачи на знание материала. 3 4 6 6 6 6 28 Самостоятельная работа 20 20 20 20 20 100 Национальный исследовательский университет «Высшая школа экономики» Программа дисциплины «Структуры данных и их применение» для направления 01.04.04. «Прикладная математика» подготовки магистра Критерии оценки знаний, навыков При выполнении домашнего задания студент должен продемонстрировать понимание особенностей алгоритмов работы с данными, суметь их применить в предлагаемых задачах. На экзамене студент должен продемонстрировать знание и понимание основных понятий, результатов и методов данной дисциплины. Оценки по всем формам текущего контроля выставляются по 10-ти балльной шкале. 6.1 7 Содержание дисциплины № Наименование раздеп/п ла дисциплины 1. Сложность алгоритма. Содержание раздела (дидактические единицы) Предмет курса. Задача о динамической связности. Отношение эквивалентности. Структуры данных для быстрого поиска связных компонент и быстрого объединения компонент. Понятие о сложности алгоритма. Примеры. Бинарный поиск в упорядоченном массиве. 2. Коллекции данных. Коллекции: стек и очередь. Их реализации на основе односвязного списка и расширяемого массива. Generics в Java. 3. Сортировка массива. Задача сортировки. Отношение полного порядка. Сортировка выбором. Сортировка вставками. Нижняя оценка числа сравнений при сортировке массива из N элементов. Сортировка слиянием. Быстрая сортировка. Рекурсия. Оценка сложности. 4. Приоритетная очередь. 5. Ассоциативные массивы. Приоритетная очередь. Элементарные реализации. Бинарная куча. Реализация приоритетной очереди на основе бинарной кучи. Ассоциативный массив (Symbol table). Свойства ключей. Бинарные деревья поиска. Красно-черные деревья. 8 Образовательные технологии Используются традиционные образовательные технологии – лекции и практические занятия. На практических занятиях преподаватель демонстрирует методы решения задач, происходит обсуждение домашнего задания. Практические занятия на компьютерах проходят в среде Linux, используется язык программирования Java. Для достижения хороших результатов при изучении дисциплины студентам необходимо самостоятельно дома решать задания, выданные преподавателем, а также разбирать материалы лекций и соответствующие темы в рекомендованных учебниках. 9 9.1 Оценочные средства для текущего контроля и аттестации студента Тематика заданий текущего контроля Примерные задания для контрольной работы в 1 модуле: 1. Массив id[] содержит числа 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Выполняется последовательность объединений элементов массива в классы эквивалентности методом QuickFind. В ответ запишите значения, содержащиеся в массиве id[] в результате последовательности объединений. 5-1, 6-4, 0-9, 3-9, 2-3, 3-5 Ответ:________________________ 4 Национальный исследовательский университет «Высшая школа экономики» Программа дисциплины «Структуры данных и их применение» для направления 01.04.04. «Прикладная математика» подготовки магистра 2. Массив id[] содержит числа 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Выполняется последовательность объединений элементов массива в классы эквивалентности методом WeightedQuickUnion. В ответ запишите значения, содержащиеся в массиве id[] в результате последовательности объединений. 0-2, 4-6, 9-7, 0-4, 1-9, 1-5, 9-8, 8-4, 2-3 Ответ:________________________ 3. Для стека целых чисел выполняется последовательность вызовов методов push и pop в произвольном порядке. Аргументами метода push являются числа 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. При каждом вызове метода push берется следующее по порядку число из этой последовательности и помещается в стек. При каждом вызове метода pop берется (удаляется) число из стека и печатается на экран. Может ли в результате получиться: 2 1 0 4 6 3 8 7 9 5? Ответ:________________________ Примерные задания для домашнего задания в 1 модуле: 1. Ниже, в левом столбце приведен массив строковых переменных в исходном состоянии. Массив сортируется по возрастанию в алфавитном порядке. Укажите алгоритм сортировки (выбором или вставками) и число выполненных итераций для состояний массива, указанных в остальных столбцах. erne erne bass erne bass hoki frog clam frog clam frog hake crab goat crab lynx hoki erne hake erne lamb lamb frog hoki frog hake lynx goat lamb goat toad toad hake lynx hake goat goat hawk toad hawk crab crab lamb crab hoki hawk hawk toad hawk toad bass bass lynx bass lynx pony pony pony pony pony myna myna myna myna myna seal seal seal seal seal clam clam hoki clam lamb slug slug slug slug slug Ответ:___________________________________________________________________________ 2. Массив сортируется слиянием. Сколько при этом будет выполнено сравнений элементов, если всего массив содержит 128 элементов? В общем случае, можно ли отсортировать этот массив, используя меньшее число сравнений элементов? Ответ:________________________ 3. Массив целых чисел 46, 69, 20, 52, 87, 93, 19, 16, 38, 27, 18, 49 сортируется по возрастанию методом быстрой сортировки. Укажите состояние массива после установки на свое место первого элемента. Ответ:___________________________________________________________________________ Примерные задания для контрольной работы во 2 модуле: 5 Национальный исследовательский университет «Высшая школа экономики» Программа дисциплины «Структуры данных и их применение» для направления 01.04.04. «Прикладная математика» подготовки магистра 1. Массив 88, 84, 54, 53, 75, 26, 32, 38, 44, 33 реализует бинарную кучу (родитель не меньше детей). Укажите состояние массива после последовательного добавления в бинарную кучу чисел: 81, 37, 27. Ответ:___________________________________________________________________________ 2. Массив 97, 95, 87, 94, 74, 37, 13, 59, 70, 33 реализует бинарную кучу (родитель не меньше детей). Укажите состояние массива после трех последовательных удалений из кучи максимального элемента. Ответ:___________________________________________________________________________ 6 Национальный исследовательский университет «Высшая школа экономики» Программа дисциплины «Структуры данных и их применение» для направления 01.04.04. «Прикладная математика» подготовки магистра 9.2 Вопросы для оценки качества освоения дисциплины Примерный перечень вопросов к экзамену по всему курсу. 1) Структуры данных для быстрого поиска связных компонент и быстрого объединения компонент в задаче о динамической связности. 2) Понятие о сложности алгоритма. Примеры. 3) Бинарный поиск в упорядоченном массиве. 4) Стек. Программная реализация на основе расширяемого массива. 5) Очередь. Программная реализация на основе односвязного списка. 6) Задача сортировки. Отношение полного порядка. Сортировка выбором. 7) Сортировка вставками. Нижняя оценка числа сравнений при сортировке массива из N элементов. 8) Сортировка слиянием. Оценка сложности. 9) Быстрая сортировка. Оценка сложности. 10) Приоритетная очередь. Элементарные реализации. 11) Бинарная куча. Реализация приоритетной очереди на основе бинарной кучи. 12) Ассоциативный массив. Бинарные деревья поиска. 10 Порядок формирования оценок по дисциплине 10.1 Порядок формирования оценок по дисциплине Преподаватель оценивает работу студентов на практических занятиях: оценивается активность студентов в дискуссиях, правильность решения задач. Оценки за работу на практических занятиях преподаватель выставляет в рабочую ведомость. Накопленная оценка по 10-ти балльной шкале за работу на практических занятиях определяется перед итоговым контролем - Оаудиторная. Накопленная оценка за текущий контроль учитывает результаты студента по текущему контролю следующим образом: Онакопленная= 0,9* Отекущий + 0,1* Оаудиторная где Отекущий рассчитывается как взвешенная сумма всех форм текущего контроля, предусмотренных в РУП Отекущий = Одз ; Результирующая накопленная оценка за дисциплину рассчитывается следующим образом: Онакопленная Итоговая= 0,5 Онакопленная 1+ 0,5 Онакопленная 2 Где Онакопленная 1, Онакопленная2 – накопленные оценки модулей 1 и 2, Способ округления накопленной оценки итогового контроля в форме экзамена: в пользу студента. В диплом выставляет результирующая оценка по учебной дисциплине, которая формируется по следующей формуле: Орезульт = 0,5·Онакопл + 0,5·Оитоговый Способ округления результирующей оценки по учебной дисциплине: в пользу студента. ВНИМАНИЕ: оценка за итоговый контроль блокирующая, при неудовлетворительной итоговой оценке она равна результирующей. 7 Национальный исследовательский университет «Высшая школа экономики» Программа дисциплины «Структуры данных и их применение» для направления 01.04.04. «Прикладная математика» подготовки магистра 11 Учебно-методическое и информационное обеспечение дисциплины 11.1 Основная литература 1. Р. Седжвик, К. Уэйн, Алгоритмы на Java, Вильямс, 2013. 11.2 Дополнительная литература 1. Д. Кнут, Искусство программирования, Вильямс, 2006-2013. 2. http://algs4.cs.princeton.edu/home - Algorithms, 4th Edition by Robert Sedgewick and Kevin Wayne. 3. http://www.coursera.org - Видео-лекции курса Algorithms I Принстонского университета на МООК-платформе Coursera. 4. http://shad.yandex.ru/lectures/algorithms.xml - Видео-лекции Школы анализа данных компании Яндекс. 11.3 Программные средства Для успешного освоения дисциплины, студент использует следующие программные средства: 1. Программная платформа Java SE 7. 2. Библиотеки функций для реализации заданий. 3. Среда разработки программ DrJava. Все указанные программные средства в свободном доступе имеются по адресу в сети Интернет http://algs4.cs.princeton.edu/windows/ 12 Материально-техническое обеспечение дисциплины Для проведения практических занятий необходим компьютерный класс персональных ЭВМ. 8