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

Языки программирования

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

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

Курс (семестр) 1 (2) Итого
Недель 19
Вид занятий УПРПДУПРПД
Лекции 36 36 36 36
Лабораторные 54 54 54 54
Сам. работа 27 27 27 27
Часы на контроль 27 27 27 27
Итого 144 144 144 144

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

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

Рабочая программа дисциплины
Языки программирования

разработана в соответствии с ФГОС:
Федеральный государственный образовательный стандарт высшего образования по направлению подготовки 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.анализа структуры и содержания процессов в информационных системах для их эффективного использования при разработке программ на языках высокого уровня
написания и отладки программ, реализующих алгоритмы сортировки, поиска
получения теоретических оценок сложности работы алгоритма

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

Код занятия Наименование разделов и тем Вид занятия Семестр Часов Компетенции Литература
Раздел 1. Введение, историческая справка, поколения ЯП. Классификация, общие концепции ЯП
1.1. Классификация ЯП. Парадигмы программирования. Общие принципы построения и использования языков программирования. Средства описания данных. Средства описания действий. Команды-инструкции (ветвление, циклы). Переменные. Подпрограммы (процедуры, функции). Простейшая программа на языке С. Комментарии. Функции для консольного ввода-вывода (printf, scanf, getc). Современные интегрированные среды разработки программ. Графический интерфейс пользователя. Отладчики. Генераторы кода приложений. Общая характеристика языков ассемблера: назначение, принципы построения и использования; структура языка, основные группы команд, операторы, средства взаимодействия с операционной системой. Лекции 2 4 ОПК-7 Л2.3, Л2.2, Л1.1, Л1.2, Л2.4
Раздел 2. Структура программы на языке C. Типы данных
2.1. Нотация в форме BNF и ее расширения. Программа на C как набор описаний (переменных, констант, типов, функций, прототипов функций). Алфавит языка. Идентификаторы. Простые типы (целочисленный, вещественный, перечисляемый, пустой — void, символьный). Представление чисел в различных системах счисления. Представление целочисленного и вещественного типов. Лекции 2 4 ОПК-7 Л2.1, Л1.1, Л2.4
2.2. Основы консольного ввода-вывода. Переменные в языке C Лабораторные 2 8 ОПК-7 Л2.1, Л1.1
Раздел 3. Определение констант и типов. Команды
3.1. Определение именованных констант. Определение типов (typedef). Области видимости. Команды (инструкции, операторы). Команды вычисления выражений. Побочные эффекты (side-effects). Операции и операнды. Унарные, бинарные, префиксные, постфиксные и инфиксные операции. Приоритет. Ассоциативность (лево- и право-). Основные операции в С. Неявное приведение типов. Лекции 2 2 ОПК-7 Л2.3, Л2.1, Л1.1
3.2. Управляющие конструкции. Условный оператор Лабораторные 2 4 ОПК-7 Л2.3, Л2.2, Л1.1
Раздел 4. Основные команды языка. Функции
4.1. Условный оператор. Составная инструкция. Операторы циклов (for, do...while, while). Инструкции преждевременного выхода и перехода к следующему циклу. Инструкция возврата из функции. Инструкция выбора. Функции. Объявление и определение. Формальные параметры. Неопределенность порядка вычисления аргументов. Прототипы функций. Тип void. Обработка исключительных ситуаций. Параллельная обработка. Лекции 2 2 ОПК-7 Л1.1
4.2. Управляющие конструкции. Оператор цикла с параметром Лабораторные 2 4 ОПК-7 Л2.2, Л1.1
4.3. Управляющие конструкции. Оператор цикла с (пред-, пост-) условием Лабораторные 2 4 ОПК-7 Л2.2, Л1.1
4.4. Сочетание цикла и вложенного условного оператора Лабораторные 2 4 ОПК-7 Л2.3, Л2.2, Л1.1
Раздел 5. Массивы. Строки
5.1. Массив как набор однотипных данных. Определение. Обращение к отдельным элементам. Многомерные массивы. Инициализация массивов. Автоопределение внешней размерности. Символы как их коды. Строки как массивы типа char. Символы конца строки в разных ОС. Размер буфера и его ограниченность. Лекции 2 2 ОПК-7 Л1.1
5.2. Массивы в языке C Лабораторные 2 4 ОПК-7 Л2.2, Л1.1
5.3. Работа с текстовыми строками Лабораторные 2 4 ОПК-7 Л2.2, Л1.1
Раздел 6. Указатели и ссылки
6.1. Память. Размещение переменных в памяти. Адреса, указатели. Получение адреса (&) и разыменование (*). Операции над указателями (арифметика, сравнение). Нетипизированные указатели. Расположение элементов массива в памяти. Имя массива как адрес первого элемента. Операция []. Особенности работы с многомерными массивами. Передача аргументов в функцию. Статическое и динамическое выделение памяти. Динамические массивы. Функции malloc, calloc, realloc, free. Основные ошибки: неинициализированные указатели, висячие ссылки, утечки памяти. Три способа создания многомерных динамических массивов — адресация в одномерном по формуле, адресация в одномерном при фиксированной размерности и массив указателей на массивы. Лекции 2 2 ОПК-7 Л1.1
6.2. Вложенные циклы. Работа с таблицами и матрицами Лабораторные 2 8 ОПК-7 Л2.2, Л1.1
Раздел 7. Классы памяти. Рекурсия
7.1. Существование переменных в пространстве и времени. Спецификаторы классов памяти (auto, register, static, extern). Области памяти: регистры процессора, сегмент стека, сегмент данных, динамическая область памяти (куча). Прямая и косвенная рекурсия. Дублирование всех локальных переменных. Пример: вычисление факториала. Хвостовая рекурсия, эквивалентность циклу. Указатели на функции. Определение переменных и типов. Области применения: передача в качестве параметра, массивы указателей на функцию. Лекции 2 2 ОПК-7 Л2.3, Л2.1, Л1.1
Раздел 8. Препроцессор языка C
8.1. Макропроцессоры и макрогенераторы. Предобработка (препроцессинг) исходных текстов. Стадии препроцессорной обработки: объединение строк, удаление комментариев, распознавание директив и лексем, выполнение директив. Директивы #include, #define, #undef. Макроподстановки с параметрами. Цепочка подстановок. Препроцессорные операции: квотирование («преобразование в строку»), склейка препроцессорных лексем. Некоторые предопределенные макросы. Условное включение текста (#ifdef, #ifndef, #if, #elif, #else, #endif). Препроцессорная операция defined. Вспомогательные директивы: #pragma, #line, #error. Лекции 2 2 ОПК-7 Л1.1
Раздел 9. Абстрактные типы данных. Примеры составных типов
9.1. Определение АТД. Структуры. Определение структур, теги и имена, даваемые typedef. Инициализация, доступ к элементам. Наличие присваивания в отличие от массивов. Отсутствие сравнения. Указатели и доступ к полям через указатель. Неоднозначность расположения в памяти. Объединения и перечисления. Особенности расположения в памяти и инициализации. Доступ к полям. Endianness. Битовые поля в структурах и объединениях, зависимость расположения от endian. Инкапсуляция, спецификация, реализация, параметризация, классы и объекты. Лекции 2 4 ОПК-7 Л2.3, Л2.2, Л2.1, Л1.1, Л2.4
9.2. Структуры данных Лабораторные 2 8 ОПК-7 Л2.3, Л2.2, Л2.1, Л1.1, Л2.4
9.3. Определение АТД. Структуры. Определение структур, теги и имена, даваемые typedef. Инициализация, доступ к элементам. Наличие присваивания в отличие от массивов. Отсутствие сравнения. Указатели и доступ к полям через указатель. Неоднозначность расположения в памяти. Объединения и перечисления. Особенности расположения в памяти и инициализации. Доступ к полям. Endianness. Битовые поля в структурах и объединениях, зависимость расположения от endian. Инкапсуляция, спецификация, реализация, параметризация, классы и объекты. Сам. работа 2 7 ОПК-7 Л2.3, Л2.2, Л2.1, Л1.2, Л2.4
Раздел 10. Файловый ввод-вывод. Функции с переменным числом аргументов
10.1. Обработка файлов. Файлы как абстракции, связь потоков с файлами (fopen, freopen, fclose). Разница между текстовыми и бинарными файлами. Функции для работы с файлами (getc, fgetc, getchar; putc, fputc, putchar; ungetc; fgets, gets, fputs, puts; fprintf, fscanf; fwrite, fread). Формат бинарных файлов: свобода в интерпретации последовательностей байтов. Традиционные подходы: сырой («raw») формат, однородные файлы записей, блоковая («chunk») структура с заголовками, каталог. Функции для произвольного доступа (ftell, fseek, fgetpos, fsetpos, rewind). Ошибки ввода-вывода и чтение после конца файла, индикация с помощью возвращаемого значения: EOF, NULL, <0, !=0, !=N. Функции feof, ferror. Очистка ошибочных состояний: clearerr или перемотка. Сообщение об ошибке: perror, strerror, errno. Функции с переменным числом аргументов. Макросы для перебора параметров. Пример: минимум из нескольких чисел. Лекции 2 4 ОПК-7 Л1.1, Л2.4
10.2. Файловый ввод-вывод Лабораторные 2 6 ОПК-7 Л1.1, Л2.4
10.3. Обработка файлов. Файлы как абстракции, связь потоков с файлами (fopen, freopen, fclose). Разница между текстовыми и бинарными файлами. Функции для работы с файлами (getc, fgetc, getchar; putc, fputc, putchar; ungetc; fgets, gets, fputs, puts; fprintf, fscanf; fwrite, fread). Формат бинарных файлов: свобода в интерпретации последовательностей байтов. Традиционные подходы: сырой («raw») формат, однородные файлы записей, блоковая («chunk») структура с заголовками, каталог. Функции для произвольного доступа (ftell, fseek, fgetpos, fsetpos, rewind). Ошибки ввода-вывода и чтение после конца файла, индикация с помощью возвращаемого значения: EOF, NULL, <0, !=0, !=N. Функции feof, ferror. Очистка ошибочных состояний: clearerr или перемотка. Сообщение об ошибке: perror, strerror, errno. Функции с переменным числом аргументов. Макросы для перебора параметров. Пример: минимум из нескольких чисел. Сам. работа 2 8 ОПК-7 Л1.1, Л2.4
Раздел 11. Взаимодействие с ОС
11.1. Функция main(). Параметры командной строки. Возвращаемое значение. Трансляторы с языков программирования. Компиляторы и интерпретаторы. Стадии трансляции программы на языке С: препроцессинг, компиляция, компоновка. Программы из нескольких модулей. Создание и использование библиотек функций. Лекции 2 4 ОПК-7 Л1.1, Л1.2, Л2.4
11.2. Функция main(). Параметры командной строки. Возвращаемое значение. Трансляторы с языков программирования. Компиляторы и интерпретаторы. Стадии трансляции программы на языке С: препроцессинг, компиляция, компоновка. Программы из нескольких модулей. Создание и использование библиотек функций. Сам. работа 2 6 ОПК-7 Л1.1, Л1.2, Л2.4
Раздел 12. Обзор стандартных библиотек функций
12.1. Библиотеки программ и классов. Стандарты языков программирования. Обзор стандартных библиотек функций языка C. Лекции 2 4 ОПК-7 Л1.1, Л1.2, Л2.4
12.2. Библиотеки программ и классов. Стандарты языков программирования. Обзор стандартных библиотек функций языка C. Сам. работа 2 6 ОПК-7 Л1.1, Л1.2, Л2.4
Раздел 13. Экзамен
13.1. Экзамен 2 27 ОПК-7

