Содержание дисциплины
Структуры данных. Основные понятия. Классификация. Предмет курса, его цели и задачи, содержание и связь с другими курсами. Обзор истории программирования, математического описания алгоритмов. Современное состояние в сфере создания алгоритмов обработки данных. Типы данных. Массивы. Записи. Файлы. Сложные структуры данных. Деревья. Списки. Графы.
Алгоритмы поиска в массиве. Исчерпывающий поиск элемента в массиве. Перебор с возвратом, метод ветвей и границ. Перебор с барьером. Быстрый поиск элемента в массиве. Бинарный и последовательный поиски в массивах. Поиск образа в строке. Поиск образа перебором. Поиск образа алгоритмом Кнута, Мориса, Пратта. Поиск образа алгоритмом Боуера и Мура. Использование деревьев в задачах поиска. Анализ сложности и эффективности алгоритмов поиска.
Алгоритмы сортировки данных в массивах. Внутренняя и внешняя сортировки. Алгоритм сортировки прямым включением. Алгоритм сортировки прямым выбором. Алгоритм сортировки прямым обменом. Сложные сортировки. Быстрая, пирамидальная, Шелл. Анализ сложности и эффективности алгоритмов сортировки.
Алгоритмы сортировки данных на внешних запоминающих устройствах. Алгоритмы сортировки в файлах. Простые сортировки слиянием. Алгоритм сортировки прямым слиянием. Алгоритм сортировки естественным слиянием. Сложные сортировки. Многофазные, многопроходные, другие. Анализ сложности и эффективности алгоритмов сортировки.
Алгоритмы обработки графов. Понятие графа. Виды графов. Основные атрибуты графа. Графы и их представление в ЭВМ. Алгоритмы поиска вершины в графе. Алгоритм поиска в ширину. Алгоритм поиска в глубину. Алгоритмы поиска во взвешенном графе. Алгоритмы нахождения кратчайшего пути. Алгоритмы нахождения максимального потока. Алгоритмы обработки графа. Нахождение циклов. Построение деревьев. Анализ сложности и эффективности алгоритмов обработки графов.
РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ
«Введение в программную инженерию»
для подготовки бакалавров
по направлению 231000 «Программная инженерия»
(аннотация) Цели освоения дисциплины
Дисциплина "Введение в программную инженерию" предназначена для студентов второго курса, обучающихся по направлению 231000 «Программная инженерия». В результате изучения курса студент должен иметь систематизированное представление о современном комплексе задач, методов и стандартов программной инженерии, создании и эволюции сложных, многоверсионных, тиражируемых программных продуктов высокого качества.
Студент должен получить представление о современных моделях, ключевых концепциях и технологиях разработки программных систем, освоить различные подходы к инженерному проектированию в конкретных предметных областях, получить навыки разработки программной документации. Общая трудоемкость дисциплины составляет 2 зачетные единицы, 72 часа. Содержание дисциплины
Причины появления, этапы становления, определение и роль программной инженерии. Понятия программного процесса, модели программного процесса и метода программной инженерии. CASE-средства.
Стандартизация и стандарты. Типы стандартов. Основные стандарты программной инженерии.
Жизненный цикл программного продукта. Проблемы спецификации жизненного цикла ПП. Модель жизненного цикла программного продукта. Каскадная и спиральная модели.
Управление программным проектом. Категории управления проектами. Треугольник ограничений проекта.
Управление командой проекта. Модели организации команд. Модели управления командой. Планирование и контроль. Задачи планирования.
Средства управления проектом. Обзор систем управления проектами.
Качество и управление качеством. Мера качества. Фазы отбраковки, управления качеством и прогнозирования качества.
ISO9000: система управления качеством. Фундаментальные требования. Структура документов. Версии стандарта.
ISO12207: процесс управления качеством ПО. Процесс обеспечения качества. Процесс верификации. Процесс аттестации. Процесс усовершенствования.
CMM: уровни зрелости процессов. Определение модели зрелости. Критерии оценки уровня зрелости.
ISO15504: аттестация, определение зрелости и усовершенствование процессов. Структура эталонной модели. Процесс аттестации. Компетентность аттестаторов.
Тестирование программного продукта. Управление требованиями, изменениями и конфигурацией. Управление рисками.
РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ
«Архитектура вычислительных систем»
для подготовки бакалавров
по направлению 231000 «Программная инженерия»
(аннотация) Целью дисциплины является: изучение основ построения и функционирования аппаратных уровней электронных вычислительных машин и систем.
Задачами дисциплины является: изучение элементов, узлов и устройств позволяющих реализовать функции обработки данных и управления в электронных вычислительных машинах, принципов построения запоминающих и внешних устройств и их интерфейсов.
Дисциплина «Архитектура вычислительных систем» входит в базовую часть профессионального цикла образовательной программы бакалавров, обучающихся по направлению 231000.62 «Программная инженерия».
Дисциплина базируется на курсе «дискретная математика», «электротехника, электроника и схемотехника», «прикладная теория цифровых автоматов».
В рамках дисциплины студенты изучают элементы, устройства, узлы, интерфейсы, принципы организации и функционирования современных ЭВМ и систем. Важное место в курсе занимают лабораторные работы студентов, в ходе которых исследуются принципы работы современных компонентов ЭВМ и систем.
При изложении теоретического материала значительное внимание уделяется современным устройствам и перспективным направлениям развития вычислительных ресурсов.
По окончании курса студент должен:
Знать: классификацию, назначение и принципы построения ЭВМ и систем, иметь представления о ресурсах, управлении и администрировании в вычислительных системах;
Уметь: анализировать информационные потоки в ЭВМ, моделировать узлы электронных вычислительных машин, создавать эффективные программы для работы микропроцессоров и микроконтроллеров;
Владеть : средствами анализа и моделирования вычислительных узлов и блоков. Общая трудоемкость дисциплины составляет 3 зачетных единицы, 108 часов. Содержание дисциплины
Классификация и основные характеристики ЭВМ. Арифметические и логические основы ЭВМ. Машинные коды: прямой, обратный, дополнительный, модифицированный.
Формы представления информации в ЭВМ.
Системы логических элементов ЭВМ и их характеристики. Семейства логических схем и системы элементов. Функциональная полнота систем логических элементов. Минимизация логических функций в базисе. Правила преобразования логических функций. Примеры синтеза функциональных узлов.
Элементы и узлы ЭВМ. Комбинационные узлы ЭВМ. Дешифраторы.
Мультиплексоры. Шифраторы. Арифметическо-логические устройства. Последовательностные логические узлы. Триггеры. Регистры. Счётчики
Узлы обработки данных. Архитектура базового микропроцессора. Принцип программного управления. Система команд базового микропроцессора. Программно- структурные модели команд (микроархитектура). Типы команд. Форматы команд. Способы адресации: непосредственная, прямая, регистровая, неявная, косвенная, косвенная регистровая.
Организация регистровой и оперативной памяти (ЗУ) в ЭВМ. Иерархия памяти. Статические и динамические ЗУ произвольной выборки (RAM). Типы динамической памяти. Методы организации доступа в ЗУ
(адресная, магазинная, стековая и ассоциативная организации доступа).
Организация кэш-памяти. Постоянные ЗУ (ПЗУ, ROM). Классификация и основные характеристики ПЗУ. Типы ПЗУ.
Линейные и нелинейные компоненты и устройства для обработки информации, представленной в аналоговом и гибридном виде. Цифро-аналоговые и аналого-цифровые преобразователи информации.
Эволюция архитектур микропроцессоров семейства Х86. Особенности системы команд микропроцессоров семейства Х86. Способы адресации данных и переходов. Адресации со смещением: относительная, базовая, комбинированная.
Страничная, сегментная и сегментно-страничная адресация памяти в современных микропроцессорах. Организация виртуальной памяти.
Периферийные устройства (ПУ) ЭВМ и систем. Классификация ПУ. Устройства ввода информации в ЭВМ. Устройства вывода данных из ЭВМ. Комбинированные устройства взаимодействия с ЭВМ. Внешние ЗУ. Классификация и основные характеристики. Накопители на магнитных носителях. Оптические и магнитооптические ЗУ. Принципы записи информации на оптические носители. Перспективные ВЗУ.
Интерфейсы ЭВМ и периферийных устройств.
Принципы построения и архитектура вычислительных систем (ВС). Классификация Флинна.
ЭВМ с непосредственными связями, с канальной организацией и магистральной структурой. Основные тенденции развития ВС. Конвейерные ВС. Векторные ВС. Матричные ВС. Векторно - матричные ВС. Транспьютеры и транспьютерные ВС. Распределенные ВС. Кластерные вычислительные системы. Вычислительные сети и сети хранения данных. Центры обработки данных.
Лабораторный практикум включает работы по освоению среды моделирования, разработке моделей обработки и обмена информации в ЭВМ, моделированию процессов ввода данных, их анализа и управления объектом.
РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ
«Операционные системы и сети»
для подготовки бакалавров
по направлению 231000 «Программная инженерия»
(аннотация) Цели освоения дисциплины
Дисциплина "Операционные системы" предназначена для студентов второго курса, обучающихся по направлению 231000 «Программная инженерия». В результате изучения курса студент должен знать управление процессорами (в т.ч. параллельными); взаимодействие процессов в распределенных системах; проблемы монопольного использования разделяемых ресурсов в ядре системы; управление памятью.
Студент должен уметь дезассемблировать исходные коды и анализировать их, работать с системными таблицами, с регистрами процессора в защищенном режиме; разрабатывать собственные обработчики прерываний защищенного режима, перепрограммировать контроллер прерываний, управлять работой устройств через порты ввода-вывода; реализовывать корректное взаимодействие параллельных процессов; разрабатывать мониторы для различных ОС. Общая трудоемкость дисциплины составляет 4 зачетных единицы, 144 часа. Содержание дисциплины
Основные понятия: архитектура фон Неймана, программное управление, операционная система, история развития ОС, классификация ОС, ресурсы ВС, иерархическая и виртуальная машина, микропрограммирование, процесс, поток, параллельные процессы и потоки – уровни наблюдения, события, система прерываний.
Структура дисциплины: управление процессорами, управление процессами, тупики, управление памятью, классификация ядер ОС, управление устройствами, файловые системы.
Управление процессами: процесс и его состояния, переключение контекста, типы потоков, однопоточная и многопоточная модели процесса, планирование и диспетчеризация, классификация алгоритмов планирования, примеры алгоритмов планирования , приоритеты : динамическое повышение приоритета.
Управление параллельными процессами: проблемы взаимодействия процессов, разделяемые ресурсы и их монопольное использование, взаимоисключение и синхронизация, способы реализации взаимоисключения: программный, аппаратный, с помощью семафоров, семафоры Дейкстры, виды семафоров, основные задачи: производство – потребление, читатели – писатели, мониторы, сообщения, проблемы передачи сообщений параллельными процессами, средства передачи сообщений – семафоры, сигналы, очереди сообщений, разделяемая память, файлы отображаемые в память.
Взаимодействие процессов в распределенных системах: три состояния блокировки при передаче сообщений, обмен сообщениями, вызов удаленных процедур, взаимодействие по схеме клиент-сервер; взаимоисключение и синхронизация в распределенных системах.
РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ
«Базы данных»
для подготовки бакалавров
по направлению 231000 «Программная инженерия»
(аннотация) Цели освоения дисциплины
Дисциплина "Базы данных" предназначена для студентов второго курса, обучающихся по направлению 231000 «Программная инженерия».
В результате изучения курса студент должен знать классификацию и характеристики моделей данных, лежащих в основе баз данных, теорию реляционных баз данных и методы проектирования реляционных систем с использованием нормализации, технологию программирования реляционных систем на стороне сервера и клиента, методы управления транзакциями в многопользовательских системах, методы и средства защиты данных на уровне сервера базы данных, базы данных и приложения базы данных, методы построения распределенных баз данных, основные положения XML-технологии и ее интеграцию с технологией баз данных.
Студент должен уметь разрабатывать и применять сценарии для создания и управления объектами базы данных, применять сценарии для управляемого кода в базах данных, создавать запросы на выборку и обновление, управлять транзакциями и блокировками для разработки приложений баз данных.
Студент должен получить навыки моделирования предметной области, уметь строить для нее ER-диаграмму и отображать ER-диаграмму в схему реляционной базы данных, проектировать реляционную базу данных для выбранной предметной области с использованием нормализации, разрабатывать программные объекты базы данных: хранимые процедуры, пользовательские функции, пользовательские типы данных, триггеры, разрабатывать все виды запросов на SQL. Общая трудоемкость дисциплины составляет 5 зачетных единиц, 180 часов. Содержание дисциплины
Основные понятия и определения. База данных, система управления базами данных. Основные функции и компоненты СУБД. Классификация СУБД: по модели данных (сетевые, иерархические, реляционные, объектно-реляционные, объектно-ориентированные).
Концепция модели данных. Классификация моделей данных, лежащих в основе баз данных.
Языки реляционных систем. Краткая характеристика языка SQL. Моделирование предметной области с помощью ER-модели. Отображение ER-диаграммы в схему реляционной базы данных. Нормализация структуры базы данных.
Типы связей между сущностями.
Реляционная модель. Реляционные объекты данных: домены и отношения. Свойства отношений. Разновидности переменных-отношений: базовые отношения и представления.
Целостность реляционных данных. Специфические и общие правила целостности.
Декларативные и процедурные средства поддержки ограничений целостности.
Ограничения типа, атрибута, переменной-отношения и базы данных. Потенциальные, первичные, альтернативные и внешние ключи.
РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ
«Конструирование программного обеспечения»
для подготовки бакалавров
по направлению 231000 «Программная инженерия»
(аннотация) Цели освоения дисциплины
Дисциплина "Конструирование программного обеспечения" предназначена для студентов четвертого курса, обучающихся по направлению «Программная инженерия».
Студенты, успешно прослушавшие данный курс, должны уметь применять множество различных шаблонов конструирования, сред разработки и архитектур в проектировании разнообразного программного обеспечения; конструировать и реализовывать программное обеспечение, используя несколько различных технологий промежуточного программного обеспечения; использовать адекватные метрики качества как средство оценки качества проектирования, оценивать соответствие результатов конструирования поставленным целям; модифицировать проекты, используя продуманные подходы к управлению изменениями; использовать методы обратной инженерии (reverse engineering) для восстановления дизайна программного обеспечения. Общая трудоемкость дисциплины составляет 3 зачетных единицы, 108 часов. |