МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ Саратовский государственный университет имени Н.Г. Чернышевского Факультет компьютерных наук и информационных технологий УТВЕРЖДАЮ ___________________________ "__" __________________20__ г. Рабочая программа дисциплины Типы и структуры данных Направление подготовки 231000 Программная инженерия Профиль подготовки Разработка программно-информационных систем Квалификация (степень) выпускника Бакалавр Форма обучения очная Саратов, 2011 год 1. Цели освоения дисциплины «Типы и структуры данных» Целями освоения данной дисциплины являются формирование общих представлений о типах и структурах данных, способах представления данных в ЭВМ, алгоритмах обработки структур данных, развитие у студентов компетенций в области применения различных типов и структур данных при решении конкретной задачи. 2.Место дисциплины «Типы и структуры данных» в структуре ООП бакалавриата «Программная инженерия» Дисциплина «Типы и структуры данных» входит в раздел «Профессиональный цикл. Базовая часть» ФГОС-3 направления подготовки «Программная инженерия». Для успешного усвоения данной дисциплины необходимы компетенции, сформированные у обучающихся в результате обучения в средней общеобразовательной школе, а также при изучении таких дисциплин как «Основы программирования». Сформированные в процессе изучения дисциплины «Типы и структуры данных» компетенции, необходимы студенту при освоении таких дисциплин профессионального цикла, как «Объектно-ориентированное программирование», «Теория кодирования и передачи данных». 3 Компетенции обучающегося, формируемые в результате освоения дисциплины «Типы и структуры данных» В результате освоения дисциплины «Типы и структуры данных» студент должен обладать следующими профессиональными компетенциями: Способность к формализации в своей предметной области с учетом ограничений используемых методов исследования (ПК-2); Способность формализовать предметную область программного проекта и разработать спецификации для компонентов программного продукта (ПК-6); В результате освоения дисциплины обучающийся должен: Знать: способы представления различных структур данных в ЭВМ; алгоритмы обработки структур данных; технологии программирования с использованием абстрактных типов данных. Уметь: выбрать наиболее эффективный алгоритм для решения задачи; выбрать подходящие структуры данных; разрабатывать спецификации для конкретных компонентов программного продукта. Владеть: навыками самостоятельной оценки использования структур данных и алгоритмов их обработки; навыками реализации абстрактных типов данных в конкретные структуры данных на языке программирования; навыками реализации выбранного алгоритма на языке программирования; навыками формализации предметной области программного продукта. 4. Структура и содержание дисциплины «Типы и структуры данных» Общая трудоемкость дисциплины составляет 4 зачетных единицы 144 часа (из них 72 часа аудиторных). № п/п Раздел дисциплины 1 Понятие данных 2 Основные абстрактные данных С е м ес тр Неде ля семе стра Виды учебной работы, включая самостоятельную работу студентов и трудоемкость (в часах) 1 Лек. 2 Лаб 2 3 2-4 6 6 6 типа 3 ПР С 2 типы 3 Деревья 3 5-7 6 6 6 4 Множества 3 8-10 6 6 6 Формы текущего контроля успеваемости (по неделям семестра) Формы промежуточной аттестации (по семестрам) Участие в лабораторных занятиях – 1 нед. Контрольная работа №1– 10 нед. Участие в лабораторных занятиях – 2-4 нед. Контрольная работа №1– 10 нед. Участие в лабораторных занятиях – 5-7 нед. Контрольная работа №1 – 10 нед. Участие в лабораторных занятиях – 8-10 нед. Контрольная работа №1– 10 нед. 5 Ориентированные графы 3 11-13 6 6 6 6 Неориентированные графы 3 14-16 6 6 6 7 Структуры данных 3 для внешней памяти. Управление памятью. 17 2 2 2 8 Понятие эффективности алгоритмов 18 2 2 2 ИТОГО 3 3 Промежуточная аттестация 36 36 36 Участие в лабораторных занятиях – 11-13 нед. Контрольная работа №2– 17 нед. Участие в лабораторных занятиях – 14-16 нед. Контрольная работа №2– 17 нед. Участие в лабораторных занятиях – 17 нед. Контрольная работа №2 – 17 нед. Участие в лабораторных занятиях – 18 нед. Зачет 1. Понятие типа данных Простые типы данных. Представление различных типов данных в ЭВМ. Самостоятельная работа – подробное изучение представления различных типов данных в ЭВМ, подготовка к контрольной работе. 2. Основные абстрактные типы данных. Списки. Реализация списков посредством массивов и указателей. Связанные списки. Стеки. Очереди. Стеки и рекурсивные процедуры. Самостоятельная работа – изучение и сравнение различных абстрактных типов данных, подготовка к контрольной работе. 3. Деревья Основная терминология. Способы обхода деревьев. Реализация деревьев. Двоичные деревья. Реализация двоичных деревьев с помощью указателей. Коды Хаффмана. Самостоятельная работа – подробное изучение реализации деревьев, подготовка к контрольной работе. 4. Множества Система обозначений для множеств. Реализация множеств. Словари. Структуры данных, основанные на хеш-таблицах. Оценка эффективности хеш-функций. Деревья двоичного поиска. Нагруженные деревья. Реализация множеств посредством сбалансированных деревьев. Самостоятельная работа – подробное изучение реализаций множеств, подготовка к контрольной работе. Контрольная работа №1. 5. Ориентированные графы Основные определения. Представление ориентированных графов. Задача нахождения кратчайшего пути. Алгоритм Дейкстры. Кратчайший путь между двумя парами вершин. Алгоритм Флойда. Обход ориентированных графов. Орграфы. Сильная связность. Самостоятельная работа – сравнение алгоритмов Дейкстры и Флойда, подготовка к контрольной работе. 6. Неориентированные графы Основные определения. Представление неориентированных графов. Остовные деревья минимальной стоимости. Алгоритм Прима. Алгоритмы Крускала. Обход неориентированных графов. Поиск в глубину, поиск в ширину. Точки сочленения и двусвязные компоненты. Самостоятельная работа – сравнение алгоритмов Прима и Крускала, подробное изучение поиска в глубину и ширину, подготовка к контрольной работе. 7. Структуры данных для внешней памяти. Управление памятью Модель внешних вычислений. Хранение данных в файлах. Ускорение операций с файлами. Хешированные файлы, индексированные файлы, несортированные файлы с плотным индексом. Внешние деревья поиска. Вдеревья. Проблемы управления памятью. Управление блоками одинакового размера. Алгоритм Дойча-Шорра-Уэйта. Фрагментация и уплотнение пустых блоков. Уплотнение памяти. Алгоритм Морриса. Самостоятельная работа – подробное изучение алгоритмов управления памятью, подготовка к контрольной работе. Контрольная работа №2. 8. Понятие эффективности алгоритмов Эффективность алгоритмов. Анализ рекурсивных программ. Алгоритмы «разделяй и властвуй». «Жадные» алгоритмы. Самостоятельная работа – подробное изучение эффективности алгоритмов, подготовка к экзамену. 5. Образовательные технологии В учебном процессе при реализации компетентностного подхода используются такие активные и интерактивные формы проведения занятий как модельный метод обучения, метод развивающей кооперации, разбор конкретных ситуаций, командное выполнение заданий с распределением ролей. Широко используются мультимедийные презентации при представлении лекционного материала. 6. Учебно-методическое обеспечение самостоятельной работы студентов. Оценочные средства для текущего контроля успеваемости, промежуточной аттестации по итогам освоения дисциплины «Типы и структуры данных». 7. Учебно-методическое и информационное обеспечение дисциплины «Типы и структуры данных» а) основная литература: 1. Круз Р. Л. Структуры данных и проектирование программ (Data Structures and Program Design) — М.: БИНОМ. Лаб. Знаний, 2008. 2. Ахо А. В., Хопкрофт Дж. Э., Ульман Дж. Д. Структуры данных и алгоритмы (Data Structures and Algorithms).— Киев: Вильямс, 2007. б) дополнительная литература: 1. Кузнецов В. А., Караваев А. М. Оптимизация на графах (алгоритмы и реализация) — Петрозаводск: Изд-во ПетрГУ, 2007. 2. Каррано Фр. М., Причард Дж. Дж. Абстракция данных и решение задач на C++: Стены и зеркала (Data Abstraction and Problem Solving with C++) — Киев: Изд. дом "Вильямс", 2003. - 847 с. в) программное обеспечение и Интернет-ресурсы 1. Алексеев В. Е., Таланов В. А. Структуры данных и модели вычислений.http://www.intuit.ru/department/algorithms/dscm/ 8. Материально-техническое обеспечение дисциплины «Типы и структуры данных» Для данного курса необходимо наличие компьютерного класса, оборудованного соответствующим программным обеспечением для работы на языке С++ (например, Visual Studio или подобной средой разработки программ). Программа составлена в соответствии с требованиями ФГОС ВПО с учетом рекомендаций и Примерной ООП ВПО по направлению и профилю подготовки «Разработка программно-информационных систем». Автор доцент каф. МКиКН ___________ А. С. Иванова Программа одобрена на заседании кафедры математической кибернетики и компьютерных наук от года 22.02.2011, протокол № 13. Заведующий кафедрой математической кибернетики и компьютерных наук ___________ А. С. Иванов Декан факультета КНиИТ, доцент ___________ А. Г. Федорова