МИНОБРНАУКИ РОССИИ
федеральное государственное бюджетное образовательное учреждение высшего образования
«Алтайский государственный университет»

Технологии и методы программирования

рабочая программа дисциплины
Закреплена за кафедройКафедра информационной безопасности
Направление подготовки10.03.01. Информационная безопасность
ПрофильБезопасность автоматизированных систем (в сфере профессиональной деятельности)
Форма обученияОчная
Общая трудоемкость9 ЗЕТ
Учебный план10_03_01_ИБ-3-2019
Часов по учебному плану 324
в том числе:
аудиторные занятия 198
самостоятельная работа 99
контроль 27
Виды контроля по семестрам
экзамены: 4
зачеты: 3

Распределение часов по семестрам

Курс (семестр) 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

Программу составил(и):
к.ф.-м.н., доцент, Лепендин Андрей Александрович

Рецензент(ы):
к.ф.-м.н., доцент, Рудер Давыд Давыдович

Рабочая программа дисциплины
Технологии и методы программирования

разработана в соответствии с ФГОС:
Федеральный государственный образовательный стандарт высшего образования по направлению подготовки 10.03.01 ИНФОРМАЦИОННАЯ БЕЗОПАСНОСТЬ (уровень бакалавриата) (приказ Минобрнауки России от 01.12.2016г. №1515)

составлена на основании учебного плана:
10.03.01 Информационная безопасность
утвержденного учёным советом вуза от 25.06.2019 протокол № 9.

Рабочая программа одобрена на заседании кафедры
Кафедра информационной безопасности

Протокол от 05.06.2019 г. № 10-2018/19
Срок действия программы: 2019-2020 уч. г.

Заведующий кафедрой
д.ф.-м.н., профессор Поляков В.В.


Визирование РПД для исполнения в очередном учебном году

Рабочая программа пересмотрена, обсуждена и одобрена для
исполнения в 2019-2020 учебном году на заседании кафедры

Кафедра информационной безопасности

Протокол от 05.06.2019 г. № 10-2018/19
Заведующий кафедрой д.ф.-м.н., профессор Поляков В.В.


1. Цели освоения дисциплины

1.1.Цель изучения дисциплины – изучение современных технологий и методов программирования, получение навыков проектирования программного обеспечения (ПО), расширение кругозора в сфере разработки ПО.
Задачи дисциплины:
изучение основ объектно-ориентированного программирования
изучение основ проектирования и использования абстрактных типов данных
получение оценок сложности работы алгоритмов
изучение методологии и средств разработки ПО
изучение методов проектирования ПО
изучение тестирования и отладки программного обеспечения
изучение принципов, методов и средств сопровождения ПО

2. Место дисциплины в структуре ООП

Цикл (раздел) ООП: Б1.Б.04

3. Компетенции обучающегося, формируемые в результате освоения дисциплины

ОПК-7 способностью определять информационные ресурсы, подлежащие защите, угрозы безопасности информации и возможные пути их реализации на основе анализа структуры и содержания информационных процессов и особенностей функционирования объекта защиты
В результате освоения дисциплины обучающийся должен
3.1.Знать:
3.1.1.о жизненном цикле разработки ПО
об основных подходах к проектированию
о существующих стандартах отрасли в области разработки программных продуктов
3.2.Уметь:
3.2.1.формулировать техническое задание
применять все этапы объектно-ориентированного подхода к разработке ПО
применять библиотеки для тестирования ПО
3.3.Иметь навыки и (или) опыт деятельности (владеть):
3.3.1.алгоритмами сортировки и основными структурами данных
методами оценки сложности работы применяемых алгоритмов
CASE технологиями при разработке ПО

4. Структура и содержание дисциплины

Код занятия Наименование разделов и тем Вид занятия Семестр Часов Компетенции Литература
Раздел 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. Фонд оценочных средств

