Алгоритмы и структуры данных - Томский политехнический

advertisement
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ
ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО
ОБРАЗОВАНИЯ
НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ
ТОМСКИЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
УТВЕРЖДАЮ
Зам. директора Института кибернетики
по учебной работе
________________ С.А. Гайворонский
«___»_____________2015 г.
РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ
Алгоритмы и структуры данных
НАПРАВЛЕНИЕ ООП
09.03.02 Информационные системы и технологии
ПРОФИЛИ ПОДГОТОВКИ
Информационные системы и технологии в бизнесе
КВАЛИФИКАЦИЯ (СТЕПЕНЬ)
БАЗОВЫЙ УЧЕБНЫЙ ПЛАН ПРИЕМА
КУРС 2
СЕМЕСТР 4
КОЛИЧЕСТВО КРЕДИТОВ
ПРЕРЕКВИЗИТЫ
КОРЕКВИЗИТЫ
бакалавр
2015 г.
3 кредита ECTS
Б1.БМ2.4, Б1.ВМ4.7
Б1.ВМ4.12, Б1.ВМ4.8.2
ВИДЫ УЧЕБНОЙ ДЕЯТЕЛЬНОСТИ И ВРЕМЕННОЙ РЕСУРС:
Лекции
16 час.
Лабораторные занятия
16 час.
АУДИТОРНЫЕ ЗАНЯТИЯ
САМОСТОЯТЕЛЬНАЯ РАБОТА
32 час.
76 час.
ИТОГО
108 час.
ФОРМА ОБУЧЕНИЯ
очная
ВИД ПРОМЕЖУТОЧНОЙ АТТЕСТАЦИИ
ОБЕСПЕЧИВАЮЩЕЕ ПОДРАЗДЕЛЕНИЕ
зачет
кафедра АиКС
ЗАВЕДУЮЩИЙ КАФЕДРОЙ АиКС ____________
А.С. Фадеев.
РУКОВОДИТЕЛЬ ООП
____________
Вичугова А.А.
ПРЕПОДАВАТЕЛЬ
____________
Лунева Е.Е.
2015 г.
1
1. ЦЕЛИ ОСВОЕНИЯ ДИСЦИПЛИНЫ
Цель преподавания дисциплины «Алгоритмы и структуры данных» (Б1.ВМ5.1.1) заключается
в формировании у студентов знаний, умений и навыков применения линейных и нелинейных
структур данных и алгоритмов работы с данными структурами при работе с информационными
системами и технологиями в различных отраслях промышленности, а также для системного
анализа и моделирования предметной области. Поставленные цели полностью соответствуют
целям (Ц1-Ц5) ООП.
2. МЕСТО ДИСЦИПЛИНЫ В СТРУКТУРЕ ООП
Дисциплина входит в вариативную часть профессионального цикла. Пререквизитами
данной дисциплины являются: «Информатика 1.2» (Б1.БМ2.4), «Программирование» (Б1.ВМ4.7).
Знания и умения, полученные при изучении дисциплины «Алгоритмы и структуры данных»,
могут быть востребованы дисциплинами-кореквизитами: «Информационные технологии»
(Б1.ВМ4.12), «Учебно-исследовательская работа студентов» (Б1.ВМ4.8.2).
3. РЕЗУЛЬТАТЫ ОСВОЕНИЯ ДИСЦИПЛИНЫ
Основным планируемым результатом является: знание и умения использовать методы
исследования, анализа и моделирования предметной области, способность применять базовые и
специальные знания в области современных информационных технологий для решения
инженерных задач (Р2).
Результаты освоения дисциплины позволят студенту:
Формируемые
компетенции в
Результаты освоения дисциплины
соответствии с ООП*
З.2.2.2
Результаты освоения дисциплины позволят студенту знать:
Основные структуры представления данных в ЭВМ; алгоритмов, используемых для
обработки структур.
У.2.2.2
Результаты освоения дисциплины позволят студенту уметь:
Разрабатывать оптимальные алгоритмы для решения поставленных задач;
формализовывать описание поставленных задач
В.2.2.2
Результаты освоения дисциплины позволят студенту владеть:
методами формализованного описания алгоритмов решения поставленных задач.
4. СТРУКТУРА И СОДЕРЖАНИЕ ДИСЦИПЛИНЫ
4.1 Аннотированное содержание разделов дисциплины
Раздел 1. Введение в предмет. Понятие алгоритма и структуры данных. Классификация
структур данных. Вычислительная сложность алгоритмов.
Раздел 2. Список однонаправленный и двунаправленный. Способы организации и обработки
данных списка при на программном языке высокого уровня, на примере языка С#. Понятие стек и
очередь. Способы программной организации стека и очереди, и обработка данных.
Лабораторные работы по разделу:
1. Студенты по вариантам разрабатывают приложение, позволяющее выполнять различную
обработку данных списка однонаправленного и двунаправленного. Например, сортировка, поиск
максимального, удаление и пр.
2. Студенты по вариантам создают приложение, позволяющее работать со стеком и/или
очередью. В данном задании студенты самостоятельно создают классы для организации структур.
3. Студенты выполняют поиск существующих структур для организации стека или очереди
на языке С# в MS VisualStudio и разрабатывают приложение работающее по принципу
лабораторной № 2.
Раздел 3. Графы. Основные понятия и определения: граф, ориентированный,
неориентированный граф, петля, путь в графе, ребра в графе. Способы задания графов. Матрица
инцидентности, матрица смежности, матрица весов, список ребер, список смежности. Какие
2
структуры можно использовать для программной работы с графами. Поиск в графе. Поиск в
ширину, поиск в глубину. Нахождение кратчайших путей. Алгоритм Дейкстры, алгоритм Флойда.
Нахождение центра графа. Задача коммивояжера. Эйлеровы пути и циклы.
Лабораторные работы по разделу:
1. Студент разрабатывает приложение, позволяющее задать граф и используя алгоритмы
поиска по графу, а также алгоритмы кратчайших путей решает задание по варианту. Например,
нахождение равноудаленного узла графа и пр.
Раздел 4. Параллельная обработка данных на CPU. Распараллеливание алгоритмов.
Библиотека ParallelExtention в MS VisualStudio. Класс Thread, Task., BackgroundWorker. Базовые
принципы разработки распараллеливания алгоритмов на центральном процессоре.
Лабораторные работы по разделу:
Студенту дается алгоритм, который нужно реализовать последовательно и параллельно и
вычислить время его выполнения в обоих случаях. Проанализировать и объяснить полученные
результаты.
Раздел 5. Введение в анализ социальных сетей. Меры центральности. Алгоритмы
вычисления показателей центральности. Алгоритмы визуализации социальных сетей. Алгоритмы
обработки данных из социальных сетей, на примере социальной сети Twitter.
Лабораторные работы по разделу:
Студент выгружает данные по заданию из социальной сети Twitter, выстраивает социальный
граф по выбранным данным и вычисляет предложенные в варианте показатели, в том числе
показатели центральности.
Раздел 6. Хранение данных на жестком диске: форматы и нотации. Нотация JSON. Язык
XML. Сериализация и десериализация в c#. Парсинг данных JSON и XML.
Лабораторные работы по разделу:
Студентe предлагается выгрузить данные из социальной сети и сохрнить их в JSON или
XML файле и реализовать интерфейс, позволяющий представить данные в наглядном для
пользователя виде из данных файлов.
Структура дисциплины по разделам и формам организации обучения приведена в табл. 1.
Таблица 1 Структура дисциплины по разделам и формам организации обучения
Название раздела/темы
Раздел 1. Введение в предмет. Понятие алгоритма и структуры данных. Классификация
структур данных. Вычислительная сложность алгоритмов.
Раздел 2. Список однонаправленный и двунаправленный. Способы организации и
обработки данных списка при на программном языке высокого уровня, на примере языка
С#. Понятие стек и очередь. Способы программной организации стека и очереди, и
обработка данных.
Раздел 3. Графы. Основные понятия и определения: граф, ориентированный,
неориентированный граф, петля, путь в графе, ребра в графе. Способы задания графов.
Матрица инцидентности, матрица смежности, матрица весов, список ребер, список
смежности. Какие структуры можно использовать для программной работы с графами.
Поиск в графе. Поиск в ширину, поиск в глубину. Нахождение кратчайших путей.
Алгоритм Дейкстры, алгоритм Флойда. Нахождение центра графа. Задача коммивояжера.
Эйлеровы пути и циклы.
Раздел 4. Параллельная обработка данных на CPU. Распараллеливание алгоритмов.
Библиотека ParallelExtention в MS VisualStudio. Класс Thread, Task., BackgroundWorker.
Базовые принципы разработки распараллеливания алгоритмов на центральном процессоре.
Раздел 5. Введение в анализ социальных сетей. Меры центральности. Алгоритмы
вычисления показателей центральности. Алгоритмы визуализации социальных сетей.
Алгоритмы обработки данных из социальных сетей, на примере социальной сети Twitter.
Раздел 6. Хранение данных на жестком диске: форматы и нотации. Нотация JSON. Язык
XML. Сериализация и десериализация в c#. Парсинг данных JSON и XML.
Итого
Аудиторная
работа (час)
Лаб.
ЛR
СРС
(час)
Контроль.
работа
(число/час)
1
-
5
2
-
15
2
3
8
3
5
20
1
4
4
20
-
2
16
4
16
8
76
-
3
5. ОБРАЗОВАТЕЛЬНЫЕ ТЕХНОЛОГИИ
Достижение
планируемых
результатов
освоения
дисциплины
образовательными технологиями, сочетание которых приведено в таблице 2.
обеспечивается
Таблица 2
Методы и формы организации обучения (ФОО)
ФОО
Лекц.
Методы
IT-методы
Работа в команде
Case-study
Игра
Методы проблемного обучения.
Обучение на основе опыта
Опережающая самостоятельная
работа
Проектный метод
Поисковый метод
Исследовательский метод
Другие методы
+
+
+
+
+
Лаб.
раб.
СРС
+
+
Контр.
раб.
+
+
+
+
+
+
+
+
+
+
+
6. ОРГАНИЗАЦИЯ И УЧЕБНО-МЕТОДИЧЕСКОЕ ОБЕСПЕЧЕНИЕ
САМОСТОЯТЕЛЬНОЙ РАБОТЫ СТУДЕНТОВ
6.1 Самостоятельную работу студентов (СРС) можно разделить на текущую и творческую.
Текущая СРС – работа с лекционным материалом, подготовка к лабораторным работам;
опережающая самостоятельная работа; изучение тем, вынесенных на самостоятельную
проработку; подготовка к контрольным работам и зачету.
Творческая проблемно-ориентированная самостоятельная работа (ТСР) – поиск,
анализ, структурирование информации по теме раздела дисциплины, применительно к
лабораторным работам. Также ТСР включает более глубокое изучение возможностей MS Visual
Studio C#.
6.3 Контроль самостоятельной работы
Оценка результатов самостоятельной работы организуется как единство двух форм:
самоконтроль и контроль со стороны преподавателя.
Самоконтроль в обучающей программе, контроль знаний, полученных с помощью
обучающей программы. Защита лабораторной работы. По результатам текущего и рубежного
контроля формируется допуск студента к зачету. Зачет проводится в письменной форме и
оценивается преподавателем.
6.4
Учебно-методическое обеспечение самостоятельной работы студентов
Для самостоятельной работы студентов используются сетевые информационные
образовательные ресурсы:
 http://msdn.microsoft.com/
 http://ru.wikipedia.org
 www.intuit.ru
 http://www.sql.ru
 http://aics.ru/books.shtml?action=showbookcont&id=119
