Наименование магистерской программы Методы анализа и синтеза проектных решений Направление подготовки

Вид материалаДокументы

Содержание


Тематический план курса
Методы оптимизации
Вычислительные системы»
Теория принятия решений
«Интеллектуальные системы»
Тематический план курса
Профессиональные компетенции
Основные разделы курса
Часть 2. Компьютерные технологии в науке
Часть 3. Компьютерные технологии в образовании
Аннотация учебной программы дисциплины
Основные разделы курса
Английский язык
Задачами дисциплины
Уровень «владеть»
Общекультурные компетенции
Тематический план курса
Основы логического программирования.
Дедуктивные базы данных.
Логика Хоара. Верификация последовательных программ.
...
Полное содержание
Подобный материал:
  1   2   3   4



МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

«Новосибирский национальный исследовательский государственный университет»

Факультет информационных технологий


УТВЕРЖДАЮ

_______________________

"_____"__________________20__ г.


Аннотации учебных дисциплин

Наименование магистерской программы

Методы анализа и синтеза проектных решений


Направление подготовки

230100 Информатика и вычислительная техника


Квалификация (степень) выпускника

Магистр


Новосибирск

2011


Аннотация учебной дисциплины

«Технология разработки программного обеспечения»


Целями дисциплины являются: ознакомление с современными языками программирования, их классификацией и областями их применения; освоение различных методов абстрагирования, обеспечения модульности и других аспектов проектирования программных систем; повышение профессиональной эрудиции.


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



Дисциплина входит в базовую часть профессионального цикла М2 образовательной магистерской программы «Технология разработки программных систем» направления подготовки магистров 230100 «ИНФОРМАТИКА И ВЫЧИСЛИТЕЛЬНАЯ ТЕХНИКА»


С другими частями образовательной программы соотносится следующим образом:

Требования к первоначальному уровню подготовки обучающихся для успешного освоения дисциплины:

Обучающийся должен знать:
  • методы императивного (структурного, объектно-ориентированного программирования);
  • методы объектно-ориентированного проектирования включая принципы и GOF-шаблоны;
  • математическое понятие функции, в том числе высшего порядка (функционал, оператор), основы λ-исчисления или комбинаторной логики.

Обучающийся должен уметь:
  • проводить объектно-ориентированную декомпозицию задачи в соответствии с заданными требованиями;
  • реализовать заданную спецификацию (архитектуру) программной системы на языках Java, С++;
  • оценивать качество спецификации (архитектуры) программной системы и ее кода.


Дисциплины, последующие по учебному плану:
  • Учебная и производственная практики
  • Итоговая государственная аттестация


Изучение дисциплины направлено на формирование следующих компетенций:
  • ОК-10 Способен осваивать новые методы и технологии, опираясь на знания фундаментальных основ становления информатики в ее историческом развитии;
  • ПК-11 Оптимально применять методы, инструменты функциональной декомпозиции для описания проектных решений и бизнес требований при разработке программных систем (частично: методы функциональной декомпозиции применительно к разработке программных систем);
  • ПК-12 Владеть методами и формализмами для идентификации и описания свойств языков и систем программирования (частично: владение методами идентификации свойств языков и систем программирования с целью выбора оптимальной технологической базы для решения поставленной задачи);
  • ПК 14 Владеть современными методологиями и технологиями разработки программных систем (динамическое, функциональное, аспектное программирование и пр.).



В результате освоения дисциплины обучающийся должен:

    Знать:
  • классификацию современных языков программирования по назначению, модели исполнения, парадигмам;
  • методы абстрагирования и обеспечения модульности, используемых в языках различных классов, преимущества и недостатки этих методов, а также их взаимную совместимость;
  • методы проектирования программных систем с применением различных парадигм.

    Уметь:
  • самостоятельно осваивать современные языки программирования различных классов;
  • оценивать возможности языков и систем программирования, и их применимость к решению поставленных задач;
  • комбинировать различные языки и системы программирования, а также методы проектирования с целью оптимального решения поставленных задач;
  • расширять существующие языки дополнительными механизмами абстрагирования.

    Владеть:
  • рядом современных функциональных, динамических и аспектно-ориентированных языков, а также соответствующими им методами проектирования.
^

Тематический план курса


Раздел 1. Современные динамические языки

1.1.Общая классификация языков по назначению и модели исполнения. Общие свойства динамических языков (динамическая типизация, модель трансляции и исполнения)

1.2. Язык Ruby: основные конструкции языка, коллекции. Функциональный стиль программирования в Ruby: блоки и замыкания. Итераторы.

1.3. Особенности объектной модели Ruby: унифицированность объектного представления, модули и примеси, инкапсуляция. Динамическое изменение классов, элементы Meta-Object Protocol (MOP) в Ruby. JRuby и взаимодействие с Java, Java Scripting API.

1.4. Регулярные выражения


Раздел 2. Современные функциональные языки

2.1. Классификация языков по парадигмам программирования. Функциональное программирование (ФП). Неподвижное состояние объекта как ключевое отличие ФП от ООП. Функции, как объекты первого класса. Чистые функции, функции высших порядков. Лексические контексты, анонимные функции, замыкания. Основные семейства функциональных языков. Историческая связь динамических и функциональных языков.

