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

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

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

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

Курс (семестр) 2 (3) 2 (4) Итого
Недель 16 22
Вид занятий УПРПДУПРПДУПРПД
Лекции 18 18 24 24 42 42
Лабораторные 20 20 34 34 54 54
Сам. работа 70 70 59 59 129 129
Часы на контроль 0 0 27 27 27 27
Итого 108 108 144 144 252 252

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

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

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

разработана в соответствии с ФГОС:
Федеральный государственный образовательный стандарт высшего образования - бакалавриат по направлению подготовки 10.03.01 Информационная безопасность (приказ Минобрнауки России от 17.11.2020 г. № 1427)

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

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

Протокол от 28.06.2023 г. № 11-2022/23
Срок действия программы: 20232024 уч. г.

Заведующий кафедрой
Поляков Виктор Владимирович


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

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

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

Протокол от 28.06.2023 г. № 11-2022/23
Заведующий кафедрой Поляков Виктор Владимирович


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

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

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

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

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

ОПК-7Способен использовать языки программирования и технологии разработки программных средств для решения задач профессиональной деятельности;
ОПК-7.1 Знает языки программирования и системы разработки программных средств для решения профессиональных задач.
ОПК-7.2 Умеет выбирать необходимые языки программирования и системы разработки программных средств для решения профессиональных задач.
ОПК-7.3 Владеет навыками применения языков программирования и систем разработки программных средств для решения профессиональных задач.
В результате освоения дисциплины обучающийся должен
3.1.Знать:
3.1.1.ОПК-7.1. Знает языки программирования и системы разработки программных средств для решения профессиональных задач.
3.2.Уметь:
3.2.1.ОПК-7.2. Умеет выбирать необходимые языки программирования и системы разработки программных средств для решения профессиональных задач.

3.3.Иметь навыки и (или) опыт деятельности (владеть):
3.3.1.ОПК-7.3. Владеет навыками применения языков программирования и систем разработки программных средств для решения профессиональных задач.

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

