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

Программная инженерия

рабочая программа дисциплины
Закреплена за кафедройКафедра информатики
Направление подготовки09.04.01. Информатика и вычислительная техника
ПрофильИнженерия искусственного интеллекта
Форма обученияОчная
Общая трудоемкость6 ЗЕТ
Учебный план09_04_01_Информатика и вычислительная техника_ИИИ-2023
Часов по учебному плану 216
в том числе:
аудиторные занятия 72
самостоятельная работа 90
контроль 54
Виды контроля по семестрам
экзамены: 1, 2

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

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

Программу составил(и):
к.т.н., доцент, Михеева Т.В.

Рецензент(ы):
к.ф.-м.н., доцент, Пономарев И.В.

Рабочая программа дисциплины
Программная инженерия

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

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

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

Протокол от 26.06.2023 г. № 4
Срок действия программы: 20232024 уч. г.

Заведующий кафедрой
Козлов Д.Ю., к.ф.-м.н., доцент


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

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

Кафедра информатики

Протокол от 26.06.2023 г. № 4
Заведующий кафедрой Козлов Д.Ю., к.ф.-м.н., доцент


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

1.1.- ознакомление с методологическими основами современной программной инженерии;
- приобретение навыков проектирования, создания, тестирования и отладки программных продуктов с использованием современных средств разработки;
- изучение технологии использования визуальных средств программирования.

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

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

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

ОПК-10Способен применять методы системного анализа и программное обеспечение для системного моделирования с целью решения задач в сфере исследовательской деятельности
ОПК-10.1 Использует методы системного анализа для постановки задач и отыскания возможных путей их решения в сфере исследовательской деятельности.
ОПК-10.2 Настраивает, конфигурирует и адаптирует программные средства системного моделирования для постановки и решения задач в сфере исследовательской деятельности.
ОПК-2Способен разрабатывать оригинальные алгоритмы и программные средства, в том числе с использованием современных интеллектуальных технологий, для решения профессиональных задач;
ОПК-2.1 Знать: современные информационно-коммуникационные и интеллектуальные технологии, инструментальные среды, программно-технические платформы для решения профессиональных задач.
ОПК-2.2 Уметь: обосновывать выбор современных информационно-коммуникационных и интеллектуальных технологий, разрабатывать оригинальные программные средства для решения профессиональных задач.
ОПК-2.3 Владеть: методами разработки оригинальных программных средств, в том числе с использованием современных информационно-коммуникационных и интеллектуальных технологий, для решения профессиональных задач.
ОПК-5Способен разрабатывать и модернизировать программное и аппаратное обеспечение информационных и автоматизированных систем;
ОПК-5.1 Знать современное программное и аппаратное обеспечение информационных и автоматизированных систем.
ОПК-5.2 Владеть методами модернизации программного и аппаратного обеспечения информационных и автоматизированных систем для решения профессиональных задач.
ОПК-5.3 Уметь разрабатывать программное и аппаратное обеспечение информационных и автоматизированных систем для решения профессиональных задач.
ОПК-6Способен разрабатывать компоненты программно-аппаратных комплексов обработки информации и автоматизированного проектирования;
ОПК-6.1 Знать: аппаратные средства и платформы инфраструктуры информационных технологий, виды, назначение, архитектуру, методы разработки и администрирования программно-аппаратных комплексов объекта профессиональной деятельности.
ОПК-6.2 Уметь: анализировать техническое задание, разрабатывать и оптимизировать программный код для решения задач обработки информации и автоматизированного проектирования.
ОПК-6.3 Владеть: методами составления технической документации по использованию и настройке компонентов программно-аппаратного комплекса
ПК-1Способен исследовать и разрабатывать архитектуры систем искусственного интеллекта для различных предметных областей на основе комплексов методов и инструментальных средств систем искусственного интеллекта
ПК-1.1 Исследует и разрабатывает архитектуры систем искусственного интеллекта для различных предметных областей.
ПК-1.2 Выбирает комплексы методов и инструментальных средств искусственного интеллекта для решения задач в зависимости от особенностей предметной области.
ПК-1.3 Разрабатывает единые стандарты в области безопасности (в том числе отказоустойчивости) и совместимости программного обеспечения, эталонных архитектур вычислительных систем и программного обеспечения, а также определяет критерии сопоставления программного обеспечения и критерии эталонных открытых тестовых сред (условий) в целях определения качества и эффективности программного обеспечения технологий и систем искусственного интеллекта.
ПК-2Способен выбирать, разрабатывать и проводить экспериментальную проверку работоспособности программных компонентов систем, искусственного интеллекта по обеспечению требуемых критериев эффективности и качества функционирования
ПК-2.1 Выбирает и разрабатывает программные компоненты систем, искусственного интеллекта.
ПК-2.2 Проводит экспериментальную проверку работоспособности систем искусственного интеллекта.
ПК-3Способен разрабатывать и применять методы и алгоритмы машинного обучения для решения задач
ПК-3.1 Ставит задачи по разработке или совершенствованию методов и алгоритмов для решения комплекса задач предметной области.
ПК-3.2 Руководит исследовательской группой по разработке или совершенствованию методов и алгоритмов для решения комплекса задач предметной области.
ПК-3.3 Разрабатывает унифицированные и обновляемые методологии описания, сбора иразметки данных, а также механизмы контроля за соблюдением указанных методологий.
ПК-8Способен разрабатывать и модернизировать программное и аппаратное обеспечение технологий и систем искусственного интеллекта с учетом требований информационной безопасности в различных предметных областях
ПК-8.1 Разрабатывает программное и аппаратное обеспечение технологий и систем искусственного интеллекта для решения профессиональных задач с учетом требований информационной безопасности в различных предметных областях.
ПК-8.2 Модернизирует программное и аппаратное обеспечение технологий и систем искусственного интеллекта для решения профессиональных задач с учетом требований информационной безопасности в различных предметных областях.
В результате освоения дисциплины обучающийся должен
3.1.Знать:
3.1.1.• методы проектирования и разработки программного продукта на основе современной технологии программирования;
• методологии и технологии, инструментальные средства эксплуатации и сопровождения программных систем и сервисов.
3.2.Уметь:
3.2.1.• проектировать, разрабатывать, тестировать программные продукты;
• поддерживать работоспособность программных систем и технологий в заданных функциональных характеристиках и соответствии критериям качества.
3.3.Иметь навыки и (или) опыт деятельности (владеть):
3.3.1.• навыками визуального программирования;
• навыками разработки программных комплексов для решения прикладных задач;
• навыками оценки сложности алгоритмов и программ.

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