2.2. Общие характеристики семейства языков Lisp: единое представление кода и данных, S-выражения, модель трансляции и исполнения, REPL. Язык Clojure, как современный представитель семейства Lisp: основные структуры языка.

2.3. Функциональные возможности Clojure: коллекции, отложенные вычисления, бесконечные структуры данных. Абстрагирование данных с помощью функциональных примитивов (пары, числа Черча). Моделирование времени с помощью потоков. Преимущества и недостатки ФП в сравнении с ООП.

2.4. Императивные возможности Clojure. Software Transactional Memory. Многопоточность. Ссылки, атомы, агенты, виды транзакций. Взаимодействие с Java.


Раздел 3. Элементы метапрограммирования, аспектно-ориентированное программирование.

3.1. Управляемая кодогенерация. Макросы в Lisp (на примере Clojure). Модель исполнения макросов. Макросы, как способ расширения языка.

3.2. Понятие о проблемно-специфичных языках (DSL) и языках сценариев. Методы генерации DSL. Символьные вычисления.

3.3. Динамические объектные модели. CLOS: обобщенный динамический полиморфизм, обобщенные функции и мультиметоды, вспомогательные методы. Реализация элементов CLOS в Clojure. Интроспекция, введение в MOP.

3.4. Сквозная функциональность (cross-cutting concerns), проблема модульности. Традиционные методы обеспечения модульности в условиях сквозной функциональности. Контекстный полиморфизм. Механизм binding в Clojure, отличия от let.

Аспектно-ориентированное программирование (АОП). Понятие аспекта. Язык AspectJ, как аспектное расширение Java. Понятия pointcut и advise. Виды перехвата управления. Расширение существующих классов и интерфейсов. Использование интерфейсов Java, как абстрактных классов. Модель компиляции и исполнения AspectJ.

3.5 Применение АОП в проектирование. Преимущества и недостатки по сравнению с традиционными методами проектирования. Примеры задач, эффективно решаемых с помощью АОП.



Аннотация учебной программы дисциплины

"^ Методы оптимизации"

    Основной целью курса является ознакомление с базовыми математическими моделями и освоение численных методов решения классических экстремальных задач, а также знакомство с современными направлениями развития методов оптимизации. В целом материал курса ориентирован на умение правильно классифицировать конкретную прикладную задачу, выбирать наиболее подходящий метод решения и реализовывать его в виде алгоритма и программы.

Для достижения поставленной цели выделяются задачи курса:

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

Помочь им в изучении симплекс – метода, двойственного симплекс – метода, метода возможных направлений, метода Ньютона, градиентных методов, методов штрафов, метода отсечении Гомори, методов нулевого порядка, метода ветвей и границ, декомпозиции Бендерса, метода Келли.

Научить правильно классифицировать конкретную прикладную задачу, выбирать наиболее подходящий метод её решения и реализовывать его в виде алгоритма и программы.

Изучение данной дисциплины базируется на дисциплинах: «Математический анализ», "Алгебра и геометрия", «Математическая логика», «Дискретная математика».

Изучение дисциплины направлено на формирование следующих общекультурных и профессиональных компетенций:
  • ОК-1, ОК-2, ОК-4
  • ПК-1, ПК-5, ПК-6

В результате изучения дисциплины студент должен:

Знать:

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

- основы теории многогранных множеств;

- базовые понятия, основные определения теории экстремальных задач и численные методы решения;

- современнные подходы к решению задач линейного и выпуклого программирования

Уметь:

- правильно классифицировать прикладную задачу в терминах математического программирования;

- выбирать подходящий метод решения задачи и анализировать скорость его сходимости;

- профессионально работать с готовыми коммерческими программными продуктами для решения задач линейного и выпуклого программирования;

Владеть навыками:

- классическими методами решения задач математического программирования: методом Ньютона, градиентными методами, методом штрафов, симплекс-методом, методом ветвей и границ;

- методами синтеза алгоритмов решения новых классов задач.

Основные разделы курса:
  • Элементы алгоритмической теории экстремальных задач
  • Классификация задач математического программирования
  • Необходимые и достаточные условия оптимальности
  • Элементы лагранжевой теории двойственности
  • Линейное программирование. Численные методы
  • Выпуклое программирование. Численные методы
  • Нелинейное программирование. Численные методы
  • Целочисленное линейное программирование. Численные методы


На семинарских занятиях студенты приобретают навыки моделирования сложных технико – экономических проблем в виде экстремальных задач в среде современных пакетов типа GAMS и учатся разрабатывать алгоритмы решения задач средствами этих пакетов.


Аннотация учебной программы дисциплины

«^ Вычислительные системы»
    Основной целью курса является овладение современными технологиями моделирования, реализации и аттестации крупномасштабных распределённых вычислительные систем.