Код занятия Наименование разделов и тем Вид занятия Семестр Часов Компетенции Литература
Раздел 1. Основные типы Python. Выражения. Функции
1.1. Введение в технологии программирования. Основы Python. Стандартные типы языка Python. Составные типы данных. Функции в Python. Функции высших порядков и декораторы. Лекции 3 10 ОПК-7.1, ОПК-7.2, ОПК-7.3 Л2.1, Л1.1, Л2.2, Л1.2
1.2. Составные типы данных Лабораторные 3 4 ОПК-7.1, ОПК-7.2, ОПК-7.3 Л2.1, Л1.1, Л2.2, Л1.2
1.3. Составные типы данных. Продолжение Лабораторные 3 4 ОПК-7.1, ОПК-7.2, ОПК-7.3 Л2.1, Л1.1, Л2.2, Л1.2
1.4. Введение в технологии программирования. Основы Python. Стандартные типы языка Python. Составные типы данных. Функции в Python. Функции высших порядков и декораторы. Сам. работа 3 30 ОПК-7.1, ОПК-7.2, ОПК-7.3 Л2.1, Л1.1, Л2.2, Л1.2
Раздел 2. Основы объектно-ориентированного программирования. Классы. Атрибуты классов
2.1. Основы ООП. Свойства классов (property). Наследование. Обработка исключений.Декораторы в Python Лекции 3 8 ОПК-7.1, ОПК-7.2, ОПК-7.3 Л2.1, Л1.1, Л2.2, Л1.2
2.2. Классы в Python. Атрибуты классов Лабораторные 3 8 ОПК-7.1, ОПК-7.2, ОПК-7.3 Л2.1, Л1.1, Л2.2, Л1.2
2.3. Наследование в Python. Декораторы Лабораторные 3 4 ОПК-7.1, ОПК-7.2, ОПК-7.3 Л2.1, Л1.1, Л2.2, Л1.2
2.4. Основы ООП. Свойства классов (property). Наследование. Обработка исключений.Декораторы в Python Сам. работа 3 40 ОПК-7.1, ОПК-7.2, ОПК-7.3 Л2.1, Л1.1, Л2.2, Л1.2
Раздел 3. Основы анализа алгоритмов. Сортировка последовательностей
3.1. Оценка сложности алгоритмов. Медленные сортировки. Сортировка вставками. Рекуррентные алгоритмы. Методы решения рекуррентных уравнений. Быстрая сортировка. Пирамидальная сортировка. Общие ограничения на сложность алгоритмов сортировки Лекции 4 8 ОПК-7.1, ОПК-7.2, ОПК-7.3 Л2.1, Л1.1, Л2.2, Л1.2
3.2. Простые (медленные) сортировки Лабораторные 4 8 ОПК-7.1, ОПК-7.2, ОПК-7.3 Л2.1, Л1.1, Л2.2, Л1.2
3.3. Эффективные сортировки Лабораторные 4 8 ОПК-7.1, ОПК-7.2, ОПК-7.3 Л2.1, Л1.1, Л2.2, Л1.2
3.4. Оценка сложности алгоритмов. Медленные сортировки. Сортировка вставками. Рекуррентные алгоритмы. Методы решения рекуррентных уравнений. Быстрая сортировка. Пирамидальная сортировка. Общие ограничения на сложность алгоритмов сортировки Сам. работа 4 18 ОПК-7.1, ОПК-7.2, ОПК-7.3 Л2.1, Л1.1, Л2.2, Л1.2
Раздел 4. Алгоритмы поиска. Бинарные деревья поиска
4.1. Линейный и рекуррентный поиск. Хэш-функции и поиск в хэш-таблицах. Бинарные деревья поиска. Бинарные деревья. Основные понятия и числовые оценки. Деревья поиска. Операции поиска, вставки и удаления элементов. Сбалансированные бинарные деревья поиска. Операции левого и правого вращения узлов. Балансировка AVL-деревьев. Красно-черные деревья. Доказательство сбалансированности. Модифицированные операции поиска, вставки и удаления в красно-черных деревьях Лекции 4 8 ОПК-7.1, ОПК-7.2, ОПК-7.3 Л2.1, Л1.1, Л2.2, Л1.2
4.2. Алгоритмы поиска и вставки элементов при последовательном хранении Лабораторные 4 8 ОПК-7.1, ОПК-7.2, ОПК-7.3 Л2.1, Л1.1, Л2.2, Л1.2
4.3. Линейный и рекуррентный поиск. Хэш-функции и поиск в хэш-таблицах. Бинарные деревья поиска. Бинарные деревья. Основные понятия и числовые оценки. Деревья поиска. Операции поиска, вставки и удаления элементов. Сбалансированные бинарные деревья поиска. Операции левого и правого вращения узлов. Балансировка AVL-деревьев. Красно-черные деревья. Доказательство сбалансированности. Модифицированные операции поиска, вставки и удаления в красно-черных деревьях Сам. работа 4 18 ОПК-7.1, ОПК-7.2, ОПК-7.3 Л2.1, Л1.1, Л2.2, Л1.2
Раздел 5. Динамическое программрование и жадные алгоритмы
5.1. Задачи непрерывной и дискретной оптимизации. Понятие задачи оптимизации. Линейное программирование. Симплекс-метод. Дискретная оптимизация. Динамическое программирование. Общий подход к решению задач динамического программирования. Задача о сборочной линии. Задача об умножении цепочки матриц. Задача о наибольшей общей подпоследовательности. Рекуррентное решение и мемоизация Лекции 4 8 ОПК-7.1, ОПК-7.2, ОПК-7.3 Л2.1, Л1.1, Л2.2, Л1.2
5.2. Задачи дискретной оптимизации. Динамическое программирование Лабораторные 4 10 ОПК-7.1, ОПК-7.2, ОПК-7.3 Л2.1, Л1.1, Л2.2, Л1.2
5.3. Задачи непрерывной и дискретной оптимизации. Понятие задачи оптимизации. Линейное программирование. Симплекс-метод. Дискретная оптимизация. Динамическое программирование. Общий подход к решению задач динамического программирования. Задача о сборочной линии. Задача об умножении цепочки матриц. Задача о наибольшей общей подпоследовательности. Рекуррентное решение и мемоизация Сам. работа 4 23 ОПК-7.1, ОПК-7.2, ОПК-7.3 Л2.1, Л1.1, Л2.2, Л1.2
Раздел 6. Экзамен
6.1. Экзамен 4 27 ОПК-7.1, ОПК-7.2, ОПК-7.3 Л2.1, Л2.2

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