Код занятия Наименование разделов и тем Вид занятия Семестр Часов Компетенции Литература
Раздел 1. Введение в программную инженерию
1.1. Отличие программы от программного продукта. Software Engineering Body of Knowledge. Тестирование программного обеспечения. Командная разработка. Архитектура программного обеспечения. Управление требования к программному обеспечению. DevOps. MLOps. Лекции 1 2 ПК-8.1, ПК-8.2, ОПК-10.1, ОПК-10.2, ПК-2.1, ПК-2.2, ПК-1.1, ПК-1.2, ПК-1.3, ОПК-6.1, ОПК-6.2, ОПК-6.3, ОПК-5.1, ОПК-5.2, ОПК-5.3, ОПК-2.1, ОПК-2.2, ОПК-2.3, ПК-3.1, ПК-3.2, ПК-3.3 Л1.1, Л2.1, Л2.2
Раздел 2. Жизненный цикл программного продукта
2.1. Жизненный цикл программного продукта. Жизненный цикл приложений машинного обучения. Разработка продуктов с учетом жизненного цикла. Лекции 1 4 ПК-8.1, ПК-8.2, ОПК-10.1, ОПК-10.2, ПК-2.1, ПК-2.2, ПК-1.1, ПК-1.2, ПК-1.3, ОПК-6.1, ОПК-6.2, ОПК-6.3, ОПК-5.1, ОПК-5.2, ОПК-5.3, ОПК-2.1, ОПК-2.2, ОПК-2.3, ПК-3.1, ПК-3.2, ПК-3.3 Л1.1, Л2.1, Л2.2
2.2. Жизненный цикл разработки программного обеспечения. Особенности жизненного цикла приложений машинного обучения. Практические 1 2 ПК-8.1, ПК-8.2, ОПК-10.1, ОПК-10.2, ПК-2.1, ПК-2.2, ПК-1.1, ПК-1.2, ПК-1.3, ОПК-6.1, ОПК-6.2, ОПК-6.3, ОПК-5.1, ОПК-5.2, ОПК-5.3, ОПК-2.1, ОПК-2.2, ОПК-2.3, ПК-3.1, ПК-3.2, ПК-3.3 Л1.1, Л2.1, Л2.2
2.3. Разработка продуктов с учетом жизненного цикла. Практические 1 2 ПК-8.1, ПК-8.2, ОПК-10.1, ОПК-10.2, ПК-2.1, ПК-2.2, ПК-1.1, ПК-1.2, ПК-1.3, ОПК-6.1, ОПК-6.2, ОПК-6.3, ОПК-5.1, ОПК-5.2, ОПК-5.3, ОПК-2.1, ОПК-2.2, ОПК-2.3, ПК-3.1, ПК-3.2, ПК-3.3 Л1.1, Л2.1, Л2.2
Раздел 3. Основы командной разработки
3.1. Инструменты командной разработки. Система контроля версий Git. Сервис GitHub. Основы работы с Git в командной строке. Лекции 1 2 ПК-8.1, ПК-8.2, ОПК-10.1, ОПК-10.2, ПК-2.1, ПК-2.2, ПК-1.1, ПК-1.2, ПК-1.3, ОПК-6.1, ОПК-6.2, ОПК-6.3, ОПК-5.1, ОПК-5.2, ОПК-5.3, ОПК-2.1, ОПК-2.2, ОПК-2.3, ПК-3.1, ПК-3.2, ПК-3.3 Л1.1, Л2.1, Л2.2
3.2. Командная разработка. Инструменты командной разработки: git. Практические 1 2 ПК-8.1, ПК-8.2, ОПК-10.1, ОПК-10.2, ПК-2.1, ПК-2.2, ПК-1.1, ПК-1.2, ПК-1.3, ОПК-6.1, ОПК-6.2, ОПК-6.3, ОПК-5.1, ОПК-5.2, ОПК-5.3, ОПК-2.1, ОПК-2.2, ОПК-2.3, ПК-3.1, ПК-3.2, ПК-3.3 Л1.1, Л2.1, Л2.2
Раздел 4. Тестирование программного обеспечения
4.1. Цели тестирования программного обеспечения. Виды тестирования. Модульное тестирование. Лекции 1 2 ПК-8.1, ПК-8.2, ОПК-10.1, ОПК-10.2, ПК-2.1, ПК-2.2, ПК-1.1, ПК-1.2, ПК-1.3, ОПК-6.1, ОПК-6.2, ОПК-6.3, ОПК-5.1, ОПК-5.2, ОПК-5.3, ОПК-2.1, ОПК-2.2, ОПК-2.3, ПК-3.1, ПК-3.2, ПК-3.3 Л1.1, Л2.1, Л2.2
4.2. Тестирование программного обеспечения. Практические 1 4 ПК-8.1, ПК-8.2, ОПК-10.1, ОПК-10.2, ПК-2.1, ПК-2.2, ПК-1.1, ПК-1.2, ПК-1.3, ОПК-6.1, ОПК-6.2, ОПК-6.3, ОПК-5.1, ОПК-5.2, ОПК-5.3, ОПК-2.1, ОПК-2.2, ОПК-2.3, ПК-3.1, ПК-3.2, ПК-3.3 Л1.1, Л2.1, Л2.2
Раздел 5. Стиль кода
5.1. Почему стиль кода важен. Руководства по стилю кода. Лекции 1 2 ПК-8.1, ПК-8.2, ОПК-10.1, ОПК-10.2, ПК-2.1, ПК-2.2, ПК-1.1, ПК-1.2, ПК-1.3, ОПК-6.1, ОПК-6.2, ОПК-6.3, ОПК-5.1, ОПК-5.2, ОПК-5.3, ОПК-2.1, ОПК-2.2, ОПК-2.3, ПК-3.1, ПК-3.2, ПК-3.3 Л1.1, Л2.1, Л2.2
5.2. Стиль кода. Практические 1 2 ПК-8.1, ПК-8.2, ОПК-10.1, ОПК-10.2, ПК-2.1, ПК-2.2, ПК-1.1, ПК-1.2, ПК-1.3, ОПК-6.1, ОПК-6.2, ОПК-6.3, ОПК-5.1, ОПК-5.2, ОПК-5.3, ОПК-2.1, ОПК-2.2, ОПК-2.3, ПК-3.1, ПК-3.2, ПК-3.3 Л1.1, Л2.1, Л2.2
Раздел 6. Архитектура программного обеспечения
6.1. Подходы к разработке архитектуры ПО. Паттерны и антипаттерны проектирования. Архитектура приложений машинного обучения. Лекции 1 4 ПК-8.1, ПК-8.2, ОПК-10.1, ОПК-10.2, ПК-2.1, ПК-2.2, ПК-1.1, ПК-1.2, ПК-1.3, ОПК-6.1, ОПК-6.2, ОПК-6.3, ОПК-5.1, ОПК-5.2, ОПК-5.3, ОПК-2.1, ОПК-2.2, ОПК-2.3, ПК-3.1, ПК-3.2, ПК-3.3 Л1.1, Л2.1, Л2.2
6.2. Архитектура приложений машинного обучения. Практические 1 4 ПК-8.1, ПК-8.2, ОПК-10.1, ОПК-10.2, ПК-2.1, ПК-2.2, ПК-1.1, ПК-1.2, ПК-1.3, ОПК-6.1, ОПК-6.2, ОПК-6.3, ОПК-5.1, ОПК-5.2, ОПК-5.3, ОПК-2.1, ОПК-2.2, ОПК-2.3, ПК-3.1, ПК-3.2, ПК-3.3 Л1.1, Л2.1, Л2.2
6.3. Подготовка к аудиторным занятиям и мероприятиям текущего контроля: лекционным, практическим занятиям. Самостоятельное изучение материала. Подготовка к экзамену. Сам. работа 1 45 ПК-8.1, ПК-8.2, ОПК-10.1, ОПК-10.2, ПК-2.1, ПК-2.2, ПК-1.1, ПК-1.2, ПК-1.3, ОПК-6.1, ОПК-6.2, ОПК-6.3, ОПК-5.1, ОПК-5.2, ОПК-5.3, ОПК-2.1, ОПК-2.2, ОПК-2.3, ПК-3.1, ПК-3.2, ПК-3.3 Л1.1, Л2.1, Л2.2
Раздел 7. Основы Continuous Integration (CI)
7.1. Введение в Continuous Integration. Инструменты Continuous Integration. Continuous Integration на GitHub. Лекции 1 2 ПК-8.1, ПК-8.2, ОПК-10.1, ОПК-10.2, ПК-2.1, ПК-2.2, ПК-1.1, ПК-1.2, ПК-1.3, ОПК-6.1, ОПК-6.2, ОПК-6.3, ОПК-5.1, ОПК-5.2, ОПК-5.3, ОПК-2.1, ОПК-2.2, ОПК-2.3, ПК-3.1, ПК-3.2, ПК-3.3 Л1.1, Л2.1, Л2.2
7.2. Инструменты Continuous Integration. Практические 1 2 ПК-8.1, ПК-8.2, ОПК-10.1, ОПК-10.2, ПК-2.1, ПК-2.2, ПК-1.1, ПК-1.2, ПК-1.3, ОПК-6.1, ОПК-6.2, ОПК-6.3, ОПК-5.1, ОПК-5.2, ОПК-5.3, ОПК-2.1, ОПК-2.2, ОПК-2.3, ПК-3.1, ПК-3.2, ПК-3.3 Л1.1, Л2.1, Л2.2
Раздел 8. Разработка API
8.1. Организация работы приложения машинного обучения через API. Инструменты для разработки API: FastAPI, Flask. Организации доступа к модели машинного обучения через API. Лекции 2 4 ПК-8.1, ПК-8.2, ОПК-10.1, ОПК-10.2, ПК-2.1, ПК-2.2, ПК-1.1, ПК-1.2, ПК-1.3, ОПК-6.1, ОПК-6.2, ОПК-6.3, ОПК-5.1, ОПК-5.2, ОПК-5.3, ОПК-2.1, ОПК-2.2, ОПК-2.3, ПК-3.1, ПК-3.2, ПК-3.3 Л1.1, Л2.1, Л2.2
8.2. Разработка API. Организации доступа к модели машинного обучения через API. Практические 2 2 ПК-8.1, ПК-8.2, ОПК-10.1, ОПК-10.2, ПК-2.1, ПК-2.2, ПК-1.1, ПК-1.2, ПК-1.3, ОПК-6.1, ОПК-6.2, ОПК-6.3, ОПК-5.1, ОПК-5.2, ОПК-5.3, ОПК-2.1, ОПК-2.2, ОПК-2.3, ПК-3.1, ПК-3.2, ПК-3.3 Л1.1, Л2.1, Л2.2
Раздел 9. Переиспользование программного кода
9.1. Проектирование кода для повторного использования. Лекции 2 2 ПК-8.1, ПК-8.2, ОПК-10.1, ОПК-10.2, ПК-2.1, ПК-2.2, ПК-1.1, ПК-1.2, ПК-1.3, ОПК-6.1, ОПК-6.2, ОПК-6.3, ОПК-5.1, ОПК-5.2, ОПК-5.3, ОПК-2.1, ОПК-2.2, ОПК-2.3, ПК-3.1, ПК-3.2, ПК-3.3 Л1.1, Л2.1, Л2.2
9.2. Переиспользование программного кода. Модули, пакеты и библиотеки в Python. Практические 2 2 ПК-8.1, ПК-8.2, ОПК-10.1, ОПК-10.2, ПК-2.1, ПК-2.2, ПК-1.1, ПК-1.2, ПК-1.3, ОПК-6.1, ОПК-6.2, ОПК-6.3, ОПК-5.1, ОПК-5.2, ОПК-5.3, ОПК-2.1, ОПК-2.2, ОПК-2.3, ПК-3.1, ПК-3.2, ПК-3.3 Л1.1, Л2.1, Л2.2
Раздел 10. Продвинутый уровень командной разработки
10.1. Ветки (branches) в репозиториях программного кода. Предложения по изменению кода (pull request). Продвинутые операции с git (merge, отмена изменений, поиск нужных коммитов и т.п.). Рекомендации по документации и оформлению коммитов/pull request. Лекции 2 2 ПК-8.1, ПК-8.2, ОПК-10.1, ОПК-10.2, ПК-2.1, ПК-2.2, ПК-1.1, ПК-1.2, ПК-1.3, ОПК-6.1, ОПК-6.2, ОПК-6.3, ОПК-5.1, ОПК-5.2, ОПК-5.3, ОПК-2.1, ОПК-2.2, ОПК-2.3, ПК-3.1, ПК-3.2, ПК-3.3 Л1.1, Л2.1, Л2.2
10.2. Продвинутый уровень командной разработки. Branches, pull request. Практические 2 2 ПК-8.1, ПК-8.2, ОПК-10.1, ОПК-10.2, ПК-2.1, ПК-2.2, ПК-1.1, ПК-1.2, ПК-1.3, ОПК-6.1, ОПК-6.2, ОПК-6.3, ОПК-5.1, ОПК-5.2, ОПК-5.3, ОПК-2.1, ОПК-2.2, ОПК-2.3, ПК-3.1, ПК-3.2, ПК-3.3 Л1.1, Л2.1, Л2.2
Раздел 11. Качество кода
11.1. Понятие качества кода. Зачем нужен чистый код. Рефакторинг. Инструменты для рефакторинга. Лекции 2 2 ПК-8.1, ПК-8.2, ОПК-10.1, ОПК-10.2, ПК-2.1, ПК-2.2, ПК-1.1, ПК-1.2, ПК-1.3, ОПК-6.1, ОПК-6.2, ОПК-6.3, ОПК-5.1, ОПК-5.2, ОПК-5.3, ОПК-2.1, ОПК-2.2, ОПК-2.3, ПК-3.1, ПК-3.2, ПК-3.3 Л1.1, Л2.1, Л2.2
11.2. Качество кода. Чистый код. Практические 2 2 ПК-8.1, ПК-8.2, ОПК-10.1, ОПК-10.2, ПК-2.1, ПК-2.2, ПК-1.1, ПК-1.2, ПК-1.3, ОПК-6.1, ОПК-6.2, ОПК-6.3, ОПК-5.1, ОПК-5.2, ОПК-5.3, ОПК-2.1, ОПК-2.2, ОПК-2.3, ПК-3.1, ПК-3.2, ПК-3.3 Л1.1, Л2.1, Л2.2
11.3. Инструменты для рефакторинга. Практические 2 2 ПК-8.1, ПК-8.2, ОПК-10.1, ОПК-10.2, ПК-2.1, ПК-2.2, ПК-1.1, ПК-1.2, ПК-1.3, ОПК-6.1, ОПК-6.2, ОПК-6.3, ОПК-5.1, ОПК-5.2, ОПК-5.3, ОПК-2.1, ОПК-2.2, ОПК-2.3, ПК-3.1, ПК-3.2, ПК-3.3 Л1.1, Л2.1, Л2.2
Раздел 12. Рецензирование кода (Code Review)
12.1. Назначение Code Review. Лучшие практики Code Review. Code Review на GitHub. Человеческий фактор в Code Review. Лекции 2 2 ПК-8.1, ПК-8.2, ОПК-10.1, ОПК-10.2, ПК-2.1, ПК-2.2, ПК-1.1, ПК-1.2, ПК-1.3, ОПК-6.1, ОПК-6.2, ОПК-6.3, ОПК-5.1, ОПК-5.2, ОПК-5.3, ОПК-2.1, ОПК-2.2, ОПК-2.3, ПК-3.1, ПК-3.2, ПК-3.3 Л1.1, Л2.1, Л2.2
12.2. Рецензирование кода. Практические 2 2 ПК-8.1, ПК-8.2, ОПК-10.1, ОПК-10.2, ПК-2.1, ПК-2.2, ПК-1.1, ПК-1.2, ПК-1.3, ОПК-6.1, ОПК-6.2, ОПК-6.3, ОПК-5.1, ОПК-5.2, ОПК-5.3, ОПК-2.1, ОПК-2.2, ОПК-2.3, ПК-3.1, ПК-3.2, ПК-3.3 Л1.1, Л2.1, Л2.2
Раздел 13. Тестирование систем машинного обучения
13.1. Тестирование кода. Тестирование данных. Инструменты для тестирования данных. Лекции 2 2 ПК-8.1, ПК-8.2, ОПК-10.1, ОПК-10.2, ПК-2.1, ПК-2.2, ПК-1.1, ПК-1.2, ПК-1.3, ОПК-6.1, ОПК-6.2, ОПК-6.3, ОПК-5.1, ОПК-5.2, ОПК-5.3, ОПК-2.1, ОПК-2.2, ОПК-2.3, ПК-3.1, ПК-3.2, ПК-3.3 Л1.1, Л2.1, Л2.2
13.2. Тестирование систем машинного обучения. Практические 2 2 ПК-8.1, ПК-8.2, ОПК-10.1, ОПК-10.2, ПК-2.1, ПК-2.2, ПК-1.1, ПК-1.2, ПК-1.3, ОПК-6.1, ОПК-6.2, ОПК-6.3, ОПК-5.1, ОПК-5.2, ОПК-5.3, ОПК-2.1, ОПК-2.2, ОПК-2.3, ПК-3.1, ПК-3.2, ПК-3.3 Л1.1, Л2.1, Л2.2
Раздел 14. Разработка систем машинного обучения
14.1. Версионирование данных, моделей и кода. Инструменты для командной разработки приложений машинного обучения. Лекции 2 2 ПК-8.1, ПК-8.2, ОПК-10.1, ОПК-10.2, ПК-2.1, ПК-2.2, ПК-1.1, ПК-1.2, ПК-1.3, ОПК-6.1, ОПК-6.2, ОПК-6.3, ОПК-5.1, ОПК-5.2, ОПК-5.3, ОПК-2.1, ОПК-2.2, ОПК-2.3, ПК-3.1, ПК-3.2, ПК-3.3 Л1.1, Л2.1, Л2.2
14.2. Разработка систем машинного обучения. Практические 2 2 ПК-8.1, ПК-8.2, ОПК-10.1, ОПК-10.2, ПК-2.1, ПК-2.2, ПК-1.1, ПК-1.2, ПК-1.3, ОПК-6.1, ОПК-6.2, ОПК-6.3, ОПК-5.1, ОПК-5.2, ОПК-5.3, ОПК-2.1, ОПК-2.2, ОПК-2.3, ПК-3.1, ПК-3.2, ПК-3.3 Л1.1, Л2.1, Л2.2
Раздел 15. Создание пайплайнов приложений машинного обучения
15.1. Сбор данных. Подготовка данных. Обучение модели. Развертывание модели. Необходимость автоматизации пайплайнов. Лекции 2 2 ПК-8.1, ПК-8.2, ОПК-10.1, ОПК-10.2, ПК-2.1, ПК-2.2, ПК-1.1, ПК-1.2, ПК-1.3, ОПК-6.1, ОПК-6.2, ОПК-6.3, ОПК-5.1, ОПК-5.2, ОПК-5.3, ОПК-2.1, ОПК-2.2, ОПК-2.3, ПК-3.1, ПК-3.2, ПК-3.3 Л1.1, Л2.1, Л2.2
15.2. Автоматизация приложений машинного обучения. Практические 2 2 ПК-8.1, ПК-8.2, ОПК-10.1, ОПК-10.2, ПК-2.1, ПК-2.2, ПК-1.1, ПК-1.2, ПК-1.3, ОПК-6.1, ОПК-6.2, ОПК-6.3, ОПК-5.1, ОПК-5.2, ОПК-5.3, ОПК-2.1, ОПК-2.2, ОПК-2.3, ПК-3.1, ПК-3.2, ПК-3.3 Л1.1, Л2.1, Л2.2
15.3. Подготовка к аудиторным занятиям и мероприятиям текущего контроля: лекционным, практическим занятиям. Самостоятельное изучение материала. Подготовка к экзамену. Сам. работа 2 45 ПК-8.1, ПК-8.2, ОПК-10.1, ОПК-10.2, ПК-2.1, ПК-2.2, ПК-1.1, ПК-1.2, ПК-1.3, ОПК-6.1, ОПК-6.2, ОПК-6.3, ОПК-5.1, ОПК-5.2, ОПК-5.3, ОПК-2.1, ОПК-2.2, ОПК-2.3, ПК-3.1, ПК-3.2, ПК-3.3 Л1.1, Л2.1, Л2.2

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

