УТВЕРЖДАЮ Зам. директора Института кибернетики по учебной работе ________________ С.А. Гайворонский «___»_____________2013 г. РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ Алгоритмы и структуры данных НАПРАВЛЕНИЕ ООП 23100 Программная инженерия ПРОФИЛИ ПОДГОТОВКИ Разработка программно-информационных систем КВАЛИФИКАЦИЯ (СТЕПЕНЬ) БАЗОВЫЙ УЧЕБНЫЙ ПЛАН ПРИЕМА КУРС 2 СЕМЕСТР КОЛИЧЕСТВО КРЕДИТОВ бакалавр 2013 г. 3 3 кредита ECTS ВИДЫ УЧЕБНОЙ ДЕЯТЕЛЬНОСТИ И ВРЕМЕННОЙ РЕСУРС: Лекции 24 час. Лабораторные занятия 24 час. АУДИТОРНЫЕ ЗАНЯТИЯ 48 час. САМОСТОЯТЕЛЬНАЯ РАБОТА 48 час. ИТОГО 96 час. ВИД ПРОМЕЖУТОЧНОЙ АТТЕСТАЦИИ ОБЕСПЕЧИВАЮЩЕЕ ПОДРАЗДЕЛЕНИЕ экзамен, зачет кафедра ОСУ ЗАВЕДУЮЩИЙ КАФЕДРОЙ ОСУ ____________ О.Б. Фофанов РУКОВОДИТЕЛЬ ООП ___________ ПРЕПОДАВАТЕЛЬ ____________ Фофанов О.Б. 2013 г. Чердынцев Е.С. 1. ЦЕЛИ ОСВОЕНИЯ ДИСЦИПЛИНЫ Целями преподавания дисциплины являются: изучение основных абстрактных типов данных (АТД) (примитивные типы, массивы, комбинированные типы, списки, стеки, очереди, деки, деревья, графы, хэш-таблицы) и статическая и динамическая реализации АТД изучение способов описания алгоритмов и методов исследования и оценки их пространственной и временной сложности; изучение наиболее широко использующихся в практике алгоритмов поиска, сортировки и модификации данных. Поставленные цели полностью соответствуют целям (Ц1-Ц5) ООП. К Формулировка цели од ц Требования ФГОС, критерии АИОР и заинтересованных работодателей. ели 1 2 3 4 5 Ц Подготовка выпускников к проектно-конструкторской деятельности в области создания и внедрения аппаратных и программных средств объектов профессиональной деятельности в соответствии с техническим заданием и с использованием средств автоматизации проектирования. Ц Подготовка выпускников к проектно-технологической деятельности в области создания компонентов программных комплексов и баз данных, автоматизации технологических процессов с использованием современных инструментальных средств и технологий программирования. Ц Подготовка выпускников к комплексным инженерным исследованиям для решения задач, связанных с разработкой аппаратных и программных средств объектов профессиональной деятельности. Ц Подготовка специалистов к монтажно-наладочной и сервисноэксплуатационной деятельности для ввода разработанных объектов профессиональной деятельности в опытную и промышленную эксплуатацию с выполнением требований защиты окружающей среды и правил безопасности производства. Ц Подготовка выпускников к самообучению и непрерывному профессиональному самосовершенствованию. Требования ФГОС. Критерии АИОР, соответствующие международным стандартам EUR-ACE и FEANI. Требования ФГОС. Критерии АИОР, соответствующие международным стандартам EUR-ACE и FEANI. Требования ФГОС. Критерии АИОР, соответствующие международным стандартам EUR-ACE и FEANI. Требования ФГОС. Критерии АИОР, соответствующие международным стандартам EUR-ACE и FEANI. Запросы отечественных и зарубежных работодателей. Требования ФГОС. Критерии АИОР, соответствующие международным стандартам EUR-ACE и FEANI. Запросы отечественных и зарубежных работодателей. 2. МЕСТО ДИСЦИПЛИНЫ В СТРУКТУРЕ ООП Дисциплина «Алгоритмы и структуры данных» (Б2.Б3) является базовой дисциплиной профессионального цикла (Б3.В). Для её успешного усвоения необходимы: знания базовых понятий информатики и вычислительной техники, хотя бы одного языка программирования, представления и преобразования информации в компьютере; умения программировать на языке ООП владение навыками работы на персональном компьютере. Пререквизитами данной дисциплины являются дисциплина «Информатика» Б2.В5, «Линейная алгебра и аналитическая геометрия» (Б2.Б1.1), «Введение в информационные технологии» (Б2.В2 ), Кореквизиты – «Информатика и программирование» (Б3.Б2). 3. РЕЗУЛЬТАТЫ ОСВОЕНИЯ ДИСЦИПЛИНЫ В соответствии с требованиями ООП освоение дисциплины «Алгоритмы и структуры данных» направлено на формирование у студентов следующих компетенций (результатов обучения), в т. ч. в соответствии с ФГОС: Результа т обучения Таблица 1. Составляющие результатов обучения, которые будут получены при изучении дисциплины «Алгоритмы и структуры данных» Код Знания Код З.2.2.1 Основные понятия и терминологию в области вычислительной техники; способы представление информации в памяти компьютера; альтернативные способы описания алгоритмов; методы исследования эффективности алгоритмов: Алгоритмы сортировки информации; базовые типы данных и операции с ними; основные абстрактные типы данных (АТД) и способы их реализации У.2.2.1 Формализовать вычислительные и логические задачи; представлять алгоритмы вычислительных и логических задач; записывать алгоритмы решения задач на псевдокоде В.2.2.1 У.5.1 Анализировать исходные данные и выбирать наиболее подходящий АТД и их реализации. Осуществлять анализ и выбор соответствующих алгоритмов сортировки В.5.1 Р2 З.5.1 Р5 Умения Код Владения Методами алгоритмизации, различными способами описания алгоритмов, кодирования на псевдокоде; методами исследования эффективности алгоритмов различными способами Методами отладки и тестирования программных приложений и экспериментальног о исследования временной и пространственной сложности исследуемых алгоритмов сортировки Результа т обучения Код Знания Код З.5.2 Поисковые алгоритмы и области их использования; способы представления информации в виде деревьев; принципы хеширования данных и методов определения хешфункций. У.5.2 Умения Анализировать специфику задач информационного поиска и выбирать наиболее эффективные алгоритмы, руководствуясь критериями временной и пространственной сложности Код Владения В.5.2 Методами отладки и тестирования программных приложений и экспериментальног о исследования временной и пространственной сложности исследуемых алгоритмов информационного поиска В результате освоения дисциплины «Алгоритмы и структуры данных» студентом должны быть достигнуты следующие результаты: Таблица 2. Планируемые результаты освоения дисциплины (модуля) Код результ атов РД1 РД2 РД3 РД4 Результат обучения (выпускник должен быть готов) Применяет базовые и специальные знания в области современных информационных технологий для решения инженерных и экономических задач. Проводит теоретические и экспериментальные исследования, включающие поиск и изучение необходимой научно-технической информации, проведение вычислительных экспериментов, анализ и интерпретация полученных данных, в области прикладной информатики. Проводить исследования, связанные с оценкой информационной безопасности проектов. Знает основы теории информации; принципы алгоритмизации; базовые АТД и соответствующие структуры данных; возможности языков программирования высокого уровня в части представления АТД и структур данных Умеет содержательно и математически осуществлять постановку задач проектирования АТД и структур данных , их алгоритмизацию; владеет навыками написания и отладки программных приложений на языках высокого уровня 4. СТРУКТУРА И СОДЕРЖАНИЕ ДИСЦИПЛИНЫ 4.1 Аннотированное содержание разделов дисциплины: Тема № 1. Основные понятия алгоритмов структур данных Концепция типа данных. Простейшие типы данных. Простейшие стандартные типы данных. Ограниченные типы (диапазоны). Массивы. Записи. Записи с вариантами. Множества. Представление массивов, записей и множеств. Определение и свойства алгоритма, способы описания алгоритмов. Анализ сложности и эффективности алгоритмов. Оценка временной и пространственной сложности алгоритмов на основе асимптотических соотношений (О, -Θ и -Ω нотаций). Лабораторная работа № 1. Определение временной и пространственной сложности алгоритмов Тема № 2. Данные с динамической структурой Линейные списки: основные операции, упорядоченные списки и перестройка списков. Стеки, очереди, деки, нелинейные структуры данных, иерархические списки, мультисписки. Реализация перечисленных структур данных. Стандартные классы в ООП, поддерживающие динамические структуры. Лабораторная работа № 2. Реализация динамических структур на основе линейного и динамического представления Тема № 3. Алгоритмы поиска Задачи поиска и кодирования (сжатия) данных. Кодовые деревья, оптимальные префиксные коды, исчерпывающий поиск. Линейный поиск. Поиск делением пополам (двоичный поиск). Поиск в таблице. Прямой поиск строки. Поиск в строке (алгоритмы Кнута, Мориса и Прата, Боуэра-Мура, Рабина-Карпа). Лабораторная работа № 3. Сравнительный анализ алгоритмов КМП и БоуэраМура поиска текстовых паттернов. Тема № 4. Алгоритмы сортировки Сортировка массивов: прямым включением, прямым выбором и прямым обменом. Улучшенные методы сортировки: включениями с уменьшающимися расстояниями, с помощью дерева, разделением. Нахождение медианы. Сравнение методов сортировки массивов. Файлы: организация и обработка. Сортировка файлов: прямое слияние, естественное слияние, сбалансированное многопутевое слияние, многофазная сортировка, распределение начальных серий. Лабораторная работа № 4. Исследование и сравнительный анализ временной сложности алгоритмов сортировки вставками и выбором. Тема № 5. Деревья Определение деревьев, рекурсивная природа деревьев Бинарные деревья. Представление деревьев в памяти с помощью статических и динамических структур. Обходы деревьев. Т-деревья и алгоритмы их обработки. Деревья оптимального поиска. Сбалансированные по высоте (АВЛ) и рандомизированные деревья поиска и алгоритмы работы с ними. Восстановление сбалансированности, левое и правое вращение. 2-3 деревья, черно-красные деревья. Сильноветвящиеся (B-) деревья. Поиск информации, удаление и вставка узлов в сильноветвящихся деревьях. Лабораторная работа № 5. Алгоритмы поиска, вставки и удаления узлов для сбалансированных деревьев Тема № 6. Быстрый доступ к данным Хеширование данных. Способы вычисления хеш-функций. Разрешение коллизий. Линейное, квадратичное опробование. Метод цепочек, двойное хеширование. Оценка качества хеш-функций. Инвертированные индексы. Битовые карты Лабораторная работа № 6. Сравнительный анализ алгоритмов хеширования на основе определения числа коллизий Таблица 3 Структура дисциплины по разделам и формам организации обучения Название раздела/темы 1. Основные понятия алгоритмов и структур данных 2 Данные с динамической структурой 3. Алгоритмы поиска Аудиторная работа (час) Лекции Практ./сем. Лаб. зан. занятия 2 4 4 4. Алгоритмы сортировки 4 5. Деревья 6 6. Быстрый доступ к данным Итого 4 24 - - СРС (час) Колл, Контр.Р. 4 6 4 8 4 8 4 8 Контр.Р. 6 12 Контр.Р. 4 8 24 48 Ито го 12 16 16 16 24 16 96 5. ОБРАЗОВАТЕЛЬНЫЕ ТЕХНОЛОГИИ В таблице 2 приведено описание образовательных технологий, используемых в данном модуле. Таблица 4 Методы и формы организации обучения (ФОО) ФОО Лекц. Методы IT-методы Работа в команде Case-study Игра Методы проблемного обучения. Обучение на основе опыта Опережающая самостоятельная работа Проектный метод Поисковый метод Исследовательский метод Другие методы √ Лаб. раб. Тр*., Мк** СРС √ √ √ √ К. пр. √ √ √ √ √ *-Тренинг, **-Мастер-класс 6. ОРГАНИЗАЦИЯ И УЧЕБНО-МЕТОДИЧЕСКОЕ ОБЕСПЕЧЕНИЕ САМОСТОЯТЕЛЬНОЙ РАБОТЫ СТУДЕНТОВ 6.1 Самостоятельная работа студентов (СРС) состоит из текущей СРС. Текущая СРС – работа с лекционным материалом, подготовка к лабораторным работам, практическим занятиям с использованием сетевых образовательных ресурсов; опережающая самостоятельная работа; выполнение домашних заданий; изучение тем, вынесенных на самостоятельную проработку; подготовка к контрольным работам и экзамену. Творческая проблемно-ориентированная самостоятельная работа (ТСР) – поиск, анализ, структурирование информации по темам индивидуальных курсовых заданий. 6.2 Контроль самостоятельной работы Оценка результатов самостоятельной работы организуется как единство двух форм: самоконтроль и контроль со стороны преподавателя. Самоконтроль в обучающей программе, контроль знаний, полученных с помощью обучающей программы (20 контролирующих тестов). Рубежный контроль в виде тестов по теоретической части. По результатам текущего и рубежного контроля формируется допуск студента к экзамену. Экзамен проводится в письменной или устной форме. 6.3. Учебно-методическое обеспечение самостоятельной работы студентов Для самостоятельной работы студентов используются сетевые образовательные ресурсы, пособия и учебники в электронной форме. 7. СРЕДСТВА (ФОС) ТЕКУЩЕЙ И ИТОГОВОЙ ОЦЕНКИ КАЧЕСТВА ОСВОЕНИЯ ДИСЦИПЛИНЫ Для организации текущего контроля полученных студентами знаний по данной дисциплине проводится 2 тестирования. Образец контролирующего теста приведен ниже (ПРИЛОЖЕНИЕ 1) . Для проведения экзамена предлагаются 34 вопроса. Экзаменационный билет содержит 4 пункта. 8. УЧЕБНО-МЕТОДИЧЕСКОЕ И ИНФОРМАЦИОННОЕ ОБЕСПЕЧЕНИЕ ДИСЦИПЛИНЫ Основная литература 1. Т.Кормен и др. Алгоритмы. Построение и анализ. М. Изд-во "Вильямс", 2007 г 2. Цапко И. В. Структуры и алгоритмы обработки данных : [учеб. пособие для студ. вузов] / И. В. Цапко ; Том. политехн. ун-т. – Томск : Изд-во Том. политехн. ун-та, 2007. 3. Альфред Ахо, Джон Э. Хопкрофт, Д. Ульман Структуры данных и алгоритмы. М., Изд-во "Вильямс", 2000 г. 4. Н. Вирт Алгоритмы + структуры данных = программы. М., "Мир", 1985г. 5. Н. Вирт Алгоритмы и структуры данных. М., Изд-во "Вильямс", 1998г. 6. Д. Кнут. Искусство программирования для ЭВМ. Т.1. Основные алгоритмы. М., "Мир", 1976 г., переиздание - М., Изд-во "Вильямс", 2000г. 7. Д. Кнут. Искусство программирования для ЭВМ. Т.3. Сортировка и поиск. М., "Мир", 1978 г., переиздание - М., Изд-во "Вильямс", 2000 г. Дополнительная литература 1. Уильям Топп, Уильям Форд. Структуры данных в С++. М., Изд-во "Бином", 2000 г. 2. Вирт Н. Алгоритмы и структуры данных. – М.: Мир, 1989. – 360с. 3. Мейер Б. Методы программирования. Том 1 и 2. – М., Мир, 1982. – 356 и 368с.. 4. Гудман С., Хидетниеми С. Введение в разработку и анализ алгоритмов. – М.: Мир, 1981. 5. Фофанов О.Б. Алгоритмы и структуры данных: [учеб. пособие для студ. вузов, электронный ресурс] О.Б. Фофанов; Том. политехн. ун-т. – Томск: Изд-во Том. политехн. ун-та, 2013. Программное обеспечение и Internet-ресурсы: 1. Электронные курсы лекций http://www.intuit.ru/department/algorithms/staldata/ http://www.mstu.edu.ru/study/materials/zelenkov/ch_1_1.html 2. Среда разработки Java SE 6 Update 23 3. Визуальные IDE Java IntelliJ IDEA , Eclipse 4. Web-ресурсы a. http://www.informatics.susx.ac.uk/courses/dats/notes/html/index.html b. http://rain.ifmo.ru/cat/view.php/vis c. http://informatics.mccme.ru/moodle/ 9. МАТЕРИАЛЬНО-ТЕХНИЧЕСКОЕ ОБЕСПЕЧЕНИЕ ДИСЦИПЛИНЫ Лабораторные работы выполняются в компьютерном классе, оснащенном 10-ю компьютерами на базе процессоров Intel Core 4 Duo. Программа составлена на основе Стандарта ООП ТПУ в соответствии с требованиями ФГОС по направлению 231000 «Программная инженерия» и профилю подготовки «Разработка программно-информационных систем». Программа одобрена на заседании кафедры оптимизации систем управления (протокол № 13 от «27» июня 2013 г.). Автор Фофанов О.Б. Рецензент Марухина О.В. ПРИЛОЖЕНИЕ 1 Томский политехнический университет Кафедра оптимизации систем управления Направление 23100 – «Программная инженерия»; Дисциплина Алгоритмы и структуры данных ТЕСТ№1 по теме «Сортировка» ВАРИАНТ1 Фамилия студента____________________________________ Группа _______________ Даны три условия окончания просеивания при сортировке прямым включением. Найдите среди них лишнее. 1. найден элемент a(i) с ключом, меньшим, чем ключ у x; 2. найден элемент a(i) с ключом, большим, чем ключ у x (верный); 3. достигнут левый конец готовой последовательности. Какой из критериев эффективности сортировки определяется формулой M=0,01*n*n+10*n ? 1. число сравнений (верный); 2. время, затраченное на написание программы; 3. количество перемещений; 4. время, затраченное на сортировку. Томский политехнический университет Кафедра оптимизации систем управления Направление 23100 – «Программная инженерия»; Дисциплина Алгоритмы и структуры данных ТЕСТ № 2 по теме «Деревья» ВАРИАНТ2 Фамилия студента____________________________________ Группа _______________ При обходе дерева слева направо получаем последовательность… 1. отсортированную по убыванию; 2. неотсортированную (верный); 3. отсортированную по возрастанию. При обходе дерева слева направо его элемент заносится в массив… 1. при втором заходе в элемент (верный); 2. при первом заходе в элемент; 3. при третьем заходе в элемент. ПРИЛОЖЕНИЕ 2 ОЦЕНКИ А+ 96-100 баллов А 90-95 баллов B+ 80-89 баллов B 70-79 баллов С+ 64-69 баллов КАЛЕНДАРНЫЙ РЕЙТИНГ-ПЛАН ИЗУЧЕНИЯ ДИСЦИПЛИНЫ Лекции, ч. 24 «Алгоритмы и структуры данных» Практ. занятия, ч. «Отлично» «Хорошо» Лаб. занятия, ч. 24 Всего ауд. работы, ч. 48 СРС, ч. 48 3 семестр 2013/14 учебного года ИТОГО, часов 96 Лектор: Кредитов 3 Контроль Экз., зач. для студентов группы 8К00, института Кибернетики, ООП «Программная инженерия» «Удовл.» С Зачтено D >= 55 баллов Неудовл./Незаче т F менее 55 баллов Кол-во часов Информационное Оценивающие мероприятия Ауд. Сам. Защита групповых проектов Контрольн ая работа Защита расчетных работ Вид учебной деятельности по разделам Защита ЛР Недел я Дата начала недели Результат обучения по дисципл ине Фофанов Олег Борисович Колво балло в обеспечение Учебная литература Интернет ресурсы Кол-во часов Ауд. РД3 Лабораторная работа № 1. Определение временной и пространственной сложности алгоритмов Сам. 2 3 Защита групповых проектов Контрольн ая работа Защита расчетных работ Вид учебной деятельности по разделам Тема 1. Основные понятия алгоритмов и структур данных 1-2 Информационное Оценивающие мероприятия Защита ЛР Недел я Дата начала недели Результат обучения по дисципл ине Колво балло в 3 Интернет ресурсы ОСН1 ИР1 4 ОСН1 4 РД1 РД3 Учебная литература 2 Тема 2. Динамические структуры данных 3-4 обеспечение ОСН4 Лабораторная работа № 2. Реализация динамических структур на основе линейного и динамического представления Тема 3. Алгоритмы поиска РД1 8 4 4 ИР1 ОСН5 4 ОСН1 4 ОСН2 РД2 5-6 РД3 Лабораторная работа № 3. Сравнительный анализ алгоритмов КМП и Боуэра-Мура поиска текстовых паттернов. 8 4 5 5 ОСН3 ОСН4 РД4 ДОП1 ИР1 Кол-во часов Информационное Оценивающие мероприятия Ауд. Сам. Защита групповых проектов Контрольн ая работа Защита расчетных работ Вид учебной деятельности по разделам Защита ЛР Недел я Дата начала недели Результат обучения по дисципл ине Колво балло в обеспечение Учебная литература Интернет ресурсы ДОП2 Тема 4. Алгоритмы сортировки ОСН1 4 ОСН2 РД1 РД2 7-8 РД3 Лабораторная работа № 4. Исследование и сравнительный анализ временной сложности алгоритмов сортировки вставками и выбором. ОСН3 3 4 5 8 6 ОСН6 ОСН7 РД4 ДОП1 РД1 9 КОНФЕРЕНЦ-НЕДЕЛЯ 5 5 10 РД2 Всего по контрольной точке (аттестации) 1 30 ИР1 Кол-во часов Информационное Оценивающие мероприятия Ауд. Сам. Защита групповых проектов Контрольн ая работа Защита расчетных работ Вид учебной деятельности по разделам Защита ЛР Недел я Дата начала недели Результат обучения по дисципл ине Колво балло в Тема 5. Деревья обеспечение Учебная литература Интернет ресурсы ОСН1 6 ОСН2 РД1 10-12 РД2 РД4 Лабораторная работа № 5. Алгоритмы поиска , вставки и удаления узлов для сбалансированных деревьев ОСН6 5 5 ИР1 ОСН7 6 8 ДОП1 ДОП3 13 -14 Тема 6. Быстрый доступ к данным. 4 ОСН1 ОСН2 ОСН3 РД3 РД4 Лабораторная работа № 6. Сравнительный анализ алгоритмов хеширования на основе определения числа коллизий 4 5 5 ОСН4 4 ОСН6 ОСН7 ИР1 Кол-во часов Информационное Оценивающие мероприятия Ауд. Сам. Защита групповых проектов Контрольн ая работа Защита расчетных работ Вид учебной деятельности по разделам Защита ЛР Недел я Дата начала недели Результат обучения по дисципл ине Колво балло в обеспечение Учебная литература Интернет ресурсы ДОП1 РД1 РД2 15-17 РД3 ОСН1 Индивидуальная работа. Реализация алгоритмов обхода деревьев. Прошитые деревья ОСН2 10 5 5 ИР1 ДОП1 РД4 ДОП3 ОСН1 ОСН2 РД1 ОСН3 РД2 18 КОНФЕРЕНЦ-НЕДЕЛЯ 5 10 15 ОСН4 РД3 ДОП1 РД4 ДОП2 ДОП3 Всего по контрольной точке (аттестации) 2 60 ИР1 Кол-во часов Информационное Оценивающие мероприятия Ауд. Сам. Экзамен ОБЩИЙ ОБЪЕМ РАБОТЫ ПО ДИСЦИПЛИНЕ Защита групповых проектов Контрольн ая работа Защита расчетных работ Вид учебной деятельности по разделам Защита ЛР Недел я Дата начала недели Результат обучения по дисципл ине Колво балло в 40 48 48 100 обеспечение Учебная литература Интернет ресурсы