5.1. Контрольные вопросы и задания для проведения текущего контроля и промежуточной аттестации по итогам освоения дисциплины
Оценочные материалы для текущего контроля по разделам и темам дисциплины в полном объеме размещены в онлайн-курсе на образовательном портале «Цифровой университет АлтГУ» – https://portal.edu.asu.ru/course/view.php?id=10518

ОЦЕНКА СФОРМИРОВАННОСТИ КОМПЕТЕНЦИИ:
ОПК-7: Способен использовать языки программирования и технологии разработки программных средств для решения задач профессиональной деятельности
Индикаторы достижения компетенции:
ОПК-7.1: Знает языки программирования и системы разработки программных средств для решения профессиональных задач.
ОПК-7.2: Умеет выбирать необходимые языки программирования и системы разработки программных средств для решения профессиональных задач.
ОПК-7.3: Владеет навыками применения языков программирования и систем разработки программных средств для решения профессиональных задач.

ПРИМЕРЫ ЗАДАНИЙ ЗАКРЫТОГО ТИПА

Вопрос 1. Какие характеристики можно отнести к языку программирования Python?
А. интерпретируемый
Б. с динамической типизацией
В. использующий препроцессор для макроподстановок
Г. для быстрой разработки приложений
Ответ: А, Б, Г

Вопрос 2. Какие характеристики можно отнести к языку программирования Python?
А. имеет эффективный компилятор в коды процессора
Б. использует раннее связывание
В. объектно-ориентированный
Г. универсальный язык программирования
Ответ: В, Г

Вопрос 3. Какие из этих утверждений о Python верны?
А. программы на Python транслируются в машинные коды, которые затем исполняются
Б. Python использует промежуточный код
В. язык Python применяется для быстрой разработки приложений
Г. Python имеет обширную библиотеку стандартных модулей
Ответ: Б, В, Г

Вопрос 4. Какие парадигмы и стили программирования поддерживает Python?
А. объектно-ориентированный
Б. структурный стиль
В. программирование в ограничениях
Г. функциональное программирование
Ответ: А, Б, Г

Вопрос 5. Что будет выведено следующей программой:
A = B = 1
a = "A" * 5
b = "B" * 5
a = a + b * 5
print a, b

А. 30 5
Б. AAAAABBBBBAAAAABBBBBAAAAABBBBBAAAAABBBBBAAAAABBBBB, BBBBB
В. AAAAABBBBBAAAAABBBBBAAAAABBBBBAAAAABBBBBAAAAABBBBB BBBBB
Г. AAAAABBBBBBBBBBBBBBBBBBBBBBBBB BBBBB
Ответ: Г

Вопрос 6. Что выведет следующая программа
S = 0
for i in range(1, 10):
if i % 2 == 0:
S = S + i
print S
А. -1
Б. 0
В. 20
Г. 100
Ответ: В

Вопрос 7. Что выведет следующая программа:
S = 0
for i in range(10, 2, -1):
if i % 2 == 0:
S = S + i
print S
А. 0
Б. 10
В. 28
Г. 32
Ответ: В