5.1. Контрольные вопросы и задания для проведения текущего контроля и промежуточной аттестации по итогам освоения дисциплины
Оценочные материалы для текущего контроля по разделам и темам дисциплины в полном объеме размещены в онлайн-курсе на образовательном портале «Цифровой университет АлтГУ» - https://portal.edu.asu.ru/course/view.php?id=10539
Примеры заданий:
Вопрос 1. Чем программный продукт отличается от программы
а. Программный продукт может использовать только его разработчик.
б. Программный продукт протестирован, документирован, может работать на разных платформах с данными разных типов.
в. Программный продукт использует согласованные с другими программами типы данных и протоколы.
г. Разработка программного продукта в три раза дешевле, чем разработка программы.
Ответ: б
Вопрос 2. Во сколько раз затраты на разработку системного программного продукта превышают затраты на разработку программы
а. Минимум в 3 раза.
б. Минимум в ⅙ раза.
в. Минимум в 9 раз.
г. Более чем в ⅚ раза.
Ответ: в
Вопрос 3. Что изучает программная инженерия
а. Применения инженерных методов для создания сложных программных систем.
б. Создание приложений искусственного интеллекта с помощью системного подхода.
в. Математические основы сложности алгоритмов программного обеспечения.
г. Алгоритмы машинного обучения.
Ответ: а
Вопрос 4. Какие шаги включает жизненный цикл разработки приложений машинного обучения?
а. Проектирование, разработка, тестирование, развертывание.
б. Постановка задачи, подготовка данных, обучение модели, развертывание модели.
в. Сбор данных, очистка данных, обучение модели, оценка качества модели.
г. Проектирование, разработка, сопровождение, вывод из эксплуатации.
Ответ: б
Вопрос 5. Что такое сдвиг данных
а. Запись данных в неправильные столбцы таблицы.
б. Переиспользование данных при обучении и тестировании модели.
в. Отличие данных, которые поступают от пользователей от данных, на которых обучалась модель.
г. Подготовка данных для модели машинного обучения нового типа.
Ответ: в
Вопрос 6. Для какой цели используется мониторинг качества работы модели на данных пользователей.
а. Чтобы обнаружить выбросы в данных и заблокировать их.
б. Чтобы подобрать алгоритмы правильной подготовки данных для модели.
в. Чтобы обнаружить повышение качества работы модели в связи с поступлением новых данных от пользователей.
г. Чтобы обнаружить снижение качества работы модели из-за сдвига данных.
Ответ: г
Вопрос 7. Какой тип систем контроля версий сейчас используется чаще всего
а. Локальные
б. Распределенные
в. Централизованные
г. Системные
Ответ: б
Вопрос 8. Какая команда git используется для клонирования удаленного репозитория на локальный компьютер?
а. git checkout
б. git copy
в. git clone
г. git download
Ответ: в
Вопрос 9. Для чего используется ключ SSH на GitHub?
а. Для проверки прав доступа пользователя к Web порталу GitHub.
б. Для проверки прав доступа пользователя при обновлении репозитория GitHub с локального компьютера командой git push.
в. GitHub не использует ключи SSH.
г. Для организации доступа без ввода пароля к виртуальной машине Linux в GitHub.
Ответ: б
Вопрос 10. Какая команда git используется для получения изменений с удаленного репозитория на локальный компьютер?
а. git pull
б. git push
в. git clone
г. git sync
Ответ: а
Вопрос 11. Какой протокол используется для взаимодействия между приложениями по API?
а. DNS
б. HTTP
в. SMTP
г. POP3
Ответ: б
Вопрос 12. Для чего нужен статус выполнения запроса HTTP?
а. Чтобы передавать данные в теле ответа на запрос
б. Чтобы обнаружить ошибку при выполнении запроса и причину этой ошибки
в. Чтобы скрыть ошибку выполнения запроса от клиента
г. Статус HTTP на практике не используется, его можно игнорировать
Ответ: б
Вопрос 13. Какие компоненты входят в трехуровневую архитектуру?
а. Клиент
б. Труба
в. Сервер баз данных
г. Фильтр
д. Сервер приложений
Ответ: а, в, д
Вопрос 14. Какая архитектура сейчас наиболее популярна?
а. Клиент-серверная
б. Уровневая
в. Микросервисная
г. Монолитная
Ответ: в
Вопрос 15. Что такое API?
а. Интерфейс пользователя для Web-сервера
б. Язык для работы с данными в базе
в. Описание способов, с помощью который микросервис может быть использован другими приложениями
г. Язык для работы с социальными сетями, в том числе Вконтакте.
Ответ: в
Критерии оценивания: Каждое задание оценивается 1 баллом. Оценивание КИМ в целом: «отлично» – верно выполнено 85-100% заданий; «хорошо» – верно выполнено 70-84% заданий; «удовлетворительно» – верно выполнено 51-69% заданий; «неудовлетворительно» – верно выполнено 50% или менее 50% заданий.
5.2. Темы письменных работ для проведения текущего контроля (эссе, рефераты, курсовые работы и др.)
Не предусмотрено.
5.3. Фонд оценочных средств для проведения промежуточной аттестации
Промежуточная аттестация заключается в проведении в конце каждого семестра экзамена по всему изученному за семестр материала. Экзамен проводится в устной форме по билетам, в билет входит 2 вопроса.
Перечень вопросов для промежуточной аттестации для 1 семестра:
1. Область знаний программной инженерии. Software Engineering Body of Knowledge.
2. Жизненный цикл разработки программного обеспечения.
3. Особенности жизненного цикла приложений искусственного интеллекта.
4. Командная разработка программного обеспечения.
5. Инструменты для командной разработки git.
6. Виды тестирования программного обеспечения.
7. Инструменты модульного тестирования в Python.
8. Стиль кода. Руководство по стилю кода в Python.
9. Инструменты для работы со стилем кода в Python: форматтеры, линтеры.
10. Continuous Integration. Инструменты Continuous Integration.
11. Архитектура программного обеспечения.
12. Шаблоны архитектуры для приложений искусственного интеллекта.
13. Организация работы приложения машинного обучения через API.
14. Инструменты для разработки API.
Перечень вопросов для промежуточной аттестации для 2 семестра:
1. Переиспользование программного кода.
2. Модули и пакеты в Python.
3. Создание библиотек в Python.
4. Качество кода. Рефакторинг.
5. Инструменты рефакторинга.
6. Рецензирование кода (Code Review). Инструменты рецензирования кода.
7. Особенности тестирование систем машинного обучения.
8. Тестирование систем машинного обучения: тестирование данных.
9. Тестирование систем машинного обучения: тестирование кода.
10. Версионирование данных, моделей и кода систем машинного обучения.
11. Журналы экспериментов в процессе обучения моделей.
12. Инструменты для командной разработки приложений машинного обучения.
13. Пайплайны машинного обучения..
Критерии оценивания:
«Отлично»: студентом дан полный, в логической последовательности развернутый ответ на поставленные вопросы, где он продемонстрировал знания предмета в полном объеме учебной программы, достаточно глубоко осмысливает дисциплину, самостоятельно, и исчерпывающе отвечает на дополнительные вопросы, приводит собственные примеры по проблематике поставленного вопроса, решил предложенные практические задания без ошибок.
«Хорошо»: студентом дан развернутый ответ на поставленный вопрос, где студент демонстрирует знания, приобретенные на лекционных и семинарских занятиях, а также полученные посредством изучения обязательных учебных материалов по курсу, дает аргументированные ответы, приводит примеры, в ответе присутствует свободное владение монологической речью, логичность и последовательность ответа. Однако допускаются неточности в ответе. Решил предложенные практические задания с небольшими неточностями.
«Удовлетворительно»: студентом дан ответ, свидетельствующий в основном о знании процессов изучаемой дисциплины, отличающийся недостаточной глубиной и полнотой раскрытия темы, знанием основных вопросов теории, слабо сформированными навыками анализа явлений, процессов, недостаточным умением давать аргументированные ответы и приводить примеры, недостаточно свободным владением монологической речью, логичностью и последовательностью ответа. Допускается несколько ошибок в содержании ответа и решении практических заданий.
«Неудовлетворительно»: студентом дан ответ, который содержит ряд серьезных неточностей, обнаруживающий незнание процессов изучаемой предметной области, отличающийся неглубоким раскрытием темы, незнанием основных вопросов теории, неумением давать аргументированные ответы. Выводы поверхностны. Решение практических заданий не выполнено. Студент не способен ответить на вопросы даже при дополнительных наводящих вопросах преподавателя.
Приложения

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