и
4
7. СРЕДСТВА (ФОС) ТЕКУЩЕЙ И ИТОГОВОЙ ОЦЕНКИ КАЧЕСТВА ОСВОЕНИЯ
ДИСЦИПЛИНЫ
7.1. Текущий контроль
Текущий контроль изучения дисциплины состоит из следующих видов:
 контроль за своевременным и правильным выполнением лабораторных работ контроль
усвоения теоретического материала – проведение контрольных работ по темам раздела 1-5.
По результатам проведенных видов контроля формируется допуск студента к итоговому
контролю – зачету.
Тематика заданий на контрольную работу
1. Знать и уметь дать определения следующим понятиям: алгоритм, структура данных
2. Классификация структур данных. Классификация сложных структур по организации
взаимосвязей между элементами.
3. Вычислительная сложность алгоритма. Знать какая вычислительная сложность больше
константная, квадратичная, логарифмическая, экспоненциальная, факториальная. Обозначение
вычислительной сложности алгоритма. Что такое вычислительная сложность в лучшем и худшем
случае. Чем объясняется различная алгоритмическая сложность алгоритмов.
4. .NetFramework Платформа. Каким образом достигается возможность разработки
кроссплатформенных приложений. Код MSIL, native код, JIT компилятор.
5. Пространство имен. Смотреть примеры из лекции, задания будут подобные.
6. Понятие класса. Описание класса на языке с#. Методы и атрибуты класса. Задания на
описание класса и заголовков=прототипов методов и атрибутов. Секции доступа Private, public,
protected. Наследование, как описывается на С#. Конструктор класса.
7. Переменные ссылочного типа и обычные. В чем разница. Задания по участку кода
определить, какие переменные указаны.
8. Сортировка массивов. Знать три вида простых сортировок и их алгоритмическую
сложность. А также сортировка шелла и быстрая сортировка. Знать вычислительную сложность
быстрой сортировки. Знать алгоритм быстрой сортировки. Т.е. не программный код, а как
работает алгоритм.
9. Список. Виды списков. Способы задания списков. Вопрос, почему используется класс при
работе со списками, а не структура (struct) при реализации на языке С#. Какое действие нельзя
выполнять со структурой.
10. Знать, как определить список при помощи класса одного и двух. Практическое задание на
разработку программного кода по этой части касаются работы со ссылками next, prev. Т.е. работа
со ссылками.
11. Стек, основные операции в стеке. Как реализовать стек, способы и их достоинства и
недостатки.
12. Очередь. Добавление и удаление из очереди. Как реализовать очередь, способы и их
достоинства и недостатки.
13. Графы. Определение. Способы задания графа. Чем граф отличается от дерева. Что такое
циклический граф, ориентированный и неориентированный. Поиск в глубину и ширину.
Ориентированный и неориентированный граф. Взвешенный граф.
14. Кратчайший путь в графе от вершины. Алгоритм Дейкстры. Знать, как работает алгоритм.
Практические задания касаются итераций работы алгоритма на примере.
5
Примеры вариантов контрольной работы
Вариант 1.
1. Выберете наиболее подходящее определение для понятия «алгоритм»
А. Совокупность и порядок действий, используемых для решения какой-либо задачи
Б. совокупность приемов и операций познания и практической деятельности; способ достижения
определенных результатов в познании и практике.
В. Набор инструкций, описывающих порядок действий исполнителя для достижения результата
решения задачи за конечное число действий.
Г. Ни один ответ не является верным
2. К линейным структурам относятся:
А. Списки
Б. Стек
В. Деревья
Г. Верный ответ А и Б.
3. Есть три алгоритма сортировки массивов: Бымтрая сортировка, Сотрировка Шелла,
Сортировку пузырьком. Если данные сортировки упорядочить по возрастанию их алгоритмической
сложности (т.е. сложность 1 < Сложность 2 < Сложность 3), то получиться
А. Быстрая сортировка, сортировка шелла, сортировка пузырьком
Б. Сортировка пузырьком. Сортиовка Шелла, Быстрая сортировка
В. Сортировка шелла, Сортировка пузырьком, быстрая сортировка
Г. Свой вариант _____________________________________________
4. Ниже представлено описание класса. Укажите верный вариант описания конструктора
класса.
Class firstClass:SecondClass {
A.) public FirstClass() {
…..}
Б.)
public SecondClass() {
…..}
В.)
public void FirstClass() {
…..}
Г.) public void SecondClass() {
…..}
}
5. Ниже представлено описание переменных. Укажите, какие переменные из этого описания
являются переменными ссылочного типа:
А. ) int a=10;
Б.) float c=4.44;
В.) MyClass z = new MyClass();
Г.) List <int> mylist = new List<int>();
6. Вам необходимо разработать двусвязный список при помощи двух классов. Опишите
структуру данных классов ниже:
7. На рисунке ниже представлен граф. Задайте данный граф двумя способами при помощи
матрицы смежности и матрицы инцидентности.
V1
V2
V3
V4
V5
V6
6
8. Пространство имен. Смотреть вопрос ниже:
namespace MyModule
{
namespace MyClass
{
int a =10;
}
Как обратиться к переменной а здесь ????
________________________
}
9. Дан граф. Из вершины 1 выполняется поиск кратчайших расстояний при помощи алгоритма
Дейкстры. Опишите первую и вторую итерацию данного алгоритма.
V1
10
V2
5
7
4
V3
4
V5
7
8
V4
V6
18
Итерация
S
w
Массив D
Начало
1
10. Приведите пример ориентированного и неориентированного графа.
7.2. Итоговый контроль
Итоговый контроль по дисциплине осуществляется
лабораторных, контрольных работ и их защиты.
по
результатам
выполнения
8. УЧЕБНО-МЕТОДИЧЕСКОЕ И ИНФОРМАЦИОННОЕ ОБЕСПЕЧЕНИЕ
ДИСЦИПЛИНЫ
Основная литература
1. Вирт Н. Алгоритмы и структуры данных. – СПб : Невский Диалект, 2011. – 351 с.
2. Кубенский, А. А. Структуры и алгоритмы обработки данных. Объектно-ориентированный
подход и реализация на C++ : учебное пособие – СПб.: БХВ-Петербург, 2010. – 464 с.
3. Ахо А. В. Структуры данных и алгоритмы. – Москва: Вильямс, 2010. – 383 с.
4. Шилдт Г. C#. – СПб.: Питер, 2011. — 508 с.
7
Дополнительная литература
1. Секунов Н. Ю. С# – СПб.: BHV, 2011. – 576 с.
2. Браунси К. Основные концепции структур данных и реализация в С++ – Москва: Вильямс,
2002. – 320 с.:
3. Скиена С. С. Алгоритмы. Руководство по программированию. – Санкт-Петербург: БХВПетербург, 2011. – 720 с.
Программное обеспечение и Internet-ресурсы
1. Базовые: операционные системы MS Windows;
2. Среда MS Visual Studio 2012, 2013 или MS Visual Studio Express 2010.
9. МАТЕРИАЛЬНО-ТЕХНИЧЕСКОЕ ОБЕСПЕЧЕНИЕ МОДУЛЯ
Компьютеры класса IBM PC с операционной системой Windows, пакетом MS Office, вредой
разработки MS Visual Studio 2013 или MS Visual Studio Express 2013.
Программа составлена на основе Стандарта ООП ТПУ в соответствии с требованиями
ФГОС-3 по направлению 09.03.02 «Информационные системы и технологии» и профилю
«Информационные системы и технологии в бизнесе».
Программа одобрена на заседании кафедры Автоматики и компьютерных систем
__________________________________________________________
(протокол № __1__ от «_01__» ____09___ 2015 г.).
Автор
Лунева Е.Е.
Рецензент
Цапко И.В.
8
Download