5. Фонд оценочных средств

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

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

6.1. Рекомендуемая литература
6.1.1. Основная литература
Авторы Заглавие Издательство, год Эл. адрес
Л1.1 Царев Р. Ю. Программирование на языке Си: Учебники и учебные пособия для ВУЗов Сибирский федеральный университет, 2014 // ЭБС Университетская библиотека Online biblioclub.ru
Л1.2 Трофимов В.В. - отв. ред. Алгоритмизация и программирование: Учебник для академического бакалавриата М.: Издательство Юрайт, 2018 // ЭБС "Юрайт" www.biblio-online.ru
6.1.2. Дополнительная литература
Авторы Заглавие Издательство, год Эл. адрес
Л2.1 Синицын С.В., Михайлов А.С., Хлытчиев О.И. Программирование на языке высокого уровня: учебник М.: Академия, 2010
Л2.2 Незнанов А.А. Программирование и алгоритмизация: учебник М.: Академия, 2010
Л2.3 Юдинцев А.Ю., Трошкина Г.Н., Драгун И.А. Основы алгоритмизации и языки программирования: учеб.-метод. пособие Барнаул: Изд-во АлтГУ, 2010 elibrary.asu.ru
Л2.4 Гниденко И. Г., Павлов Ф. Ф., Федоров Д. Ю. Технология разработки программного обеспечения: Учебное пособие Юрайт, 2018 // ЭБС "Юрайт" urait.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. Материально-техническое обеспечение дисциплины