Вопрос 8. Сколько элементов будет содержать список L (то есть, чему будет равно len(L)) после выполнения следующего кода:
L = []
L.extend([1,2,3])
L.insert(1, "abc")
del L[0][0]
А. 1
Б. 2
В. 4
Г. 4, но произойдет ошибка
Ответ: Г

Вопрос 9. Что будет получено в результате вычисления следующего выражения:
(0 < [1, 4][1] < 3) + 1
А. 0
Б. 1
В. 2
Г. 3
Ответ: Б

Вопрос 10. С помощью какой функции можно организовать цикл с параметром (for)?
А. range()
Б. id()
В. dir()
Г. reload()
Ответ: А

Вопрос 11. Что обычно делается для возврата более одного значения из функции?
А. ничего; возвратить можно только одно значение
Б. возвращается кортеж значений
В. значения можно вернуть через входные объекты, заданные в списке аргументов (как в C/C++)
Ответ: Б

Вопрос 12. Какими способами можно получить доступ к функции fun() из модуля fns?
А. from fns import fun; fun()
Б. import fns; fns.fun()
В. import fns.fun; fns.fun()
Г. import fns.fun as fun; fun()
Ответ: А, Б

Вопрос 13. В каком модуле можно взять типы базовые классы для составных типов данных?
А. re
Б. typing
В. pickle
Г. math
Ответ: Б

Вопрос 14. Как определить функцию в Python?
А. с помощью оператора def
Б. с помощью оператора import
В. заданием списка строк исходного кода
Г. с помощью lambda-выражения
Ответ: А, Г

Вопрос 15. Какие операторы и функции Python подходят для поэлементной обработки элементов последовательности?
А. функция map()
Б. списковое включение [x for x in s]
В. функция id()
Г. функция iter()
Ответ: А, Б

КРИТЕРИИ ОЦЕНИВАНИЯ ЗАКРЫТЫХ ВОПРОСОВ
Каждое задание оценивается 1 баллом. Оценивание выполненных заданий в целом:
- «зачтено» – верно выполнено более 50% заданий; «не зачтено» – верно выполнено 50% и менее 50% заданий;
- «отлично» – верно выполнено 85-100% заданий; «хорошо» – верно выполнено 70-84% заданий; «удовлетворительно» – верно выполнено 51-69% заданий; «неудовлетворительно» – верно выполнено 50% или менее 50% заданий.

ПРИМЕРЫ ЗАДАНИЙ ОТКРЫТОГО ТИПА

Вопрос 1. Что происходит при выполнении стейтмента def имя_функции()?
Ответ: код функции компилируется во внутреннее представление, а объект «функция» присваивается заданному имени

Вопрос 2. Зачем нужен «пустой» тип None?
Ответ: можно присваивать это значение переменным, заполнять структуры значением этого типа, сравнивать (проверять, является ли текущее значение None или чем-то другим), возвращать его из функций, передавать его в функции

Вопрос 3. Как работает ленивое вычисление условных операторов and и or?
Ответ: для операции "или" достаточно, чтобы операнд слева был истинным, второй операнд справа считать не нужно, для операции "и" - достаточно, чтобы левый операнд был ложным, чтобы второй не вычислялся

Вопрос 4. Чем удобны форматные строки вида f’…’ (f”…”)?
Ответ: они позволяют вставлять вычисляемые фрагменты кода в себя и выводить полученные в этих фрагментах значения в заданном формате

Вопрос 5. Чем отличаются коллекции list и tuple?
Ответ: список (list) является изменяемой последовательностью элементов произвольной длины, кортеж (tuple) – является неизменяемой последовательностью элементов фиксированной при создании длины

Вопрос 6. При использовании пустого типа None в условии оно будет восприниматься как _ значение
Ответ: ложное, как и любое другое нулевое или пустое значение

Вопрос 7. Чем отличаются операции сравнения == и is?
Ответ: сравнение по == осуществляется по значению сравниваемых объектов, а сравнение по is осуществляется по значениям их id(), то есть адресов (идентичностей )