Для достижения цели выделяются следующие задачи курса:
  • представление формального подхода к разработке распределённых систем, основанного на моделировании сценариев обмена данными посредством частично упорядоченных множеств;
  • обзор основных аспектов современных крупномасштабных распределённых систем, принципов и примеров их реализации;
  • обучение основам программной реализации систем с привлечением технологий Grid.

Дисциплина входит в базовую часть профессионального цикла образовательной программы магистра. Изучение данной дисциплины базируется на следующих курсах: «ЭВМ и периферийные устройства», «Телекоммуникации и сети», «Операционные системы», «Алгебра и геометрия», «Математическая логика», «Дискретная математика»

Изучение дисциплины направлено на формирование следующих общекультурных и профессиональных компетенций: ОК-7, ПК-4.

В результате изучения дисциплины у студента формируются:
  • представления о формальных методах моделирования и верификации крупномасштабных распределённых систем;
  • знания ключевые принципы и основные технологии разработки крупномасштабных распределённых систем;
  • умения вырабатывать, верифицировать и реализовывать оптимальные проектные решения по созданию проблемно-ориентированных крупномасштабных распределённых систем.


Основные разделы курса:
  1. Постановка задач о глобальной интеграции информационных ресурсов
  2. Математические основы инженерии распределённых систем
  3. Анализ эффективности распределённых систем
  4. Интеграция данных
  5. Организация совместной работы ресурсов
  6. Интеграция ресурсов реального времени
  7. Агентные и автономные системы
  8. Пользовательский интерфейс распределённых систем
  9. Защита информации в распределённых системах
  10. Технологии Grid
  11. Проектирование Grid-систем
  12. Реализация Grid-систем
  13. Комплексирование крупномасштабных распределённых систем
  14. Технологический процесс разработки крупномасштабных распределённых систем

В течение семестра выполняются практические задания, заключающиеся в проектировании, реализации и развёртывании масштабируемой проблемно-ориентированной системы распределённых вычислений на базе технологий Grid. Выполнение указанных видов работ является обязательным для всех студентов. Результаты текущего контроля служат основанием для выставления оценок в ведомость контрольной недели на факультете.

Аннотация учебной программы дисциплины

"^ Теория принятия решений"

    Основной целью курса является ознакомление с базовыми математическими моделями и освоение алгоритмов решения дискретных экстремальных задач, а также знакомство с современными направлениями развития теории принятия решений. В целом материал курса ориентирован на умение правильно сформулировать оптимизационную задачу, классифицировать её, определить вычислительную сложность задачи и выбрать или разработать наиболее подходящий метод решения, реализовать его в виде алгоритма и программы.

Для достижения поставленной цели выделяются задачи курса:

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

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

Изучение данной дисциплины основывается на базовых знаниях студентов и дисциплины «Методы оптимизации».

Изучение дисциплины направлено на формирование следующих общекультурных и профессиональных компетенций:
  • ОК-1, ОК-2, ОК-4
  • ПК-1, ПК-5, ПК-6

В результате изучения дисциплины студент должен:

Знать

- элементы теории сложности для анализа NP-трудных задач;

- основы теории алгоритмов комбинаторной оптимизации и вычислительную сложность;

- базовые понятия и определения, математические модели классических задач исследования операций численные методы и подходы к их решению;

- современные подходы к решению актуальных задач в области теории принятия решений;

Уметь

- правильно формулировать прикладную задачу в виде математической модели;

- выбирать подходящий метод решения и реализовывать его в виде алгоритмов и программ;

- профессионально работать с готовыми коммерческими программными продуктами для решения дискретных оптимизационных задач (GAMS, CPLEX и др.);

Владеть

- общими численными методами решения задач дискретной оптимизации;

- теорией алгоритмов решения задач размещения, составления расписаний, календарного планирования, теорией игр, раскроя и упаковки, маршрутизации

Основные разделы курса:
  • Предмет и метод теории принятия решений. Математические модели. Экстремальные задачи. Системы поддержки принятия решений. Классификация задач математического программирования.
  • Метод динамического программирования.
  • Задачи о рюкзаке. Задачи раскроя и упаковки. Модели календарного планирования. Задачи маршрутизации. Задачи о покрытии. Игровые задачи размещения. Задачи двухуровневого программирования и равновесия Штаккельберга.
  • Приближенные алгоритмы с оценками. Аппроксимационные схемы. Эвристики: алгоритмы локального, алгоритм локального поиска с чередующимися окрестностями, генетический алгоритм, алгоритм имитации отжига, алгоритм муравьиных колоний.
  • Классификация задач теории расписаний. Задачи на одной машине. Алгоритм Лаулера. Перестановочный прием. Задачи на параллельных машинах.
  • Теория матричных игр. Чистые и смешанные стратегии. Теорема Фон-Неймана. Дилемма о заключенных.
  • Вычислительная сложность задач. Основные классы вычислительной сложности.
  • Теория матроидов. Пересечение матроидов.


Семинарские занятия включают практикум по приобретению навыков моделирования сложных производственно-экономических проблем в виде оптимизационных задач в среде современных пакетов типа GAMS и разработке алгоритмов решения средствами этих пакетов.


Аннотация учебной программы дисциплины