1. Цели освоения дисциплины
Цель дисциплины "Языки программирования" — изучение основных
принципов построения языков программирования и программирования на
языках высокого уровня. Содержание курса включает основные сведения о
характеристиках и свойствах языков программирования высокого уровня,
принципы построения языков и технологии программирования, средства
описания данных; средства описания действий; абстрактные типы данных:
инкапсуляция, спецификация, реализация, параметризация, классы и объек-
ты; обработка файлов; обработка исключительных ситуаций; параллельная
обработка; макропроцессоры и макрогенераторы; современные интегриро-
ванные среды разработки программ; графический интерфейс пользователя;
отладчики; генераторы кода/приложений; библиотеки программ и классов;
стандарты языков программирования.
2. Место дисциплины в структуре ООП магистратуры
Данная учебная дисциплина относится к базовой части Блока 1 «Дис-
циплины (Модули)» ООП и направлена на формирование у обучающихся
общепрофессиональных и профессиональных компетенций.
Курс «Языки программирования» содержательно и методологически
взаимосвязан с другими курсами, такими как «Информатика», «Математиче-
ская логика и теория алгоритмов».
Программа курса ориентирована на возможность расширения и углуб-
ления знаний, умений и навыков специалиста для успешной профессиональ-
ной деятельности.
Знания, умения и готовности, полученные студентом в результате
освоения курса необходимы для освоения дисциплин «Программные сред-
ства решения математических задач», «Методы программирования», «Опе-
рационные системы», «Системы управления базами данных».
3. Компетенции обучающегося, формируемые в результате освое-
ния дисциплины «Языки программирования»
В результате освоения дисциплины студент должен обладать следую-
щими общепрофессиональными и профессиональными компетенциями:
способностью использовать языки и системы программирования,
инструментальные средства для решения профессиональных, иссле-
довательских и прикладных задач (ОПК-8);
способностью осуществлять подбор, изучение и обобщение
научно-технической информации, методических материалов отече-
ственного и зарубежного опыта по проблемам компьютерной без-
опасности, а также нормативных правовых актов в сфере професси-
ональной деятельности (ПК-1).
В рамках указанных компетенций обучающийся должен:
Код
компетенции
Планируемые результаты обучения
ОПК-8, ПК-1 Знать
- базовые структуры данных;
- общие принципы построения и использования современ-
ных языков программирования высокого уровня;
- язык высокого уровня (объектно-ориентированное про-
граммирование);
- язык ассемблера персонального компьютера;
- особенности взаимодействия языков высокого и низкого
уровня, организации работы с памятью в скриптовых язы-
ках;
-
Уметь
- работать с интегрированными средами разработки про-
граммного обеспечения;
- разрабатывать системное и прикладное программное обес-
печение c использованием языков программирования вы-
сокого уровня;
- разрабатывать системное и прикладное программное обес-
печение для многозадачных, многопользовательских и
многопроцессорных сред, а также для сред с интерфейсом,
управляемым сообщениями.
-
Владеть
- навыками разработки, документирования, тестирования и
отладки программ;
- навыками системного программирования;
- навыками использования инструментальных средств от-
ладки и дизассемблирования программного кода;
4. Структура и содержание дисциплины «Языки программирова-
ния»
Общая трудоемкость дисциплины составляет 12 зачетных единицы, 432
часа. №
п/п
Раздел дисциплины Се-
местр
Неде-
ля се-
местра
Виды учебной рабо-
ты, включая само-
стоятельную работу
студентов и трудо-
емкость (в часах)
Формы текущего
контроля успева-
емости (по неде-
лям семестра)
Формы проме-
Все
го ч
асо
в
Лек
ци
и
Лабор
атор
ны
е (П
ра
кти
че-
ски
е)за
ня
ти
я
Сам
ост
оя
тел
ьн
ая
работа
жуточной атте-
стации (по се-
местрам)
1 2 3 4 5 6 7 8 9
1 Общие принципы
построения и ис-
пользования язы-
ков программиро-
вания.
2 1-2 13 4 8 1 Опрос
2 Средства описания
данных. Типизация
языка. Простые
типы данных.
Структурные типы
данных. Динами-
ческие
структуры данных.
2 3-4 13 4 8 1 Опрос
3 Элементы языков
программирова-
ния. Операторы
управления. Блоки.
Программы. Мо-
дули.
2 5-6 13 4 8 1 Опрос
4 Файлы. Файловый
ввод/вывод. Обра-
ботка файлов.
2 7-8 13 4 8 1 Контрольная ра-
бота
5 Отладчики. Гене-
раторы ко-
да/приложений.
2 9-10 14 4 8 2 Опрос
6 Общая характери-
стика языков ас-
семблера.
2 11-12 14 4 8 2 Опрос
7 Библиотеки про-
грамм и классов.
Принципы созда-
ния, правила ис-
пользования при
собственной раз-
работке.
2 13-14 14 4 8 2 Опрос
8 Стандарты языков 2 15-16 14 4 8 2 Опрос
программирова-
ния. Различия в
стандартах языков
программирова-
ния. 9 Промежуточная аттестация Экзамен
10 ИТОГО (2 семестр) 144 32 64 12 36
11 История создания
языка программи-
рования Java. От-
личия от других
высокоуровневых
языков програм-
мирования.
3 1-2 14 4 6 4 Опрос
12 Современные ин-
тегрированные
среды разработки
программ; графи-
ческий
интерфейс пользо-
вателя. Основные
характеристики
интегрированных
средств разработ-
ки. Их преимуще-
ства и недостатки.
3 3-4 14 4 6 4 Опрос
13 Абстрактные типы
данных. ООП. Ин-
капсуляция.
3 5-6 14 4 6 4 Опрос
14 Абстрактные типы
данных. ООП.
Наследование.
3 7-8 14 4 6 4 Опрос
15 Абстрактные типы
данных. ООП. По-
лиморфизм.
3 9-10 14 4 6 4 Контрольная ра-
бота
16 Обработка исклю-
чительных ситуа-
ций.
3 11-12 14 4 6 4 Опрос
17 Конструкторы 3 13-14 14 4 6 4 Опрос
18 Иерархия классов.
Класс Object.
3 15-16 14 4 6 4 Опрос
19 Коллекции объек-
тов
3 17-18 14 4 6 4 Опрос
20 Промежуточная аттестация Экзамен
21 ИТОГО (3 семестр) 171 36 54 36 45
22 Основы парал-
лельного програм-
мирования
4 1-2 14 4 6 4 Опрос
23 Проблемы возни-
кающие при рас-
параллеливании
программ
4 3-4 14 4 6 4 Опрос
24 Работа с процесса-
ми, потоками
4 5-6 14 4 6 4 Опрос
25 Исполнители 4 7-8 15 4 6 5 Опрос
26 Работа с разделяе-
мой памятью
4 9-10 15 4 6 5 Опрос
27 Синхронизация
параллельных
процессов
4 11-12 15 4 6 5 Контрольная ра-
бота
28 Модельные задачи.
Обедающие фило-
софы.
4 13-14 15 4 6 5 Опрос
29 Модельные задачи.
Читатели и писа-
тели.
4 15-16 15 4 6 5 Опрос
30 Промежуточная аттестация Зачет
31 ИТОГО (4 семестр) 117 32 48 37
Общие принципы построения и использования языков программирования.
Классификация языков программирования. Императивные (процедурные)
языки программирования. Декларативные языки программирования. Функ-
циональные языки программирования. Логические языки программирования.
Объектно-ориентированные языки программирования. Языки сценариев.
Языки параллельных вычислений. Подходы к программированию: структур-
ный, модульный; функциональный; логический; объектно-ориентированный;
смешанный; компонентно-ориентированный (.NET); чисто объектный. Пути
развития и классификация языков программирования. Основные понятия
языков программирования.
Средства описания данных. Типизация языка. Простые типы данных.
Структурные типы данных. Динамические структуры данных.
Структура языка программирования. Базисные средства: скалярные (простые
типы, операции), структурные (структуры и конструкции). Средства разви-
тия: поддержка библиотек, типы данных, абстрактные типы данных, модули,
классы. Средства защиты: абстрактные типы данных, инкапсуляция. Про-
стые типы данных и их виды: арифметические типы, логические типы, сим-
вольные типы. Структурные типы данных и их виды: массив, запись (объ-
единение), множество, файл, строка. Динамические структуры данных и их
виды: связанные списки, стеки, очереди, деревья, деки, кольца. Односвязные
списки и их элементы (узлы). Формирование списка из одного, двух, трех и
более элементов. Вывод списка на экран. Операции над списками: поиск
элемента в списке, удаление элемента из списка, внесение элемента в список.
Элементы языков программирования. Операторы управления. Блоки. Про-
граммы. Модули.
Операторы: оператор присваивания, управляющий оператор, специальные
операторы. Операторы управления: операторы ветвления (ветвления, дис-
кретные, многовариантные), циклы, переходы, блок. Составной оператор или
блок.
Файлы. Файловый ввод/вывод. Обработка файлов.
Ввод и вывод. Связь между оперативной памятью компьютера и информаци-
ей на внешнем устройстве. Имя файла, указатель файла, обработка файла.
Директивы форматного ввода-вывода. Обработка файлов: средства обработ-
ки файлов. Динамическая строка. Тип данных String. Файлы прямого досту-
па. Файлы последовательного доступа. Потоковые файлы. Типы доступа. От-
крытие и закрытие файла. Запись в файл, чтение из файла.
Отладчики. Генераторы кода/приложений.
Режимы отладки, использование контрольных точек. Отладка программ без
использования средств отладки. Основное назначение генераторов кода и
приложений. Отладка программы: встроенный отладчик, окно наблюдений,
точки останова.
Общая характеристика языков ассемблера.
Понятие низкоуровневого программирования, программирование в машин-
ных кодах, мнемокоды, ассемблеры. Общая характеристика языка ассембле-
ра: назначение, принципы построения и использования, особенности про-
граммирования.
Библиотеки программ и классов. Принципы создания, правила использования
при собственной разработке.
Библиотека программ языка программирования. Стандартные библиотеки.
Встроенные функции стандартных библиотек. Связь программы с библиоте-
ками через компилятор. Библиотека классов, библиотека шаблонов. Назначе-
ние и свойства библиотеки. Стандартизация ISO.
Стандарты языков программирования. Различия в стандартах языков про-
граммирования.
Библиотека программ языка программирования. Стандартные библиотеки.
Встроенные функции стандартных библиотек. Связь программы с библиоте-
ками через компилятор. Библиотека классов, библиотека шаблонов. Назначе-
ние и свойства библиотеки. Стандартизация ISO.
История создания языка программирования Java. Отличия от других высо-
коуровневых языков программирования.
История создания языка программирования Java.
Современные интегрированные среды разработки программ; графический
интерфейс пользователя. Основные характеристики интегрированных
средств разработки. Их преимущества и недостатки.
Понятие среды программирования. Интегрированная среда языка програм-
мирования. Команды меню оболочки. Установка режимов работы в среде.
Графический интерфейс пользователя. Отладчик.
Абстрактные типы данных. ООП. Инкапсуляция.
Спецификация, реализация, параметризация, разновидности классов, классы
и объекты в ООП. Сообщения, экземпляры и инициализация, синтаксис пе-
ресылки сообщений, способы создания и инициализации. Абстрактные типы
данных (АТД) и методология объектно-ориентированного программирова-
ния. Абстрактные типы данных: инкапсуляция, классы и объекты, парамет-
ризация, спецификация, реализация.
Абстрактные типы данных. ООП. Наследование.
Интуитивное описание наследования, подкласс, подтип, принцип подстанов-
ки, формы наследования, преимущества наследования. Повторное использо-
вание кода. Наследование и принцип подстановки. Композиция и наследова-
ние.
Абстрактные типы данных. ООП. Полиморфизм.
Полиморфные функции, абстракции низкого и высокого уровней. Разновид-
ности полиморфизма, полиморфные переменные, перегрузка, переопределе-
ние, отложенные методы, чистый полиморфизм спецификация, реализация,
параметризация, классы и объекты.
Обработка исключительных ситуаций.
Исключительные ситуации (exceptions). Простейшие способы обработки ис-
ключений. Обработка исключений при помощи меток. Структурный меха-
низм обработки исключений. Восстановление вычислительного процесса.
Определение семантики средств обработки исключений. Обнаружение оши-
бок и обработка сбоев работы программ. Операторы try, catch, throw как
средство обработки исключительных ситуаций. Пример программы, реали-
зующей один из способов организации обработки исключений.
Конструкторы.
Конструктор по умолчанию. Конструктор с параметрами. Использование
ключевого слова super. Цепочка конструкторов.
Иерархия классов. Класс Object.
Различные виды иерархии классов. Структура класса Object.
Коллекции объектов.
Понятие коллекции. Классы-коллекции. Интерфейсы-коллекции. Интерфейс
Collection. Интерфейс List. Интерфейс Set. Интерфейс Queue. Иерархия клас-
сов-коллекций. Класс Vector. Класс ArrayList. Класс Stack. Класс LinkedList.
Классы-множества. Простые и сложные коллекции. Параметризация коллек-
ций.
Основы параллельного программирования. Проблемы возникающие при рас-
параллеливании программ.
Концепция процесса. Определение потока. Понятие ресурса. Организация
параллельных программ как системы потоков. Взаимодействие и взаимоис-
ключение потоков. Жесткая синхронизация. Взаимная блокировка. Потеря
взаимоисключения. Бесконечное откладывание. Семафоры. Мониторы. Син-
хронизация потоков.
Работа с процессами, потоками
Основные понятия. Создание процессов и потоков. Процессы. Состояние.
Планировщик. Взаимное исключение.
Исполнители
Создание и запуск исполнителя. Типы исполнителей. Возврат значений из
задач. Интерфейс Callable.
Работа с разделяемой памятью
Основные понятия. Задача взаимного исключения. Задача «поставщики – по-
требители».
Синхронизация параллельных процессов
Средства синхронизации параллельных процессов. Матрица следования. Ме-
ханизм семафоров. Передача сообщений, "почтовый ящик". Механизм за-
крытия адресов. Механизм активного ожидания.
Модельные задачи. Обедающие философы.
Постановка задачи. Существующие проблемы при решении – проблема ре-
сурсного голодания, взаимное исключение. Решения задачи (официант,
иерархия ресурсов, на основе монитора).
Модельные задачи. Читатели и писатели.
Первая задача о читателях-писателях (приоритет читателя). Вторая задача о
читателях-писателях (приоритет писателя). Третья задача о читателях-
писателях (честное распределение ресурсов).
План практических занятий
Практические занятия во втором семестре.
№
занятия
Тема Задания для практических
занятий
1 2 3
1 Общие принципы построения и использования
языков программирования.
1
2 Средства описания данных. Типизация языка.
Простые типы данных.
Структурные типы данных. Динамические
структуры данных.
2
3 Элементы языков программирования. Опера-
торы управления. Блоки. Программы. Модули.
3
4 Файлы. Файловый ввод/вывод. Обработка
файлов.
4
5 Отладчики. Генераторы кода/приложений. 5
6 Общая характеристика языков ассемблера. 6
7 Библиотеки программ и классов.
Принципы создания, правила использования
при собственной разработке.
7
8 Стандарты языков программирования. Разли-
чия в стандартах языков программирования.
8
Практические занятия в третьем семестре.
№
занятия
Тема Задания для практических
занятий
1 2 3
1 История создания языка программирования
Java. Отличия от других высокоуровневых
языков программирования.
9
2 Современные интегрированные среды
разработки программ; графический интерфейс пользователя. Основные характери-
стики интегрированных средств разработки.
Их преимущества и недостатки.
10
3 Абстрактные типы данных. ООП. Инкапсуля-
ция.
11
4 Абстрактные типы данных. ООП. Наследова-
ние.
12
5 Абстрактные типы данных. ООП. Полимор-
физм.
13
6 Обработка исключительных ситуаций. 14
7 Конструкторы 15
8 Иерархия классов. Класс Object. 16
9 Коллекции объектов 17
Практические занятия в четвертом семестре.
№
занятия
Тема Задания для практических
занятий
1 2 3
1 Основы параллельного программирования 18
2 Проблемы возникающие при распараллелива-
нии программ
19
3 Работа с процессами, потоками 20
4 Исполнители 21
5 Работа с разделяемой памятью 22
6 Синхронизация параллельных процессов 23
7 Модельные задачи. Обедающие философы. 24
8 Модельные задачи. Читатели и писатели. 25
План лабораторных занятий
На лабораторных занятиях студены на практике знакомятся с различ-
ными языками программирования.
Лабораторные занятия во втором семестре.
№
занятия
Тема Задания для лабораторных
занятий
1 2 3
1 Общие принципы построения и использования
языков программирования.
1
2 Средства описания данных. Типизация языка.
Простые типы данных.
Структурные типы данных. Динамические
структуры данных.
2
3 Элементы языков программирования. Опера-
торы управления. Блоки. Программы. Модули.
3
4 Файлы. Файловый ввод/вывод. Обработка
файлов.
4
5 Отладчики. Генераторы кода/приложений. 5
6 Общая характеристика языков ассемблера. 6
7 Библиотеки программ и классов.
Принципы создания, правила использования
при собственной разработке.
7
8 Стандарты языков программирования. Разли-
чия в стандартах языков программирования.
8
Лабораторные занятия в третьем семестре.
№
занятия
Тема Задания для лабораторных
занятий
1 2 3
1 История создания языка программирования
Java. Отличия от других высокоуровневых
языков программирования.
9
2 Современные интегрированные среды
разработки программ; графический интерфейс пользователя. Основные характери-
стики интегрированных средств разработки.
Их преимущества и недостатки.
10
3 Абстрактные типы данных. ООП. Инкапсуля-
ция.
11
4 Абстрактные типы данных. ООП. Наследова-
ние.
12
5 Абстрактные типы данных. ООП. Полимор-
физм.
13
6 Обработка исключительных ситуаций. 14
7 Конструкторы 15
8 Иерархия классов. Класс Object. 16
9 Коллекции объектов 17
Лабораторные занятия в четвертом семестре.
№
занятия
Тема Задания для лабораторных
занятий
1 2 3
1 Основы параллельного программирования 18
2 Проблемы возникающие при распараллелива-
нии программ
19
3 Работа с процессами, потоками 20
4 Исполнители 21
5 Работа с разделяемой памятью 22
6 Синхронизация параллельных процессов 23
7 Модельные задачи. Обедающие философы. 24
8 Модельные задачи. Читатели и писатели. 25
5. Образовательные технологии
Предусматривается широкое использование в учебном процессе актив-
ных и интерактивных форм: организация дискуссий и обсуждений спорных
вопросов, использование метода мозгового штурма, использование мульти-
медийных презентаций.
При обучении лиц с ограниченными возможностями здоровья и инва-
лидов используются подходы, способствующие созданию безбарьерной об-
разовательной среды: технологии дифференциации и индивидуализации обу-
чения, увеличивается время на самостоятельное освоение материала. Исполь-
зуется сочетание разных форм и способов передачи учебной информации:
вербальный, невербальный, с использованием средств визуализации инфор-
мации (презентации) и разных способов отчетности (письменно, устно, с ис-
пользованием электронных дистанционных технологий).
6. Учебно-методическое обеспечение самостоятельной работысту-
дентов. Оценочные средства для текущего контроляуспеваемости, про-
межуточной аттестации по итогам освоениядисциплины.
В рамках самостоятельной работы студенты более углубленно изучают
материал дисциплины с помощью учебной литературы, указанной в разделе
8.
Фонд оценочных средств дисциплины включает в себя задания для ла-
бораторных и практических занятий, контрольные вопросы, вопросы для
проведения промежуточной аттестации, задания для контрольной работы,
темы курсовых работ.
7. Данные для учета успеваемости студентов в БАРС Таблица максимальных баллов по
видам учебной деятельности.
1 2 3 4 5 6 7 8 9
Семестр Лекции
Лабора-
торные
занятия
Практи-
ческие
занятия
Самосто-
ятельная
работа
Автома-
тизиро-
ванное
тестиро-
вание
Другие
виды
учеб-
ной
дея-
тель-
ности
Проме-
жуточ-
ная атте-
стация
Итого
2 20 10 15 25 0 0 30 100
3 20 10 15 25 0 0 30 100
4 20 10 15 25 0 0 30 100
Примерная программа оценивания учебной деятельности студента
2-й семестр
Лекции
Посещаемость, опрос, активность и др. за один семестр – от 0 до 20
баллов.
Лабораторные занятия
Контроль выполнения лабораторных заданий в течение одного семест-
ра - от 0 до 10 баллов.
Практические занятия
Контроль выполнения практических заданий в течение одного семестра
- от 0 до 15 баллов.
Самостоятельная работа
Контрольная работа (от 0 до 25 баллов).
Автоматизированное тестирование
Не предусмотрено.
Другие виды учебной деятельности
Не предусмотрено.
Промежуточная аттестация
При определении разброса баллов при аттестации преподаватель может
воспользоваться следующим примером ранжирования:
21-30 баллов – ответ на «отлично»
11-20 баллов – ответ на «хорошо»
6-10 баллов – ответ на «удовлетворительно»
0-5 баллов – неудовлетворительный ответ.
Таким образом, максимально возможная сумма баллов за все виды
учебной деятельности студента за семестр по дисциплине «Языки програм-
мирования» составляет 100 баллов.
Пересчет полученной студентом суммы баллов
по дисциплине «Языки программирования» в оценку (экзамен):
меньше 60 баллов «неудовлетворительно»
от 60 до 75 баллов «удовлетворительно»
от 76 до 85 баллов «хорошо»
более 85 баллов «отлично»
Пересчет полученной студентом суммы баллов
по дисциплине «Языки программирования» в оценку (зачет):
меньше 60 баллов «не зачтено»
от 60 до 100 баллов «зачтено»
Курсовые работы у студентов специальности 10.05.01 «Компьютерная
безопасность» в четвёртом семестре закреплены за дисциплиной «Языки
программирования».
Таблица 1 – Таблица максимальных баллов по видам учебной
деятельности 1 2 3 4 5 6 7 8 9
Се-
мест
р
Лек
ции
Лабора-
торные
занятия
Практи-
ческие
занятия
Самостоя-
тельная
работа
Автоматизи-
рованное те-
стирование
Другие
виды
учебной
дея-
тельно-
сти
Промежу-
точная
аттеста-
ция
Ито
го
4 0 0 0 30 0 30 40 100
Программа оценивания учебной деятельности студента
4 семестр
Лекции
Не предусмотрено.
Лабораторные занятия
Не предусмотрено.
Практические занятия
Не предусмотрено.
Самостоятельная работа
Оценивается сбор, анализ и систематизация теоретической, научно-
практической информации по тематике курсовой работы; обоснованный вы-
бор методов и инструментальных средств для проведения вычислительного
эксперимента; планирование, проведение и анализ результатов вычислитель-
ного эксперимента, грамотность в оформлении – от 0 до 30 баллов.
Автоматизированное тестирование
Не предусмотрено.
Другие виды учебной деятельности
Оценивается планомерная работа над курсовой работой во время се-
местра, регулярные консультации с научным руководителем, своевременное
представление курсовой работы на защиту – от 0 до 15 баллов; участие в
научных мероприятиях по тематике курсовой работы или ином публичном
представлении результатов курсовой работы, в том числе участие в создании
объектов интеллектуальной собственности; публикация результатов исследо-
ваний выполненных в рамках курсовой работы – от 0 до 15 баллов.
Промежуточная аттестация
Включает в себя соблюдение требований к оформлению текста курсо-
вой работы; подготовка презентации выступления для защиты курсовой ра-
боты; грамотность и логичность выступления с результатами работы на за-
щите курсовой работы; исчерпывающие, правильные и уверенные ответы на
вопросы в ходе защиты курсовой работы.
При проведении промежуточной аттестации
результат работы на «отлично» оценивается от 32 до 40 баллов;
результат работы на «хорошо» оценивается от 24 до 31 баллов;
результат работы на «удовлетворительно» оценивается от 16 до 23 бал-
лов;
результат работы на «неудовлетворительно» оценивается от 0 до 15
баллов.
Таким образом, максимально возможная сумма баллов за все виды
учебной деятельности студента за четвёртый семестр по курсовой работе со-
ставляет 100 баллов.
Таблица 2 – Таблица пересчета полученной студентом суммы баллов
по курсовой работе в оценку (зачет) 75 баллов и более «зачтено»
меньше 75 баллов «не зачтено»