Аннотация дисциплины «Философия» для подготовки бакалавров по направлению 231000. 62 «Программная инженерия» Цели освоения дисциплины
Вид материала | Документы |
- Программа дисциплины Экономика для направления 23100. 62 «Бизнес-информатика» подготовки, 335.25kb.
- Факультет Бизнес Информатика Отделение программной инженерии программа дисциплины, 257.29kb.
- Программа для поступающих на Направления подготовки бакалавров 231000 «Программная, 191.41kb.
- Программа вступительного экзамена вмагистратуру по направлению 231000 "программная, 164.29kb.
- Рабочая программа дисциплины «Web-дизайн» Направление подготовки, 154.39kb.
- Рабочая программа дисциплины «Нечеткая логика» Направление подготовки, 187.17kb.
- Рабочая программа дисциплины «Информатика и программирование» Направление подготовки, 265kb.
- Рабочая программа дисциплины «Дискретная математика» Направление подготовки, 125.26kb.
- Рабочая программа дисциплины «Методы вычислений» Направление подготовки, 210.2kb.
- Рабочая программа дисциплины «Базы данных» Направление подготовки, 236.64kb.
Цели освоения дисциплины
Дисциплина "Экономика программной инженерии" предназначена для студентов третьего курса, обучающихся по направлению 231000.62 «Программная инженерия». В результате изучения курса студент должен знать методы проведения стоимостной оценки разработки программного обеспечения, базирующиеся на теоретических знаниях об экономике программной инженерии, современных моделях трудоемкости разработки и методах оценивания.
Студент должен получить основные знания об экономике разработки программного обеспечения. Иметь представление о современных моделях, ключевых концепциях и методах оценки трудоемкости и стоимости разработки программных систем. Получить навыки самостоятельной оценки трудоемкости и стоимости разработки программных систем наиболее распространенными методами.
Общая трудоемкость дисциплины составляет 4 зачетные единицы, 144 часа.
Содержание дисциплины
Понятие экономики разработки программного обеспечения. Экономическая эффективность программного продукта. Факторы, влияющие на стоимость разработки программного обеспечения. Эволюция экономики программирования.
Понятие метрики при разработке программного обеспечения, классификация метрик. Метрики процесса, метрики проекта, метрики продукта. Измерение размера программного обеспечения. Проектный подход к оценке стоимости разработки программного обеспечения. Обзор основных методов оценивания стоимости разработки программного обеспечения.
Зрелость процессов разработки программного обеспечения в системе CMMI. Связь зрелости процессов разработки программного обеспечения с трудоемкостью и стоимостью разработки. Альтернативные способы оценки зрелости процессов разработки.
Методы проведения экспертных оценок. Практическое применение метода Wideband Delphi. Особенности управления проведением экспертных оценок.
Принципы алгоритмического моделирования трудоемкости разработки программных продуктов, теоретические и статистические модели. Метод Use-Case Points. Методы Function Points и Early Function Points. Метод COCOMO II. Обзор альтернативных параметрических моделей (ДеМарко, IFPUG, методика Госкомтруда).
Риски проведения оценки разработки программного обеспечения. Способы управления рисками при проведении оценки трудоемкости разработки. Типичные ошибки оценки. Индивидуальная настройка параметров модели оценки для повышения точности.
АННОТАЦИЯ ДИСЦИПЛИНЫ
«Безопасность жизнедеятельности»
для подготовки бакалавров
по направлению 231000.62 «Программная инженерия»
Цели освоения дисциплины
Дисциплина "Безопасность жизнедеятельности" предназначена для студентов
четвертого курса, обучающихся по направлению 231000.62 «Программная инженерия».
Тематика дисциплины связана с рассмотрением безопасного взаимодействия человека со средой обитания (производственной, бытовой, городской, природной) и вопросами защиты от негативных факторов чрезвычайных ситуаций. Изучением дисциплины достигается формирование у бакалавров представления о неразрывном единстве эффективной профессиональной деятельности с требованиями к безопасности и защищенности человека. Реализация этих требований гарантирует сохранение работоспособности и здоровья человека, готовит его к действиям в экстремальных условиях.
Общая трудоемкость дисциплины составляет 5 зачетных единиц, 180 часов.
Содержание дисциплины
Основы безопасности жизнедеятельности, основные понятия, термины и определения. Характерные системы "человек - среда обитания". Производственная, городская, бытовая, природная среда. Соответствие условий жизнедеятельности физиологическим, физическим и психическим возможностям человека - основа оптимизации параметров среды обитания. Современные методы обеспечения безопасности жизнедеятельности.
Физиология труда и комфортные условия жизнедеятельности. Физический и умственный труд. Методы оценки тяжести труда. Энергетические затраты человека при различных видах деятельности.
Обеспечение комфортных условий жизнедеятельности. Системы обеспечения параметров микроклимата: отопление, вентиляция, кондиционирование, их устройство и требования к ним. Контроль параметров микроклимата. Освещение. Требования к системам освещения.
Источники и уровни различных видов опасностей естественного, антропогенного и техногенного происхождения, их эволюция. Виды, источники и уровни негативных факторов производственной среды: запыленность и загазованность воздуха, вибрации, акустические колебания; электромагнитные поля и излучения; ионизирующие излучения; неправильная организация освещения, физические и нервно-психические перегрузки; умственное перенапряжение; эмоциональные перегрузки.
Причины техногенных аварий и катастроф. Взрывы, пожары и другие чрезвычайные негативные воздействия на человека и среду обитания. Первичные и вторичные негативные воздействия в чрезвычайных ситуациях, масштабы воздействия.
Идентификация травмирующих и вредных факторов, опасные зоны. Понятие и величина риска. Прогнозирование и моделирование условий возникновения опасных
ситуаций.
Чрезвычайные ситуации мирного и военного времени. Основные понятия и определения, классификация чрезвычайных ситуаций.
АННОТАЦИЯ ДИСЦИПЛИНЫ
«Объектно-ориентированное программирование»
для подготовки бакалавров
по направлению 231000.62 «Программная инженерия»
Цели освоения дисциплины
Дисциплина "Объектно-ориентированное программирование" предназначена для студентов второго курса, обучающихся по направлению 231000.62 «Программная инженерия». Целью изучения дисциплины является обучение студентов методике разработки программных средств с использованием технологии объектно-ориентированного программирования (ООП).
Общая трудоемкость дисциплины составляет 6 зачётных единиц, 216 часов.
Содержание дисциплины
- Объектно-ориентированное программирование.
- Основные понятия дисциплины. Основные положения объектного подхода к разработке программ, принципы объектного подхода, абстрагирование, устойчивость. Понятие объекта и класса. Инкапсуляция и спецификация правил доступности элементов класса. Конструкторы и деструкторы. Наследование. Иерархия классов. Одиночное и множественное наследование. Способы реализации множественного наследования, их достоинства и недостатки. Отношения между классами. Полиморфизм. Ранее и позднее связывание. Управление последовательностью действий в объектно-ориентированной программе. Объект и процесс. Инициализация и взаимодействие объектов и процессов. Сообщения. Реализация механизмов посылки сообщений. Примеры функционирования объектно-ориентированной программы.
- Введение в объектно-ориентированный анализ и проектирование. Системный анализ. Принципы объектно-ориентированного анализа и их обсуждение. Основные определения: система, домен, подсистема, элемент, связи, среда. Структура системы, декомпозиция, иерархия элементов. Процессы в системе и потоки информации. Исследование действий. Построение моделей доменов и подсистем, связей и взаимодействия подсистем, взаимодействия объектов, событий, процессов, потоков данных, действий. Описание классов и их взаимосвязей. Динамика поведения объектов, диаграммы перехода состояний. Диаграммы объектов. Видимость и синхронизация объектов, временные диаграммы. Диаграмма процессов. Обработка исключительных ситуаций.
- Классы. Способы реализации инкапсуляции. Определение класса. Личная и общая части определения класса. Функции-элементы класса и функции-друзья. Объекты класса. Создание и уничтожение объектов класса. Конструкторы и деструкторы. Интерфейс и реализация контейнерных классов для моделирования структур данных. Статические члены объектов класса. Вложенные и локальные классы. Примеры описания и использования классов.
- Наследование классов. Базовый и производный классы. Функции-элементы и функции-друзья. Правила доступа к элементам производного класса. Конструкторы и деструкторы. Иерархия классов. Одиночное и множественное наследование. Виртуальные базовые классы. Особенности доступа при множественном наследовании. Правила преобразования указателей. Виртуальные функции. Таблицы виртуальных функций. Распределение таблиц виртуальных функций в многофайловых программах. Чистые виртуальные функции и абстрактные базовые классы. Полиморфные контейнерные классы, итераторы и аппликаторы. Абстрактные и конкретные контейнерные классы. Виды классов: конкретный тип, абстрактный тип, узловой класс, интерфейсный класс и другие. Инициализация объектов. Отличия инициализации от присваивания. Инициализация баз и членов. Полный объект конечного производного класса.
- Обработка исключительных ситуаций. Анализ различных моделей обработки исключительных ситуаций. Стандартные средства контроля подтверждений. Проверка предусловий и постусловий, вычисления инвариантов. Контроль асинхронных событий. Реализация модели обработки синхронных ситуаций с завершением. Возбуждение ситуации, Описание блоков с контролем и реакций на ситуации. Система классов для описания исключительных ситуаций.
- Шаблоны проектирования.
- Введение в шаблоны проектирования. Шаблон проектирования. Шаблоны проектирования в схеме MVC. Описание шаблонов проектирования. Классификация шаблонов проектирования. Подходы к решению задач с помощью шаблонов проектирования. Выбор шаблона проектирования.
- Шаблоны для распределения обязанностей (GRASP). Обязанности и методы. Обязанности и диаграммы взаимодействий. Шаблон Information Expert. Шаблон Creator. Шаблон Low Coupling. Шаблон High Cohesion. Шаблон Controller.
- Порождающие шаблоны. Шаблон Abstract Factory. Шаблон Builder. Шаблон Factory Method. Шаблон Prototype.
- Шаблоны поведения. Шаблон Chain of Responsibility. Шаблон Command. Шаблон Interpreter. Шаблон Iterator. Шаблон Mediator. Шаблон Memento. Шаблон Observer. Шаблон State. Шаблон Strategy. Шаблон Template Method. Шаблон Visitor.
АННОТАЦИЯ ДИСЦИПЛИНЫ
«Системное программирование»
для подготовки бакалавров
по направлению 231000.62 «Программная инженерия»
Цели освоения дисциплины
Дисциплина «Системное программирование» имеет своей целью ознакомить студентов с фундаментальными концепциями и принципами построения современных операционных систем, обучить разрабатывать системное программное обеспечение с использованием современных систем разработки программного обеспечения.
Область профессиональной деятельности для применения дисциплины «Системное программирование» – создание и применение программного обеспечения автоматических и автоматизированных систем и средств контроля и управления.
Объект изучения дисциплины «Системное программирование» – современные операционные системы ЭВМ и другие виды системного программного обеспечения.
Общая трудоемкость дисциплины составляет 4 зачетные единицы, 144 часа.
Содержание дисциплины
Функции, состав и назначение операционной системы. Место ОС в структуре вычислительной системы. Классификация ОС.
Архитектура операционной системы. Элементы операционной системы. Структура современных операционных систем.
Управление процессами и потоками. Многозадачность. Мультипрограммирование. Планирование выполнения процессов. Диспетчеризация процессов реального времени. Потоки: планирование и диспетчеризация. Управления процессором. Понятия «процесс» и «нить», «поток». Системные часы и таймеры. Виртуальное адресное пространство процесса, его сегментация. Планировщики и диспетчеры. Операции, выполняемые над процессами и потоками. Тупики, условия возникновения, предупреждение и обходы. Невытесняющие и вытесняющие алгоритмы планирования. Алгоритмы, основанные на квантовании, приоритетах и смешанные.
Синхронизация процессов и потоков. Семафорная техника синхронизации. Межпроцессные коммуникации IPC: блокирующие переменные, критические секции, семафоры, события, ожидаемые таймеры, мьютексы. Сигнальный механизм. Средства обработки сигналов. Событийное программирование.
Управление памятью. Организация и управление памятью. Классификация запоминающих устройств. Типы адресов памяти. Алгоритмы распределения памяти. Виртуальная память. Виртуальная память и свопинг, механизмы их реализации. Страницы и сегменты. Стратегии подкачки страниц. Преобразование виртуальных адресов в физические.
Управление данными. Управление вводом-выводом. Многослойная организация программного обеспечения ввода-вывода. Драйверы устройств. Файловая система. Логическая организация файловой системы: цели и задачи, типы файлов. Иерархическая структура файловых систем. Атрибуты файлов. Монтирование. Логическая организация файла: неструктурированные файлы, файлы с записями фиксированной и переменной длины, индексированные файлы. Организация обмена данными между процессами с помощью механизма конвейеров. Физическая организация файловой системы: диски, разделы, секторы и кластеры.
Системные программы. Системы программирования. Формальные грамматики и языки. Классификация Хомского грамматик и языков. Трансляция. Этапы, фазы процесса трансляции. Проходы компилятора. Анализ программ: лексический, синтаксический, семантический. Синтез программ: генерация и оптимизация кода. Системные программы. Утилиты. Интерпретаторы. Ассемблеры. Макрогенераторы. Макроассемблеры. Загрузчики. Отладчики.
АННОТАЦИЯ ДИСЦИПЛИНЫ
«Основы построения трансляторов»
для подготовки бакалавров
по направлению 231000.62 «Программная инженерия»
Цели освоения дисциплины
Дисциплина «Основы построения трансляторов» предназначена для студентов четвертого курса, обучающихся по направлению 231000.62 «Программная инженерия». В результате изучения курса студент должен знать алгоритмы и методы построения лексических анализаторов; алгоритмы и методы построения возвратных и однопроходных синтаксических анализаторов; методы статического семантического анализа, основанные на атрибутных грамматиках и атрибутных трансляциях; алгоритмы и методы генерации промежуточного представления программы, основанные на атрибутных грамматиках и атрибутных трансляциях; алгоритмы и методы машинно-независимой оптимизации кода; методы генерации кода целевой машины; методы машинно-зависимой оптимизации кода.
Студент должен уметь разрабатывать лексические анализаторы; разрабатывать как однопроходные, так и однопроходные синтаксические анализаторы; применять методы обработки и нейтрализации синтаксических ошибок; применять методы статического семантического анализа для проверки типов и контекстно-зависимых условий; разрабатывать генераторы промежуточного представления программы, основанные на атрибутных грамматиках и атрибутных трансляциях; применять методы машинно-независимой оптимизации кода; разрабатывать генераторы кода целевой машины; применять методы машинно-зависимой оптимизации кода.
Общая трудоемкость дисциплины составляет 8 зачетных единиц, 288 часов.
Содержание дисциплины
Введение. Задача компиляции, требования к компиляторам. Основные фазы компиляции: построения абстрактного синтаксического дерева (front-end), машинно-независимая оптимизация, машинно-зависимая оптимизация, генерация объектного кода (back-end). Выявление ошибок в процессе компиляции и сообщения о них. Неформальный язык описания алгоритмов оптимизации (ICAN - Informal Compiler Algorithm Notation).
Внутренние представления компилируемой программы. Исходный, целевой (объектный) и промежуточные языки. Абстрактное синтаксическое дерево как промежуточное представление высокого уровня. Трехадресный код ("четверки") как промежуточные представления среднего и низкого уровней. Атрибуты. Граф потока управления. Граф потока данных. Граф зависимостей.
Построение абстрактного синтаксического дерева (AST). Синтаксически управляемый анализ исходной программы: лексический анализатор (сканер), синтаксический анализатор (парсер). Нисходящий (LL(1)) и восходящий (LR(1)) синтаксический анализ. Таблица символов: принципы ее организации и работы с ней. Анализ контекстных условий и вычисление атрибутов.
Поддержка времени выполнения. Организация памяти: использование регистров, организация стека. Организация работы с динамической памятью (кучей). Организация работы со статическими и глобальными объектами. Вызов процедур и возврат из них. Передача параметров.
Анализ потока управления. Построение графа потока управления для процедуры. Базовые блоки. Свойства графа потока управления: доминирование, алгоритмы обхода, остовое дерево, классификация дуг графа потока управления. Некоторые вспомогательные функции, определенные на графе потока управления. Выделение сильно связанных компонент. Интервалы и сводимость. Структурный анализ. Дерево управления.
Анализ потока данных. Определение связей по данным между базовыми блоками. Необходимые сведения из теории решеток: определение решетки, решеточные операции частичного порядка, функции на решетках, монотонность, неподвижные точки, функции потока. Представление программы в статической форме с однократным присваиванием значений (SSA). Построение UD- и DU-цепочек и сети. Уточнение результатов структурного анализа.
Анализ псевдонимов. Проблемы, связанные с обработкой элементов структур, элементов массивов и данных, доступных по указателям. Понятие псевдонима. Псевдонимы в языках программирования. Обнаружение и распространение псевдонимов.
Построение графа зависимостей. Определение основных видов зависимостей в программе. Построение графа зависимостей по данным для базового блока. Зависимости в циклах и проблемы анализа возможности распараллеливания циклов. Тест расстояний. Граф зависимостей процедуры. Зависимости между динамическими объектами. Срезы программы и их построение.
Машинно-независимая оптимизация. Обзор основных алгоритмов машинно-независимой оптимизации. Порядок применения оптимизирующих алгоритмов. Уровни оптимизации: локальная оптимизация (на уровне базовых блоков), глобальная оптимизация (внутри процедуры) и межпроцедурная оптимизация (в пределах доступной части программы). Оптимизация базовых блоков: вычисление константных выражений, замена операций на более простые, исключение избыточных вычислений, исключение мертвого кода, выбор оптимальной последовательности инструкций промежуточного языка. Простейшие методы глобальной оптимизации: распространение значений и копий и др. Исключение общих подвыражений. Оптимизация вызовов процедур и возвратов из них. Замена кода вызова процедуры на ее тело.
Анализ и оптимизация циклов. Вынесение инвариантных вычислений за цикл. Выявление индуктивных переменных. Исключение индуктивных переменных. Исключение избыточных проверок условий окончания цикла. Разворачивание циклов.
Построение промежуточного представления низкого уровня. Распределение памяти. Распределение регистров. Методы раскраски графов и их использование для оптимального распределения регистров. Другие подходы к проблеме распределения регистров. Планирование кода.
Машинно-зависимая оптимизация. Планирование кода. Конвейеризация. Планирование трасс. Оптимизация ветвей. Исключение недостижимого и мертвого кода. Инвертирование циклов. Повышение локальности данных.
Межпроцедурный анализ. Построение графа вызовов. Межпроцедурный анализ потока управления. Межпроцедурный анализ потока данных. Межпроцедурный анализ псевдонимов.
Генерация объектного кода. Синтаксически-управляемый генератор Грехема-Гленвиля. Технология -burg: поиск термов путем сличения с образцом. Метод переписывания термов. Генераторы генераторов кода.
Использование инструментальных средств. Обзор средств автоматизации разработки компиляторов.
АННОТАЦИЯ ДИСЦИПЛИНЫ
«Системы и технологии поддержки принятия решений»
для подготовки бакалавров
по направлению 231000.62 «Программная инженерия»
Целью дисциплины является ознакомление студентов с современными технологиями хранения и анализа данных, обучение практическим навыкам по проектированию и разработке систем поддержки принятия управленческих решений.
Задачами учебной дисциплины являются изучение современных методов организации хранения и обработки данных, теоретических основ оперативного анализа данных и интеллектуального анализа данных, принципов построения корпоративных информационных систем с функциями поддержки принятия управленческих решений. .
Изучение учебной дисциплины вносит вклад в формирование следующих компетенций: умение понять поставленную задачу; умение грамотно пользоваться языком предметной области; владение методами математического и алгоритмического моделирования при анализе задач бизнеса, финансовой и актуарной математики.
Дисциплина входит в вариативную часть профессионального цикла образовательной программы бакалавра. Студент должен иметь начальные сведения о технологиях разработки программного обеспечения, технологиях баз данных.
В результате изучения дисциплины студент должен
знать: общие вопросы построения корпоративных информационных систем с функциями поддержки принятия управленческих решений, основы современных технологий хранения и обработки данных - хранилищ данных, оперативного анализа, интеллектуального анализа данных.
уметь: грамотно пользоваться языком предметной области, самостоятельно математически корректно ставить информационные задачи, разработать модель хранилища данных, провести OLAP-анализ для актуальных задач бизнеса.
В программу дисциплины входят следующие тематические разделы:
общие вопросы построения корпоративных информационных систем с функциями поддержки принятия управленческих решений;
технология хранилищ данных;
технология OLAP-анализа;
технология Data Mining;
методы генерации и оценки управленческих решений.
Общая трудоемкость дисциплины составляет 4 зачетные единицы, 144 часа.
На лабораторном практикуме студенты самостоятельно изучают методические рекомендации к лабораторным работам, осваивают инструментальные программные средства моделирования информационных систем, разработки хранилищ данных, OLAP-приложений.