Аудитория Назначение Оборудование
001вК склад экспериментальной мастерской - помещение для хранения и профилактического обслуживания учебного оборудования Акустический прибор 01021; виброизмеритель 00032; вольтметр Q1202 Э-500; вольтметр универсальный В7-34А; камера ВФУ -1; компьютер Турбо 86М; масспектрометр МРС -1; осциллограф ЕО -213- 2 ед.; осциллограф С1-91; осциллограф С7-19; программатор С-815; самописец 02060 – 2 ед.; стабилизатор 3218; терц-октавный фильтр 01023; шкаф вытяжной; шумомер 00026; анализатор АС-817; блок 23 Г-51; блок питания "Статрон" – 2 ед.; блок питания Ф 5075; вакуумный агрегат; весы; вольтметр VM -70; вольтметр В7-15; вольтметр В7-16; вольтметр ВУ-15; генератор Г-5-6А; генератор Г4-76А; генератор Г4-79; генератор Г5-48; датчик колебаний КВ -11/01; датчик колебаний КР -45/01; делитель Ф5093; измеритель ИМП -2; измеритель параметров Л2-12; интерферометр ИТ 51-30; источник "Агат" – 3 ед.; источник питания; источник питания 3222; источник питания ЭСВ -4; лабораторная установка для настройки газовых лазеров; лазер ЛГИ -21; М-кальк-р МК-44; М-калькул-р "Электроника"; магазин сопротивления Р4075; магазин сопротивления Р4077; микроскоп МБС -9; модулятор МДЕ; монохроматор СДМС -97; мост переменного тока Р5066; набор цветных стекол; насос вакумный; насос вакуумный ВН-01; осциллограф С1-31; осциллограф С1-67; осциллограф С1-70; осциллограф С1-81; осциллоскоп ЕО -174В – 2 ед.; пентакта L-100; пирометр "Промень"; пистонфон 05001; преобразователь В9-1; прибор УЗДН -2Т; скамья оптическая СО 1м; спектограф ДФС -452; спектограф ИСП -51; стабилизатор 1202; стабилизатор 3217 – 4 ед.; стабилизатор 3218; стабилизатор 3222 – 3 ед.; станок токарный ТВ-4; усилитель мощности ЛВ -103 – 4 ед.; усилитель У5-9; центрифуга ВЛ-15; частотомер Ч3-54А; шкаф металлический; эл.двигатель; электродинамический калибратор 11032
Помещение для самостоятельной работы помещение для самостоятельной работы обучающихся Компьютеры, ноутбуки с подключением к информационно-телекоммуникационной сети «Интернет», доступом в электронную информационно-образовательную среду АлтГУ
417К лаборатория информационных технологий - компьютерный класс - учебная аудитория для проведения занятий семинарского типа (лабораторных и(или) практических); проведения групповых и индивидуальных консультаций, текущего контроля и промежуточной аттестации Учебная мебель на 12 посадочных мест; рабочее место преподавателя; доска маркерная - 1 шт.; шкаф с учебно-наглядными пособиями - 1 шт.; компьютеры: марка Клама С Офис – 12; проектор, экран с мультимедиа Smart - 1 ед.; учебно-наглядные пособия.
106Л помещение для хранения и профилактического обслуживания учебного оборудования Стеллажи – 3 шт. осциллограф, паяльная станция, источник тока, переносные ноутбуки
419К лаборатория информационных технологий - компьютерный класс - учебная аудитория для проведения занятий семинарского типа (лабораторных и(или) практических); проведения групповых и индивидуальных консультаций, текущего контроля и промежуточной аттестации; Учебная мебель на 17 посадочных мест; рабочее место преподавателя; доска маркерная - 1 шт.; компьютеры: NAIO Corp Z520, НЭТА - 4 in - 13 ед.
Учебная аудитория для проведения занятий лекционного типа, занятий семинарского типа (лабораторных и(или) практических), групповых и индивидуальных консультаций, текущего контроля и промежуточной аттестации, курсового проектирования (выполнения курсовых работ), проведения практик Стандартное оборудование (учебная мебель для обучающихся, рабочее место преподавателя, доска, мультимедийное оборудование стационарное или переносное)

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

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