6.1. Рекомендуемая литература
6.1.1. Основная литература
Авторы Заглавие Издательство, год Эл. адрес
Л1.1 Лаврищева Е.М. Программная инженерия и технологии программирования сложных систем: Учебник Юрайт, 2018 // ЭБС "Юрайт" www.biblio-online.ru
6.1.2. Дополнительная литература
Авторы Заглавие Издательство, год Эл. адрес
Л2.1 Черткова Е.А. Программная инженерия. Визуальное моделирование программных систем : учебник для среднего профессионального образования М.:Издательство Юрайт, 2018 urait.ru
Л2.2 Лаврищева Е. М. ПРОГРАММНАЯ ИНЖЕНЕРИЯ. ПАРАДИГМЫ, ТЕХНОЛОГИИ И CASE-СРЕДСТВА 2-е изд. Учебник для вузов: М.:Издательство Юрайт, 2018 biblio-online.ru
6.2. Перечень ресурсов информационно-телекоммуникационной сети "Интернет"
Название Эл. адрес
Э1 Онлайн-курс «Программная инженерия» на образовательном портале «Цифровой университет АлтГУ» portal.edu.asu.ru
6.3. Перечень программного обеспечения
1. Microsoft Office 2010 (Office 2010 Professional, № 4065231 от 08.12.2010), (бессрочно);
2. Microsoft Windows 7 (Windows 7 Professional, № 61834699 от 22.04.2013), (бессрочно);
3. Chrome (http://www.chromium.org/chromium-os/licenses ), (бессрочно);
4. 7-Zip (http://www.7-zip.org/license.txt ), (бессрочно);
5. AcrobatReader (http://wwwimages.adobe.com/content/dam/Adobe/en/legal/servicetou/Acrobat_com_Additional_TOU-en_US-20140618_1200.pdf), (бессрочно);
6. ASTRA LINUX SPECIAL EDITION (https://astralinux.ru/products/astra-linux-special-edition/), (бессрочно);
7. LibreOffice (https://ru.libreoffice.org/), (бессрочно);
8. Веб-браузер Chromium (https://www.chromium.org/Home/), (бессрочно);
9. Антивирус Касперский (https://www.kaspersky.ru/), (до 23 июня 2024);
10. Архиватор Ark (https://apps.kde.org/ark/), (бессрочно);
11. Okular (https://okular.kde.org/ru/download/), (бессрочно);
12. Редактор изображений Gimp (https://www.gimp.org/), (бессрочно)
6.4. Перечень информационных справочных систем
Информационная справочная система:
СПС КонсультантПлюс (инсталлированный ресурс АлтГУ или http://www.consultant.ru/).
Профессиональные базы данных:
1. Электронная база данных «Scopus» (http://www.scopus.com);
2. Электронная библиотечная система Алтайского государственного университета (http://elibrary.asu.ru/);
3. Научная электронная библиотека elibrary (http://elibrary.ru).

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

Аудитория Назначение Оборудование
110М лаборатория информационных технологий - компьютерный класс – учебная аудитория для проведения занятий семинарского типа (лабораторных и(или) практических); групповых и индивидуальных консультаций, текущего контроля и промежуточной аттестации Учебная мебель на 14 посадочных мест; рабочее место преподавателя; доска магнитно-маркерная 1 шт.; компьютеры: марка NAIO Corp Z520 - 14 ед.
106Л помещение для хранения и профилактического обслуживания учебного оборудования Стеллажи – 3 шт. осциллограф, паяльная станция, источник тока, переносные ноутбуки
109М лаборатория информационных технологий - компьютерный класс – учебная аудитория для проведения занятий семинарского типа (лабораторных и(или) практических); групповых и индивидуальных консультаций, текущего контроля и промежуточной аттестации Учебная мебель на 13 посадочных мест; рабочее место преподавателя; доска магнитно-маркерная 1 шт.; компьютеры: марка NAIO Corp Z520 - 13 ед.
107Л лаборатория информационных технологий - компьютерный класс - учебная аудитория для проведения занятий семинарского типа (лабораторных и(или) практических); проведения групповых и индивидуальных консультаций, текущего контроля и промежуточной аттестации Учебная мебель на 18 посадочных мест; компьютеры: марка HP, модель ProOne 400 - 18 единиц; проектор: марка SMART, модель UF70 - 1 единица; интерактивная доска: марка SMART Board модель SMB680 - 1 единица
Учебная аудитория для проведения занятий лекционного типа, занятий семинарского типа (лабораторных и(или) практических), групповых и индивидуальных консультаций, текущего контроля и промежуточной аттестации, курсового проектирования (выполнения курсовых работ), проведения практик Стандартное оборудование (учебная мебель для обучающихся, рабочее место преподавателя, доска, мультимедийное оборудование стационарное или переносное)
205Л лаборатория информационных технологий - компьютерный класс - учебная аудитория для проведения занятий семинарского типа (лабораторных и(или) практических); проведения групповых и индивидуальных консультаций, текущего контроля и промежуточной аттестации Учебная мебель на 9 посадочных мест; компьютеры: марка КламаС Офис, мониторы: марка ACER модель V223HQL - 8 единиц; доска интерактивная Triumph MULTI TOUCH 78 + проектор NEC UM280X в комплекте

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

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

Практическое занятие – это форма работы, где студенты максимально активно участвуют в обсуждении темы.
- Самостоятельную подготовку к занятию необходимо начинать с изучения понятийного аппарата темы. Рекомендуем использовать справочную литературу (словари, справочники, энциклопедии), целесообразно создать и вести свой словарь терминов.
- Важно запомнить, что любой источник должен нести достоверную информацию, особенно это относится к Internet-ресурсам. При использовании Internet - ресурсов в процессе подготовки не нужно их автоматически «скачивать», они должны быть проанализированы. Не нужно «скачивать» готовые рефераты, так как их однообразие преподаватель сразу выявляет, кроме того, они могут быть сомнительного качества.
- В процессе изучения темы анализируйте несколько источников. Используйте периодическую печать - специальные журналы.
- Полезным будет работа с электронными учебниками и учебными пособиями в Internet-библиотеках. Зарегистрируйтесь в них: университетская библиотека Онлайн (http://www.biblioclub.ru/) и электронно-библиотечная система «Лань» (http://e.lanbook.com/).
- В процессе подготовки и построения ответов при выступлении не просто пересказывайте текст учебника, но и выражайте свою личностно-профессиональную оценку прочитанного.
- Если к занятиям предлагаются задания практического характера, продумайте план их выполнения или решения при подготовке к семинару.
- При возникновении трудностей в процессе подготовки взаимодействуйте с преподавателем, консультируйтесь по самостоятельному изучению темы.

Самостоятельная работа.
- При изучении дисциплины не все вопросы рассматриваются на занятиях, часть вопросов рекомендуется преподавателем для самостоятельного изучения.
- Поиск ответов на вопросы и выполнение заданий для самостоятельной работы позволит вам расширить и углубить свои знания по курсу, применить теоретические знания в решении задач практического содержания, закрепить изученное ранее.
- Эти задания следует выполнять не «наскоком», а постепенно, планомерно, следуя порядку изучения тем курса.
- При возникновении вопросов обратитесь к преподавателю в день консультаций на кафедру.
- Выполнив их, проанализируйте качество их выполнения. Это поможет вам развивать умения самоконтроля и оценочные компетенции.

Итоговый контроль.
- Для подготовки к зачету/экзамену возьмите перечень примерных вопросов у преподавателя.
- В списке вопросов выделите те, которые были рассмотрены на занятиях. Обратитесь к своим записям, выделите существенное. Для более детального изучения изучите рекомендуемую литературу.
- Если в списке вопросов есть те, которые не рассматривались на занятии, изучите их самостоятельно.