5.1. Контрольные вопросы и задания для проведения текущего контроля и промежуточной аттестации по итогам освоения дисциплины
см. Приложение
5.2. Темы письменных работ для проведения текущего контроля (эссе, рефераты, курсовые работы и др.)
см. Приложение
5.3. Фонд оценочных средств для проведения промежуточной аттестации
см. Приложение

6. Учебно-методическое и информационное обеспечение дисциплины

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

7. Материально-техническое обеспечение дисциплины

Аудитория Назначение Оборудование
Учебная аудитория для проведения занятий лекционного типа, занятий семинарского типа (лабораторных и(или) практических), групповых и индивидуальных консультаций, текущего контроля и промежуточной аттестации, курсового проектирования (выполнения курсовых работ), проведения практик Стандартное оборудование (учебная мебель для обучающихся, рабочее место преподавателя, доска, мультимедийное оборудование стационарное или переносное)
Помещение для самостоятельной работы помещение для самостоятельной работы обучающихся Компьютеры, ноутбуки с подключением к информационно-телекоммуникационной сети «Интернет», доступом в электронную информационно-образовательную среду АлтГУ
106Л помещение для хранения и профилактического обслуживания учебного оборудования Стеллажи – 3 шт. осциллограф, паяльная станция, источник тока, переносные ноутбуки
419К лаборатория информационных технологий - компьютерный класс - учебная аудитория для проведения занятий семинарского типа (лабораторных и(или) практических); проведения групповых и индивидуальных консультаций, текущего контроля и промежуточной аттестации; Учебная мебель на 17 посадочных мест; рабочее место преподавателя; доска маркерная - 1 шт.; компьютеры: NAIO Corp Z520, НЭТА - 4 in - 13 ед.
417К лаборатория информационных технологий - компьютерный класс - учебная аудитория для проведения занятий семинарского типа (лабораторных и(или) практических); проведения групповых и индивидуальных консультаций, текущего контроля и промежуточной аттестации Учебная мебель на 12 посадочных мест; рабочее место преподавателя; доска маркерная - 1 шт.; шкаф с учебно-наглядными пособиями - 1 шт.; компьютеры: марка Клама С Офис – 12; проектор, экран с мультимедиа Smart - 1 ед.; учебно-наглядные пособия.

8. Методические указания для обучающихся по освоению дисциплины

Рекомендации по подготовке к лекционным занятиям
- перед очередной лекцией необходимо просмотреть по конспекту материал предыдущей лекции.
- бегло ознакомиться с содержанием очередной лекции по основным источникам литературы в соответствии с рабочей программой дисциплины;
- обратить особое внимание на сущность и графическое сопровождение основных рассматриваемых теоретических положений.
Рекомендации по подготовке к лабораторным работам
- руководствоваться графиком лабораторных работ РПД;
- накануне перед очередной работой необходимо по конспекту или в методических указаниях к работе просмотреть теоретический материал работы;
- на лабораторном занятии, выполнив разработку алгоритма и реализовав задание на языке высокого уровня, необходимо проанализировать окончательные результаты и убедится в их достоверности;
- обратить внимание на оформление отчета, в котором должны присутствовать: цель работы, описание алгоритма, журнал опытных данных, реализация в опыте, цели работы, необходимые графические зависимости (при их наличии) и их анализ, результаты работы и выводы;
- при подготовке к отчету руководствоваться вопросами, приведенными в методических указаниях к данной работе, тренажерами программ на ЭВМ по отчету работ и компьютерным учебником.
Рекомендации по подготовке к самостоятельной работе
- руководствоваться графиком самостоятельной работы;
- выполнять все плановые задания, выдаваемые преподавателем для самостоятельного выполнения, и разбирать на семинарах и консультациях неясные вопросы;
- подготовку к экзамену необходимо проводить по экзаменационным теоретическим вопросам
- при подготовке к экзамену параллельно прорабатываете соответствующие теоретические и практические разделы курса, все неясные моменты фиксируйте и выносите на плановую консультацию.