Вопрос 8. Какой конструкцией можно перебрать все символы строки str, не прибегая напрямую к использованию индексов?
Ответ: конструкцией вида
for symbol in str:
# код для обработки очередного символа symbol

Вопрос 9. С помощью какой функции можно узнать тип объекта в Python?
Ответ: с помощью функции type(), например type(10) вернет тип int

Вопрос 10. Зачем нужны несколько видов кавычек в Python?
Ответ: при их использовании чаще всего отпадает необходимость в экранировании выводимых в консоль символов кавычки

Вопрос 11. Чем отличается обработка докстрингов (строк в тройных одинарных или двойных кавычках) от обычных?
Ответ: способом обработки отступов, нулевой уровень отступа задаётся минимальным отступом, а внутри явно можно указать произвольные отступы.

Вопросы 12. Как выбрать из строки str произвольной возможной длины подстроку, начинающуюся с третьего символа и не включающую последний?
Ответ: str[2:-1]

Вопрос 13. Как определить функцию, принимающую два обязательных позиционных аргумента x и y и набор необязательных именованных?
Ответ: определение будет выглядеть так:
def имя_функции(x, y, **kwargs):
# тело функции

Вопрос 14. В чем опасность использования изменяемых объектов в качестве значений по умолчанию аргументов функций?
Ответ: сам аргумент по умолчанию может изменяться при последовательных запусках функции

Вопрос 15. Как проверить, является ли данный объект obj относящимся к классу smth?
Ответ: нужно использовать функцию isinstance(obj, smth)

Вопрос 16. Какие уровни видимости (scope) существуют в Python?
Ответ: локальный (внутри функции и ее аргументов), глобальный (на верхнем уровне модуля/скрипта), нелокальный (из охватывающей функции, только на 1 уровень выше и только из функции)

Вопрос 17. Зачем нужны лямбда-выражения в Python?
Ответ: это выражения, создающие функции без имени, далее эту функцию можно запомнить в переменной, передать как аргумент/вернуть из функции или вызвать

Вопрос 18. Как работает связывание по имени?
Ответ: функция зависит от внешних параметров и при вызовах использует их значения в данный момент

Вопрос 19. Что делает функция reduce модуля functools?
Ответ: принимает 2-местную функцию и выполняет (левую) свёртку всех элементов последовательности

Вопрос 20. _ - это функция, принимающая функцию, определённую в следующей строке, и делающая некое преобразование («колдовство») над ней
Ответ: декоратор

КРИТЕРИИ ОЦЕНИВАНИЯ ОТКРЫТЫХ ВОПРОСОВ.
«Отлично» (зачтено): Ответ полный, развернутый. Вопрос точно и исчерпывающе передан, терминология сохранена, студент превосходно владеет основной и дополнительной литературой, ошибок нет.
«Хорошо» (зачтено): Ответ полный, хотя краток, терминологически правильный, нет существенных недочетов. Студент хорошо владеет пройденным программным материалом; владеет основной литературой, суждения правильны.
«Удовлетворительно» (зачтено): Ответ неполный. В терминологии имеются недостатки. Студент владеет программным материалом, но имеются недочеты. Суждения фрагментарны.
«Неудовлетворительно» (не зачтено): Не использована специальная терминология. Ответ в сущности неверен. Переданы лишь отдельные фрагменты соответствующего материала вопроса. Ответ не соответствует вопросу или вовсе не дан.
5.2. Темы письменных работ для проведения текущего контроля (эссе, рефераты, курсовые работы и др.)
не предусмотрены
5.3. Фонд оценочных средств для проведения промежуточной аттестации
Промежуточная аттестация заключается в проведении в конце семестра экзамена по всему изученному курсу. Экзамен проводится в устной форме по билетам. В билет входит 2 вопроса: как правило, 1 вопрос теоретического характера и 1 вопрос практико-ориентированного характера.

