Закреплена за кафедрой | Кафедра информационной безопасности |
---|---|
Направление подготовки | 10.03.01. Информационная безопасность |
Профиль | Безопасность автоматизированных систем (в сфере профессиональной деятельности) |
Форма обучения | Очная |
Общая трудоемкость | 9 ЗЕТ |
Учебный план | 10_03_01_ИБ-3-2019 |
|
|
Распределение часов по семестрам
Курс (семестр) | 2 (3) | 2 (4) | Итого | |||
---|---|---|---|---|---|---|
Недель | 19 | 19 | ||||
Вид занятий | УП | РПД | УП | РПД | УП | РПД |
Лекции | 36 | 36 | 36 | 36 | 72 | 72 |
Лабораторные | 72 | 72 | 54 | 54 | 126 | 126 |
Сам. работа | 36 | 36 | 63 | 63 | 99 | 99 |
Часы на контроль | 0 | 0 | 27 | 27 | 27 | 27 |
Итого | 144 | 144 | 180 | 180 | 324 | 324 |
Визирование РПД для исполнения в очередном учебном году
Рабочая программа пересмотрена, обсуждена и одобрена для
исполнения в 2019-2020 учебном году на заседании
кафедры
Кафедра информационной безопасности
Протокол от 05.06.2019 г. № 10-2018/19
Заведующий кафедрой д.ф.-м.н., профессор Поляков В.В.
1.1. | Цель изучения дисциплины – изучение современных технологий и методов программирования, получение навыков проектирования программного обеспечения (ПО), расширение кругозора в сфере разработки ПО. Задачи дисциплины: изучение основ объектно-ориентированного программирования изучение основ проектирования и использования абстрактных типов данных получение оценок сложности работы алгоритмов изучение методологии и средств разработки ПО изучение методов проектирования ПО изучение тестирования и отладки программного обеспечения изучение принципов, методов и средств сопровождения ПО |
---|
Цикл (раздел) ООП: Б1.Б.04 |
ОПК-7 | способностью определять информационные ресурсы, подлежащие защите, угрозы безопасности информации и возможные пути их реализации на основе анализа структуры и содержания информационных процессов и особенностей функционирования объекта защиты |
В результате освоения дисциплины обучающийся должен | |
3.1. | Знать: |
---|---|
3.1.1. | о жизненном цикле разработки ПО об основных подходах к проектированию о существующих стандартах отрасли в области разработки программных продуктов |
3.2. | Уметь: |
3.2.1. | формулировать техническое задание применять все этапы объектно-ориентированного подхода к разработке ПО применять библиотеки для тестирования ПО |
3.3. | Иметь навыки и (или) опыт деятельности (владеть): |
3.3.1. | алгоритмами сортировки и основными структурами данных методами оценки сложности работы применяемых алгоритмов CASE технологиями при разработке ПО |
Код занятия | Наименование разделов и тем | Вид занятия | Семестр | Часов | Компетенции | Литература |
---|---|---|---|---|---|---|
Раздел 1. Введение. Основные управляющие конструкции языков высокого уровня | ||||||
1.1. | Структуры данных и абстракции данных. Элементарные и простые структуры данных. Сложные структуры данных. Объединения и перечисления. Структуры в C++. Машинное представление структур. Оптимизация по расходуемой памяти. Основные функции для работы с памятью в языках С и C++. Виды управления памятью (статические структуры данных) Виды управления памятью (динамические структуры данных) Базовые типы данных в C++. Некоторые дополнительные типы данных (пары, вектора). | Лекции | 3 | 12 | ОПК-7 | Л1.2, Л2.2, Л1.1, Л2.3 |
1.2. | Основы языка С++. Базовые конструкции. Цель работы: познакомиться основами программирования на языках высокого уровня. Содержание работы: решение нескольких задач на базовые управляющие конструкции и типы данных языка C++. | Лабораторные | 3 | 16 | ОПК-7 | Л1.2, Л2.1, Л1.3 |
1.3. | Цель, содержание, значение, методические особенности предмета, связь с другими дисциплинами, обзор литературы. Современные технологии программирования. Оценка качества программного обеспечения. Общие принципы методы и средства проектирования архитектуры и структуры, проектирования логики, тестирования и отладки, документирования и сопровождения программного обеспечения с учетом повышенных требований к надежности программ и их защищенности от несанкционированного доступа. Особенности разработки и сопровождения программного обеспечения для рабочих групп и в условиях парапрограммирования. CASE-технологии. Технологии виртуального программирования и объектно-ориентированного программирования. Применение математических методов в проектировании надежного и защищенного программного обеспечения: функциональное программирование, логическое программирование, аналитическое программирование Дейкстры; Основы языка C++. | Лекции | 3 | 12 | ОПК-7 | Л1.2, Л2.1, Л1.3 |
1.4. | Структуры данных и абстракции данных. Элементарные и простые структуры данных. Сложные структуры данных. Объединения и перечисления. Структуры в C++. Машинное представление структур. Оптимизация по расходуемой памяти. Основные функции для работы с памятью в языках С и C++. Виды управления памятью (статические структуры данных) Виды управления памятью (динамические структуры данных) Базовые типы данных в C++. Некоторые дополнительные типы данных (пары, вектора). | Сам. работа | 3 | 12 | ОПК-7 | Л1.2, Л1.3, Л2.2 |
1.5. | Цель, содержание, значение, методические особенности предмета, связь с другими дисциплинами, обзор литературы. Современные технологии программирования. Оценка качества программного обеспечения. Общие принципы методы и средства проектирования архитектуры и структуры, проектирования логики, тестирования и отладки, документирования и сопровождения программного обеспечения с учетом повышенных требований к надежности программ и их защищенности от несанкционированного доступа. Особенности разработки и сопровождения программного обеспечения для рабочих групп и в условиях парапрограммирования. CASE-технологии. Технологии виртуального программирования и объектно-ориентированного программирования. Применение математических методов в проектировании надежного и защищенного программного обеспечения: функциональное программирование, логическое программирование, аналитическое программирование Дейкстры; Основы языка C++. | Сам. работа | 3 | 12 | ОПК-7 | Л1.2, Л2.1, Л1.3 |
Раздел 2. Работа с памятью. Структуры данных | ||||||
2.1. | Двумерные массивы. Простые структуры данных. Цель работы: познакомиться с простейшими динамическим структурами данных. Содержание работы: ознакомиться со способами динамического управления памятью, реализовать простые типы данных – стеки, очереди, деки. | Лабораторные | 3 | 24 | ОПК-7 | Л1.2, Л1.3, Л2.2, Л1.1 |
Раздел 3. Введение в объектно ориентированное программирование на языке C++ и абстрактные типы данных | ||||||
3.1. | Основные понятия объектно-ориентированного программирования. Инкапсуляция. Зачем нужна. Примеры. UML-обозначения. Наследование и полиморфизм. UML-обозначения. Методы и поля классов. Конструкторы и деструкторы. Агрегация, ассоциация классов. UML-обозначения. Шаблонные функции. Шаблонные классы. Базовый синтаксис. Области применения. Пример простого шаблонного класса. Связанные Контейнерные классы и итераторы. Массивы и вектора в С++. Размещение в памяти, временные характеристики работы. Связанные списки, основные виды связных списков. | Лекции | 3 | 12 | ОПК-7 | Л1.2, Л2.2, Л1.1, Л2.3 |
3.2. | Основы объектно-ориентированного программирования. Цель работы: познакомиться с основами объектно-ориентированного подхода. Содержание работы: на примере простых классов и связанных списков разобраться с реализацией абстрактных типов данных на языке C++. Изучить принципы работы контейнерных классов. Оценить время работы базовых операций с некоторыми шаблонными типами библиотеки STL. | Лабораторные | 3 | 32 | ОПК-7 | Л1.2, Л2.2, Л1.1, Л2.3 |
3.3. | Основные понятия объектно-ориентированного программирования. Инкапсуляция. Зачем нужна. Примеры. UML-обозначения. Наследование и полиморфизм. UML-обозначения. Методы и поля классов. Конструкторы и деструкторы. Агрегация, ассоциация классов. UML-обозначения. Шаблонные функции. Шаблонные классы. Базовый синтаксис. Области применения. Пример простого шаблонного класса. Связанные Контейнерные классы и итераторы. Массивы и вектора в С++. Размещение в памяти, временные характеристики работы. Связанные списки, основные виды связных списков. | Сам. работа | 3 | 12 | ОПК-7 | Л1.2, Л2.2, Л1.1, Л2.3 |
Раздел 4. Сложность вычислений на примере алгоритмов сортировки | ||||||
4.1. | Оценка сложности алгоритмов. Модели вычислений. O(n) обозначение. Оценки времени работы алгоритмов. Примеры алгоритмов с полиномиальным временем. Оценки времени работы алгоритмов. Примеры алгоритмов с логарифмическим временем. Алгоритмы сортировки. Сортировки выбором и пузырьком. Сортировка вставками, алгоритм Шелла. Пирамидальная сортировка. Быстрая сортировка. Сортировка слиянием. Алгоритмы поиска. Генерация случайных последовательностей. Алгоритмы на подстановках. Параллельные алгоритмы: методы проектирования параллельных алгоритмов, использование транспьютеров при реализации параллельных алгоритмов, оценки сложности. | Лекции | 4 | 12 | ОПК-7 | Л1.2, Л1.4, Л2.3 |
4.2. | Алгоритмы сортировки. Цель работы: познакомиться с основными алгоритмами сортировки Содержание работы: изучить квадратичные и ускоренные алгоритмы сортировки, познкомиться с принципами получения оценок вычислительной сложности алгоритмов. | Лабораторные | 4 | 18 | ОПК-7 | Л1.2, Л1.4, Л2.3 |
4.3. | Оценка сложности алгоритмов. Модели вычислений. O(n) обозначение. Оценки времени работы алгоритмов. Примеры алгоритмов с полиномиальным временем. Оценки времени работы алгоритмов. Примеры алгоритмов с логарифмическим временем. Алгоритмы сортировки. Сортировки выбором и пузырьком. Сортировка вставками, алгоритм Шелла. Пирамидальная сортировка. Быстрая сортировка. Сортировка слиянием. Алгоритмы поиска. Генерация случайных последовательностей. Алгоритмы на подстановках. Параллельные алгоритмы: методы проектирования параллельных алгоритмов, использование транспьютеров при реализации параллельных алгоритмов, оценки сложности. | Сам. работа | 4 | 21 | ОПК-7 | Л1.2, Л1.4, Л2.3 |
Раздел 5. Динамическое программирование и жадные алгоритмы | ||||||
5.1. | Динамическое программирование. Оптимальная подструктура. Этапы решения задач. Динамическое программирование. Задача о сборочном конвейере. Динамическое программирование. Задача о перемножении цепочки матриц. Рекурсия при решении задач оптимизации. Рекурсия при решении задач оптимизации. Мемоизация. Жадные алгоритмы. Условия применимости жадной стратегии. Жадные алгоритмы. Алгоритм построения префиксных кодов. | Лекции | 4 | 12 | ОПК-7 | Л1.2, Л1.4, Л2.3 |
5.2. | Динамическое программирование. Цель работы: познакомиться с методом динамического программирования Содержание работы: на примере нескольких задач оптимизации познакомиться с методом динамического программирования, методом запоминания для ускорения работы рекуррентных алгоритмов. | Лабораторные | 4 | 18 | ОПК-7 | Л1.2, Л1.4, Л2.3 |
5.3. | Динамическое программирование. Оптимальная подструктура. Этапы решения задач. Динамическое программирование. Задача о сборочном конвейере. Динамическое программирование. Задача о перемножении цепочки матриц. Рекурсия при решении задач оптимизации. Рекурсия при решении задач оптимизации. Мемоизация. Жадные алгоритмы. Условия применимости жадной стратегии. Жадные алгоритмы. Алгоритм построения префиксных кодов. | Сам. работа | 4 | 21 | ОПК-7 | Л1.2, Л1.4, Л2.3 |
Раздел 6. Алгоритмы на графах | ||||||
6.1. | Графы. Способы представления графов. Алгоритмы поиска в ширину. Задача о кратчайшем пути. Алгоритмы поиска в глубину. Свойства поиска в глубину. Классификация ребер. Поиск сильно связанных компонент в графе. Минимальные остовные деревья. Разрезы в графе. Основные определения. Задача о кратчайшем пути. Варианты постановки. Ребра с отрицательным весом. Метод ослабления (релаксации). Свойства кратчайших путей и ослабления. Алгоритм Беллмана-Форда. Алгоритм Дейкстры. Доказательство корректности. | Лекции | 4 | 12 | ОПК-7 | Л1.2, Л1.4, Л1.1, Л2.3 |
6.2. | Алгоритмы на графах. Цель работы: познакомиться с некоторыми графовыми алгоритмами. Содержание работы: изучить способы представления графов в виде связанных списков и матриц смежности. Получить представление о базовых алгоритмах поиска по графам и нахождения кратчайших путей. | Лабораторные | 4 | 18 | ОПК-7 | Л1.2, Л1.4, Л1.1, Л2.3 |
6.3. | Графы. Способы представления графов. Алгоритмы поиска в ширину. Задача о кратчайшем пути. Алгоритмы поиска в глубину. Свойства поиска в глубину. Классификация ребер. Поиск сильно связанных компонент в графе. Минимальные остовные деревья. Разрезы в графе. Основные определения. Задача о кратчайшем пути. Варианты постановки. Ребра с отрицательным весом. Метод ослабления (релаксации). Свойства кратчайших путей и ослабления. Алгоритм Беллмана-Форда. Алгоритм Дейкстры. Доказательство корректности. | Сам. работа | 4 | 21 | ОПК-7 | Л1.2, Л1.4, Л1.1, Л2.3 |
Раздел 7. Экзамен | ||||||
7.1. | Экзамен | 4 | 27 | ОПК-7 | Л1.2 |
5.1. Контрольные вопросы и задания для проведения текущего контроля и промежуточной аттестации по итогам освоения дисциплины |
см. Приложение |
5.2. Темы письменных работ для проведения текущего контроля (эссе, рефераты, курсовые работы и др.) |
см. Приложение |
5.3. Фонд оценочных средств для проведения промежуточной аттестации |
см. Приложение |
6.1. Рекомендуемая литература | ||||
6.1.1. Основная литература | ||||
Авторы | Заглавие | Издательство, год | Эл. адрес | |
Л1.1 | Тузовский А.Ф. | Объектно-ориентированное программирование: Учебное пособие для прикладного бакалавриата | М.: Издательство Юрайт, 2018 // ЭБС "Юрайт" | urait.ru |
Л1.2 | Царев Р. Ю. | Программирование на языке Си: Учебники и учебные пособия для ВУЗов | Сибирский федеральный университет, 2014 // ЭБС Университетская библиотека Online | biblioclub.ru |
Л1.3 | Лаврищева Е.М. | Программная инженерия и технологии программирования сложных систем: Учебник | Юрайт, 2018 // ЭБС "Юрайт" | www.biblio-online.ru |
Л1.4 | Трофимов В.В. - отв. ред. | Алгоритмизация и программирование: Учебник для академического бакалавриата | М.: Издательство Юрайт, 2018 // ЭБС "Юрайт" | www.biblio-online.ru |
6.1.2. Дополнительная литература | ||||
Авторы | Заглавие | Издательство, год | Эл. адрес | |
Л2.1 | Гниденко И. Г., Павлов Ф. Ф., Федоров Д. Ю. | Технология разработки программного обеспечения: Учебное пособие | Юрайт, 2018 // ЭБС "Юрайт" | urait.ru |
Л2.2 | Зыков С.В. | Программирование. Объектно-ориентированный подход: Учебник и практикум для академического бакалавриата | Юрайт, 2018 // ЭБС "Юрайт" | www.biblio-online.ru |
Л2.3 | Седжвик Р. | Алгоритмы на С++: Учебник | Национальный Открытый Университет <ИНТУИТ>, 2016 // ЭБС "Университетская библиотека online" | biblioclub.ru |
6.2. Перечень ресурсов информационно-телекоммуникационной сети "Интернет" | ||||
Название | Эл. адрес | |||
Э1 | www.gpntb.ru/ Государственная публичная научно-техническая библиотека. | |||
Э2 | www.nlr.ru/ Российская национальная библиотека. | |||
Э3 | www.nns.ru/ Национальная электронная библиотека. | |||
Э4 | www.rsl.ru/ Российская государственная библиотека. | |||
Э5 | www.microinform.ru/ Учебный центр компьютерных технологий «Микроинформ». | |||
Э6 | www.tests.specialist.ru/ Центр компьютерного обучения МГТУ им. Н.Э.Баумана. | |||
Э7 | www.intuit.ru/ Образовательный сайт | |||
Э8 | www.window.edu.ru/ Библиотека учебной и методической литературы | |||
Э9 | www.osp.ru/ Журнал «Открытые системы» | |||
Э10 | www.ihtika.lib.ru/ Библиотека учебной и методической литературы | |||
Э11 | Технологии и методы программирования | portal.edu.asu.ru | ||
6.3. Перечень программного обеспечения | ||||
Windows 7 Professional, № 47774570 от 03.12.2010 (бессрочная); Office 2010 Standart, № 61823557 от 22.04.2013 (бессрочная); Open Office, http://www.openoffice.org/license.html Visual Studio, https://code.visualstudio.com/license Python c расширениями PIL, Py OpenGL, https://docs.python.org/3/license.html FAR, http://www.farmanager.com/license.php?l=ru 7-Zip, http://www.7-zip.org/license.txt AcrobatReader, http://wwwimages.adobe.com/content/dam/Adobe/en/legal/servicetou/Acrobat_com_Additional_TOU-en_US-20140618_1200.pdf Chrome; http://www.chromium.org/chromium-os/licenses Eclipse (PHP,C++, Phortran), http://www.eclipse.org/legal/eplfaq.php DjVu reader, http://djvureader.org/ MingGW, http://mingw.org/license | ||||
6.4. Перечень информационных справочных систем | ||||
Профессиональные базы данных: 1. Электронная база данных «Scopus» (http://www.scopus.com); 2. Электронная библиотечная система Алтайского государственного университета (http://elibrary.asu.ru/); 3. Научная электронная библиотека elibrary (http://elibrary.ru |
Аудитория | Назначение | Оборудование |
---|---|---|
Учебная аудитория | для проведения занятий лекционного типа, занятий семинарского типа (лабораторных и(или) практических), групповых и индивидуальных консультаций, текущего контроля и промежуточной аттестации, курсового проектирования (выполнения курсовых работ), проведения практик | Стандартное оборудование (учебная мебель для обучающихся, рабочее место преподавателя, доска, мультимедийное оборудование стационарное или переносное) |
Помещение для самостоятельной работы | помещение для самостоятельной работы обучающихся | Компьютеры, ноутбуки с подключением к информационно-телекоммуникационной сети «Интернет», доступом в электронную информационно-образовательную среду АлтГУ |
106Л | помещение для хранения и профилактического обслуживания учебного оборудования | Стеллажи – 3 шт. осциллограф, паяльная станция, источник тока, переносные ноутбуки |
419К | лаборатория информационных технологий - компьютерный класс - учебная аудитория для проведения занятий семинарского типа (лабораторных и(или) практических); проведения групповых и индивидуальных консультаций, текущего контроля и промежуточной аттестации; | Учебная мебель на 17 посадочных мест; рабочее место преподавателя; доска маркерная - 1 шт.; компьютеры: NAIO Corp Z520, НЭТА - 4 in - 13 ед. |
417К | лаборатория информационных технологий - компьютерный класс - учебная аудитория для проведения занятий семинарского типа (лабораторных и(или) практических); проведения групповых и индивидуальных консультаций, текущего контроля и промежуточной аттестации | Учебная мебель на 12 посадочных мест; рабочее место преподавателя; доска маркерная - 1 шт.; шкаф с учебно-наглядными пособиями - 1 шт.; компьютеры: марка Клама С Офис – 12; проектор, экран с мультимедиа Smart - 1 ед.; учебно-наглядные пособия. |
Рекомендации по подготовке к лекционным занятиям - перед очередной лекцией необходимо просмотреть по конспекту материал предыдущей лекции. - бегло ознакомиться с содержанием очередной лекции по основным источникам литературы в соответствии с рабочей программой дисциплины; - обратить особое внимание на сущность и графическое сопровождение основных рассматриваемых теоретических положений. Рекомендации по подготовке к лабораторным работам - руководствоваться графиком лабораторных работ РПД; - накануне перед очередной работой необходимо по конспекту или в методических указаниях к работе просмотреть теоретический материал работы; - на лабораторном занятии, выполнив разработку алгоритма и реализовав задание на языке высокого уровня, необходимо проанализировать окончательные результаты и убедится в их достоверности; - обратить внимание на оформление отчета, в котором должны присутствовать: цель работы, описание алгоритма, журнал опытных данных, реализация в опыте, цели работы, необходимые графические зависимости (при их наличии) и их анализ, результаты работы и выводы; - при подготовке к отчету руководствоваться вопросами, приведенными в методических указаниях к данной работе, тренажерами программ на ЭВМ по отчету работ и компьютерным учебником. Рекомендации по подготовке к самостоятельной работе - руководствоваться графиком самостоятельной работы; - выполнять все плановые задания, выдаваемые преподавателем для самостоятельного выполнения, и разбирать на семинарах и консультациях неясные вопросы; - подготовку к экзамену необходимо проводить по экзаменационным теоретическим вопросам - при подготовке к экзамену параллельно прорабатываете соответствующие теоретические и практические разделы курса, все неясные моменты фиксируйте и выносите на плановую консультацию. |