ВОПРОСЫ ТЕОРЕТИЧЕСКОГО ХАРАКТЕРА:
1. Определение инварианта цикла. Инвариант цикла для алгоритма сортировки вставками. Доказательство выполнения методом математической индукции
2. Асимптотические оценки сложности алгоритмов. Оценка времени работы и требуемого объема памяти. Θ()-, Ω()- и O()-обозначения. Наихудшее, наилучшее и среднее время работы алгоритма. Пример: алгоритм сортировки вставками
3. Метод декомпозиции для разработки рекурсивных алгоритмов. Сортировка слиянием
4. Инвариант цикла для функции слияния. Доказательство выполнения методом математической индукции
5. Асимптотические оценки времени работы для функций слияния и сортировки слиянием. Рекуррентное уравнение для времени работы алгоритма сортировки слиянием
6. Метод деревьев рекурсии для решения рекуррентных соотношений. Пример решения для нетривиального случая
7. Пирамида. Свойство пирамиды. Основные операции доступа к элементам пирамиды. Функция MaxHeap для обеспечения свойства пирамиды, ее асимптотическая сложность
8. Создание пирамиды. Инвариант цикла при создании пирамиды. Асимптотическая оценка времени работы для функции создания пирамиды
9. Идея алгоритма пирамидальной сортировки (без описания функций MaxHeap и создания пирамиды). Асимптотическая оценка сложности работы
10. Быстрая сортировка. Метод декомпозиции для быстрой сортировки. Инвариант цикла при быстрой сортировке. Доказательство выполнения инварианта
11. Худшее и среднее асимптотическое время работы быстрой сортировки. Рандомизированная версия алгоритма быстрой сортировки
12. Анализ рандомизированной версии алгоритма быстрой сортировки с помощью случайных индикаторных функций
13. Модель дерева решений для задачи сортировки. Нижняя асимптотическая оценка времени работы произвольного алгоритма сортировки без дополнительных знаний об объектах
14. Сортировка подсчетом. Асимптотическое время работы. Понятие устойчивой сортировки. Radix-сортировка. Асимптотическое время работы. Алгоритм сортировки карманами (без доказательства оценки времени работы)
15. Асимптотическая оценка времени работы алгоритма сортировки карманами с помощью индикаторных функций
16. Задача поиска объекта. Линейный поиск. Асимптотические оценки времени поиска, вставки и удаления элемента в линейном контейнере
17. Задача поиска объекта Бинарный поиск. Асимптотические оценки времени поиска, вставки и удаления элемента при бинарном поиске (не на деревьях поиска, в последовательном контейнере)
18. Бинарные деревья поиска. Основные определения и свойства. Поиск ближайшего по значению ключа элемента в бинарном дереве поиска
19. Вставка элементов в бинарном дереве поиска. Асимптотическое время работы этих операций
20. Красно-черные деревья. Свойства красно-черных деревьев. Черные высоты узлов. Доказательство теоремы о сбалансированности красно-черных деревьев
21. Операции левого и правого вращения. Модификация обычной вставки в бинарном дереве для случая красно-черного дерева
22. Задача динамического программирования. Основные компоненты решения
23. Пример задачи оптимизации - задачи о сборочном конвейере

ВОПРОСЫ ПРАКТИКО-ОРИЕНТИРОВАННОГО ХАРАКТЕРА
1. Классификация языков программирования (динамическая/статическая типизация, строгая/слабая типизация)
2. Изменяемые и неизменяемые типы данных в Python
3. Объявление функций в языке Python, позиционные и именованные аргументы, * и **
4. Вложенность функций, видимость имен, LEGB
5. Функции высших порядков и лямбда-выражения
6. Передача функций как аргументов, связывание переменных по имени и по значению
7. Аннотации типов в Python, преимущества использования
8. Составные типы данных на основе NamedTuple, TypedDict и dataclass
9. Декораторы в Python
10. Работа с файлами, текстовы и бинарный ввод-вывод, использование менеджеров контекста
11. Объявление класса в Python, метод __init__(), словарь __dict__ класса, использование многострочных комментариев для формирования документации
12. Виды методов класса (методы объектов, методы класса, статические методы), отличия от «обычных» функций
13. Атрибуты объектов и классов, изменяемость и неизменяемость атрибутов
14. Специальные (double-underscore) методы класса (на примере арифметики, условия), применение декоратора functools.total_ordering
15. Управление доступом к значениям класса, декоратор @property, @_.setter, @_.deleter
16. Создание значений класса с доступом только на чтение, только на запись
17. Наследование в Python, динамическое и статическое разрешение вызова методов
18. Абстрактные классы, модуль abc, вызовы isinstance(), is, issubclass()
19. Обработка исключений с помощью конструкции try - except - else - finally
20. Иерархия исключений-наследников Exception
21. Простые генераторы, оператор yield

КРИТЕРИИ ОЦЕНИВАНИЯ:
«Отлично» (зачтено): студентом дан полный, в логической последовательности развернутый ответ на поставленные вопросы, где он продемонстрировал знания предмета в полном объеме учебной программы, достаточно глубоко осмысливает дисциплину, самостоятельно, и исчерпывающе отвечает на дополнительные вопросы, приводит собственные примеры по проблематике поставленного вопроса, решил предложенные практические задания без ошибок.
«Хорошо» (зачтено): студентом дан развернутый ответ на поставленный вопрос, где студент демонстрирует знания, приобретенные на лекционных и семинарских занятиях, а также полученные посредством изучения обязательных учебных материалов по курсу, дает аргументированные ответы, приводит примеры, в ответе присутствует свободное владение монологической речью, логичность и последовательность ответа. Однако допускаются неточности в ответе. Решил предложенные практические задания с небольшими неточностями.
«Удовлетворительно» (зачтено): студентом дан ответ, свидетельствующий в основном о знании процессов изучаемой дисциплины, отличающийся недостаточной глубиной и полнотой раскрытия темы, знанием основных вопросов теории, слабо сформированными навыками анализа явлений, процессов, недостаточным умением давать аргументированные ответы и приводить примеры, недостаточно свободным владением монологической речью, логичностью и последовательностью ответа. Допускается несколько ошибок в содержании ответа и решении практических заданий.
«Неудовлетворительно» (не зачтено): студентом дан ответ, который содержит ряд серьезных неточностей, обнаруживающий незнание процессов изучаемой предметной области, отличающийся неглубоким раскрытием темы, незнанием основных вопросов теории, неумением давать аргументированные ответы. Выводы поверхностны. Решение практических заданий не выполнено. Студент не способен ответить на вопросы даже при дополнительных наводящих вопросах преподавателя.

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

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

Microsoft Office 2010 (Office 2010 Professional, № 4065231 от 08.12.2010), (бессрочно);
Microsoft Windows 7 (Windows 7 Professional, № 61834699 от 22.04.2013), (бессрочно);
Chrome (http://www.chromium.org/chromium-os/licenses), (бессрочно); 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), (бессрочно);
ASTRA LINUX SPECIAL EDITION (https://astralinux.ru/products/astra-linux-special-edition/), (бессрочно);
LibreOffice (https://ru.libreoffice.org/), (бессрочно);
Веб-браузер Chromium (https://www.chromium.org/Home/), (бессрочно);
Антивирус Касперский (https://www.kaspersky.ru/), (до 23 июня 2024);
Архиватор Ark (https://apps.kde.org/ark/), (бессрочно);
Okular (https://okular.kde.org/ru/download/), (бессрочно);
Редактор изображений Gimp (https://www.gimp.org/), (бессрочно)
6.4. Перечень информационных справочных систем
Профессиональные базы данных:
1. Электронная база данных «Scopus» (http://www.scopus.com);
2. Электронная библиотечная система Алтайского государственного университета (http://elibrary.asu.ru/);
3. Научная электронная библиотека elibrary (http://elibrary.ru

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

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

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

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