Аннотация учебной программы дисциплины «Интеллектуальные системы»
Вид материала | Документы |
- Аннотация программы учебной дисциплины «Интеллектуальные системы», 915.14kb.
- Аннотация учебной программы дисциплины «Интеллектуальные системы», 781.23kb.
- Аннотация учебной программы дисциплины «Интеллектуальные системы», 759.09kb.
- Аннотация учебной программы дисциплины "Интеллектуальные системы", 575.41kb.
- Аннотация учебной программы дисциплины "Интеллектуальные системы", 493.28kb.
- Рабочая программа учебной дисциплины (модуля) Интеллектуальные системы принятия проектных, 94.67kb.
- Аннотация программы учебной дисциплины наименование дисциплины, 52.96kb.
- Аннотация рабочей программы наименование дисциплины Интеллектуальные информационные, 101.78kb.
- Аннотация примерной программы учебной дисциплины Вычислительные системы, сети и телекоммуникации, 3553.81kb.
- Аннотация программы дисциплины учебного плана и программ учебной и производственных, 24.01kb.
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
«Новосибирский национальный исследовательский государственный университет»
Факультет информационных технологий
УТВЕРЖДАЮ
_______________________
"_____"__________________20__ г.
Аннотации учебных дисциплин
Наименование магистерской программы
Технология разработки программных систем
Направление подготовки
230100 Информатика и вычислительная техника
Квалификация (степень) выпускника
Магистр
Новосибирск
2011
Аннотация учебной программы дисциплины
«Интеллектуальные системы»
Целью дисциплины является подготовка магистров к созданию и применению интеллектуальных автоматизированных информационных систем.
Задачами дисциплины является построение моделей представления знаний, проектирование и разработка экспертных систем, разработка моделей предметных областей.
Дисциплина входит в базовую часть общенаучного цикла М1 образовательной магистерской программы «Технология разработки программных систем» направления подготовки магистров 230100 «ИНФОРМАТИКА И ВЫЧИСЛИТЕЛЬНАЯ ТЕХНИКА». Изучение данной дисциплины требует следующих компетенций студентов:
- Владение методиками использования программных средств для решения практических задач,
- Умение обосновывать принимаемые проектные решения.
- Владение методами построения и анализа формальных моделей предметных областей
- Владение теоретическими основами программирования, основами логического и декларативного программирования
- Владение понятиями синтаксиса и семантики формальных языков. Владение навыками формального представления содержательных знаний средствами формальных языков.
- Знание современных тенденций развития информационных технологий
- Владение методами трансляции, компиляции, верификации и статического анализа программ
- Владение современными средствами управления базами данных, включая средства объектно-реляционного отображения, объектные и иерархические базы данных
Изучение дисциплины направлено на формирование следующих компетенций:
- научно-исследовательская деятельность:
ПК-1 применять перспективные методы исследования и решения профессиональных задач на основе знания мировых тенденций развития вычислительной техники и информационных технологий;
- проектно-конструкторская деятельность:
ПК-3 разрабатывать и реализовывать планы информатизации предприятий и их подразделений на основе Web- и CALS-технологий;
ПК-5 выбирать методы и разрабатывать алгоритмы решения задач управления и проектирования объектов автоматизации;
- проектно-технологическая деятельность:
ПК-6 применять современные технологии разработки программных комплексов с использованием CASE-средств, контролировать качество разрабатываемых программных продуктов.
В результате изучения дисциплины студент должен:
- Знать:
- модель представления знаний,
- подходы и технику решения задач искусственного интеллекта,
- информационные модели знаний,
- методы представления знаний,
- методы инженерии знаний;
- модели методы формализации, автоформализации и представления знаний;
- теорию и технологии приобретения знаний, принципы приобретения знаний;
- математические модели представления знаний, методы работы со знаниями;
- виды систем поддержки принятия решений;
- основные понятия, связанные с концепцией системы, основанной на знаниях (интеллектуальная система, база знаний, механизм интерпретации знаний, подсистема объяснения, подсистема приобретения знаний, дедуктивный вывод, прямой и обратный вывод, индуктивный вывод и т. д.);
- основные понятия, связанные с нейросетевым подходом к построению интеллектуальных информационных систем (искусственный нейрон, синаптические связи, веса синаптических связей, искусственная нейронная сеть — ИНС, обучение ИНС и т. д.)
- основные понятия и методы мягких вычислений и нечеткого моделирования
- основные понятия и методы семантического представления и излечения информации в сети Интернет, методы разработки и применения онтологий различных предметных областей
- Уметь:
- разрабатывать модели предметных областей
- разрабатывать методы исследования предметных областей
- выполнять сравнительный анализ разработанных методов
- применять методы представления и обработки знаний для решения научных и прикладных задач
- Владеть:
- способами формализации интеллектуальных задач
- способами работы с базами данных и базами знаний
- инструментальными средствами и технологиями работы со знаниями
- инструментами и методами формального описания проектных решений
- базовыми принципами и методологией построения информационных систем (ERP, EAM, MRP, CRM, PLM, САПР, АСУ, АОС и т. д.) как систем, основанных на знаниях
- Иметь представление:
- об основных моделях формализации знаний: логических, продукционных, фреймовых, семантических сетях, а также о методах представления и извлечения знаний.
- Об известных методах и алгоритмах логического вывода на знаниях продукционного типа, стратегии управления ими, а также представлять себе возможные направления их развития
Тематический план курса
Модуль 1 Введение в область ИИ.
Тема 1.1. Область ИИ.
Тема 1.2. Этапы развития и основные направления ИИ.
Модуль 2. Экспертные системы
Тема 2.1. Понятие экспертной системы.
Тема 2.2. Структура ЭС
Тема 2.3. Классификации ЭС.
Тема 2.4. Коллектив разработчиков ЭС.
Тема 2.5. Подходы к созданию ЭС.
Тема 2.6. Методы извлечения знаний.
Тема 2.7. Машина вывода ЭС.
Тема 2.8. Представление неопределенности знаний в ЭС.
Тема 2.9. Компонента объяснения ЭС.
Тема 2.10. Гибридные ЭС.
Модуль 3. Системы поддержки принятия решений
Тема 3.1. Представление процесса принятия решений
Тема 3.2. Эволюция информационных систем
Тема 3.3. Определение систем поддержки принятия решений
Тема 3.4. Разработка систем поддержки принятия решений
Модуль 4. Мягкие вычисления
Тема 4.1. Нечеткое моделирование
Тема 4.2. Искусственные нейронные сети
Тема 4.3. Генетические алгоритмы и эволюционное программирование
Тема 4.4. Гибридные системы
Модуль 5. Инженерия знаний
Тема 4.1. Методы извлечения и представления знаний
Тема 4.2. Онтологии предметных областей. Разработка и применение онтологий.
Тема 4.3. Семантический Веб. Семантические методы представления, поиска и извлечения информации в Интернете.
Аннотация учебной программы дисциплины
«Методы оптимизации»
- Основной целью курса является ознакомление с базовыми математическими моделями и освоение численных методов решения классических экстремальных задач, а также знакомство с современными направлениями развития методов оптимизации. В целом материал курса ориентирован на умение правильно классифицировать конкретную прикладную задачу, выбирать наиболее подходящий метод решения и реализовывать его в виде алгоритма и программы.
Для достижения поставленной цели выделяются задачи курса:
Дать студентам представление об областях применения математического программирования и, в частности, линейного, выпуклого и нелинейного программирования.
Помочь им в изучении симплекс – метода, двойственного симплекс – метода, метода возможных направлений, метода Ньютона, градиентных методов, методов штрафов, метода отсечении Гомори, методов нулевого порядка, метода ветвей и границ, декомпозиции Бендерса, метода Келли.
Дисциплина входит в базовую часть общенаучного цикла М2 образовательной магистерской программы «Технология разработки программных систем» направления подготовки магистров 230100 «ИНФОРМАТИКА И ВЫЧИСЛИТЕЛЬНАЯ ТЕХНИКА»
Научить правильно классифицировать конкретную прикладную задачу, выбирать наиболее подходящий метод её решения и реализовывать его в виде алгоритма и программы.
Изучение данной дисциплины базируется на дисциплинах: «Математический анализ», "Алгебра и геометрия", «Математическая логика», «Дискретная математика».
Изучение дисциплины направлено на формирование следующих общекультурных и профессиональных компетенций:
- ОК-1, ОК-2, ОК-4
- ПК-1, ПК-5, ПК-6
В результате изучения дисциплины студент должен:
Знать:
- элементы теории сложности для анализа задач математического программирования: линейного, выпуклого, квадратичного и двухуровневого программирования;
- основы теории многогранных множеств;
- базовые понятия, основные определения теории экстремальных задач и численные методы решения;
- современнные подходы к решению задач линейного и выпуклого программирования
Уметь:
- правильно классифицировать прикладную задачу в терминах математического программирования;
- выбирать подходящий метод решения задачи и анализировать скорость его сходимости;
- профессионально работать с готовыми коммерческими программными продуктами для решения задач линейного и выпуклого программирования;
Владеть навыками:
- классическими методами решения задач математического программирования: методом Ньютона, градиентными методами, методом штрафов, симплекс-методом, методом ветвей и границ;
- методами синтеза алгоритмов решения новых классов задач.
Основные разделы курса:
- Элементы алгоритмической теории экстремальных задач
- Классификация задач математического программирования
- Необходимые и достаточные условия оптимальности
- Элементы лагранжевой теории двойственности
- Линейное программирование. Численные методы
- Выпуклое программирование. Численные методы
- Нелинейное программирование. Численные методы
- Целочисленное линейное программирование. Численные методы
Лабораторный практикум заключается в приобретении навыков моделирования сложных технико – экономических проблем в виде экстремальных задач в среде современных пакетов типа GAMS и разработке алгоритмов решения средствами этих пакетов.
Аннотация учебной программы дисциплины
«Теория принятия решений»
- Основной целью курса является ознакомление с базовыми математическими моделями и освоение алгоритмов решения дискретных экстремальных задач, а также знакомство с современными направлениями развития теории принятия решений. В целом материал курса ориентирован на умение правильно сформулировать оптимизационную задачу, классифицировать её, определить вычислительную сложность задачи и выбрать или разработать наиболее подходящий метод решения, реализовать его в виде алгоритма и программы.
Для достижения поставленной цели выделяются задачи курса:
Дать студентам представление о классах задачах, которыми занимается теория принятия решений (исследование операций), способах моделирования дискретных задач, точных и приближенных методах решения, оценки качества и вычислительной сложности алгоритмов. Помочь студентам в математическом моделировании задач смешанного целочисленного программирования, задач размещения, календарного планирования, упаковки, задач о рюкзаке, в изучении эвристических алгоритмов: имитации отжига, локальном поиске, алгоритме муравьиных колоний, генетическом алгоритме, в изучении точных методов: ветвей и границ, динамического программирования.
Научить строить математические модели сложных производственно-экономических процессов, правильно классифицировать конкретную прикладную задачу, выбирать наиболее подходящий метод решения и реализовывать его в виде алгоритмов, включая возможности современных пакетов типа GAMS.
Дисциплина входит в базовую часть общенаучного цикла М2 образовательной магистерской программы «Технология разработки программных систем» направления подготовки магистров 230100 «ИНФОРМАТИКА И ВЫЧИСЛИТЕЛЬНАЯ ТЕХНИКА»
Изучение данной дисциплины базируется на дисциплинах: «Математическая логика», «Дискретная математика», « Теория алгоритмов» и «Методы оптимизации».
Изучение дисциплины направлено на формирование следующих общекультурных и профессиональных компетенций:
- ОК-1, ОК-2, ОК-4
- ПК-1, ПК-5, ПК-6
В результате изучения дисциплины студент должен:
Знать
- элементы теории сложности для анализа NP-трудных задач;
- основы теории алгоритмов комбинаторной оптимизации и вычислительную сложность;
- базовые понятия и определения, математические модели классических задач исследования операций численные методы и подходы к их решению;
- современные подходы к решению актуальных задач в области теории принятия решений;
Уметь
- правильно формулировать прикладную задачу в виде математической модели;
- выбирать подходящий метод решения и реализовывать его в виде алгоритмов и программ;
- профессионально работать с готовыми коммерческими программными продуктами для решения дискретных оптимизационных задач (GAMS, CPLEX и др.);
Владеть
- общими численными методами решения задач дискретной оптимизации;
- теорией алгоритмов решения задач размещения, составления расписаний, календарного планирования, теорией игр, раскроя и упаковки, маршрутизации
Основные разделы курса:
- Предмет и метод теории принятия решений. Математические модели. Экстремальные задачи. Системы поддержки принятия решений. Классификация задач математического программирования.
- Метод динамического программирования.
- Задачи о рюкзаке. Задачи раскроя и упаковки. Модели календарного планирования. Задачи маршрутизации. Задачи о покрытии. Игровые задачи размещения. Задачи двухуровневого программирования и равновесия Штаккельберга.
- Приближенные алгоритмы с оценками. Аппроксимационные схемы. Эвристики: алгоритмы локального, алгоритм локального поиска с чередующимися окрестностями, генетический алгоритм, алгоритм имитации отжига, алгоритм муравьиных колоний.
- Классификация задач теории расписаний. Задачи на одной машине. Алгоритм Лаулера. Перестановочный прием. Задачи на параллельных машинах.
- Теория матричных игр. Чистые и смешанные стратегии. Теорема Фон-Неймана. Дилемма о заключенных.
- Вычислительная сложность задач. Основные классы вычислительной сложности.
- Теория матроидов. Пересечение матроидов.
Семинарские занятия включают практикум по приобретению навыков моделирования сложных производственно-экономических проблем в виде оптимизационных задач в среде современных пакетов типа GAMS и разработке алгоритмов решения средствами этих пакетов.
Аннотация учебной программы дисциплины
«Анализ алгоритмов»
Дисциплина «Анализ алгоритмов» является частью профессионального цикла основных образовательных программ (ООП) по направлению подготовки 230100.68 «Информатика и вычислительная техника». Дисциплина реализуется на факультете Информационных Технологий Национального исследовательского университета Новосибирский государственный университет (НГУ) кафедрой общей информатики.
Дисциплина «Анализ алгоритмов» имеет своей целью: систематизировать знания о об основных алгоритмах на стандартных структурах данных; научить основным методам дизайна, представления и доказательства алгоритмов; познакомить с основами теории сложности алгоритмов и классов сложности.
Для достижения поставленной цели выделяются задачи курса: (1) связать воедино полученные ранее знания по алгоритмам и их сложности, (2) предоставить и верифицировать шаблоны для проектирования алгоритмов.
Изучение данной дисциплины базируется на дисциплинах: «Математическая логика», «Дискретная математика», «Программирование», «Методы трансляции и компиляции».
Изучение дисциплины направлено на формирование следующих общекультурных и профессиональных компетенций: ОК-1, ОК-2, ОК-4, ПК-1, ПК-5.
В результате освоения дисциплины студент должен:
иметь представление об общей концепции эффективности, документированности и корректности алгоритма;
знать основные алгоритмы работы со стандартными структурами данных, основные методы дизайна алгоритмов, методы доказательства корректности алгоритмов, основы теории сложности алгоритмов;
уметь применять основные методы дизайна алгоритмов к конкретным задачам, оценивать эффективность проектируемых алгоритмов, обосновывать корректность проектируемых алгоритмов, документировать разработанные алгоритмы.
Дисциплина включает следующие разделы:
- Основы представления, документирования, спецификации и доказательства алгоритмов, базовые алгоритмы сортировки, поиска и матричной алгебры.
- Методы дизайна алгоритмов: откат, ветвей и границ, динамическое программирование.
- Основы теории классов сложности, недетерминированных и альтернирующих алгоритмов.
Аннотация учебной программы дисциплины
«Современные проблемы информатики и вычислительной техники»
Основной целью курса является ознакомление с базовыми информационными моделями и освоение методов решения сложных задач, а также знакомство с современными направлениями развития методов применения компьютерных технологий. В целом материал курса ориентирован на умение правильно классифицировать конкретную прикладную задачу, выбирать наиболее подходящий метод решения и реализовывать его в виде алгоритма и программы.
Для достижения поставленной цели выделяются задачи курса:
- Дать студентам представление об областях применения компьютерных и телекоммуникационных технологий в различных направлениях, включая управление деятельностью, документооброт, науку и образование.
- Помочь им в изучении средств и методов решения особо сложных задач, возникающих на стыке современных наукоемких технологий и информатики.
- Научить правильно классифицировать конкретную прикладную задачу, выбирать наиболее подходящий метод её решения и реализовывать его в виде алгоритма и программы.
Данная дисциплина относится к циклу М2. Профессиональный цикл (базовая часть) образовательной программы магистра Технология разработки программных систем по направлению 230100 Информатика и вычислительная техника. С другими частями образовательной программы соотносится следующим образом:
Изучение данной дисциплины базируется на дисциплинах, изучаемых на этапе подготовки бакалавра:
- Программирование на языке высокого уровня
- Основы параллельного программирования
- Методы трансляции и компиляции
- Сетевые технологии
Для изучения дисциплины определены «входные» требования:
- знание фундаментальных основ информатики и современных информационных технологий на уровне программы бакалавра по направлению 230100 «Информатика и вычислительная техника»;
- базовое понимание проблем развития и ограничений теоретической и практической информатики на современном этапе;
- умение применять методы и технологии информатики для решения прикладных задач
Последующими для данной дисциплины являются
- Научно-исследовательская практика
- Итоговая государственная аттестация
Изучение дисциплины направлено на формирование следующих общекультурных и профессиональных компетенций:
Общекультурные компетенции
- ОК-1, способен совершенствовать и развивать свой интеллектуальный и общекультурный уровень
- ОК-2, способен к самостоятельному обучению новым методам исследования, к изменению научного и научно-производственного профиля своей профессиональной деятельности
- ОК-4, использует на практике умения и навыки в организации исследовательских и проектных работ, в управлении коллективом
Профессиональные компетенции
- ПК-1, применять перспективные методы исследования и решения профессиональных задач на основе знания мировых тенденций развития вычислительной техники и информационных технологий
- ПК-5, выбирать методы и разрабатывать алгоритмы решения задач управления и проектирования объектов автоматизации
- ПК-6, применять современные технологии разработки программных комплексов с использованием CASE-средств, контролировать качество разрабатываемых программных продуктов
В результате изучения дисциплины студент должен:
Знать:
- элементы теории решения сложных задач на базе современных компьютерных средств;
- основы информационных технологий;
- базовые понятия и основные определения, возникающие в связи с развитием многопроцессорных конфигураций и сетевых технологий;
- современнные подходы к применению информационных систем в наиболее важных областях, таких как управление, наука и образование.
Уметь:
- правильно классифицировать прикладную задачу в терминах информационных систем;
- выбирать подходящий метод решения задачи и информационную систему для его реализации;
- грамотно работать с готовыми программными продуктами для решения задач информатики в области управления, науки и образования;
Владеть навыками:
- классическими методами дистанционного доступа к информационным системам;
- методами синтеза алгоритмов решения новых классов задач информатики.
Основные разделы курса:
Часть 1. Проблемы становления информатики
Часть 1 посвящена проблемам становления информатики как науки и ее основным составным частям, а также применению информационных технологий в науке и образовании. Структура информатики как науки - научная дисциплина, изучающей структуру и общие свойства семантической информации, закономерности ее функционирования в обществе, являющейся теоретической базой для информационных технологий, которые часто отождествляют с информатикой.
Информационные (числовые) модели. Понятие о вычислениях. Основные этапы развития вычислительных устройств и моделей. Связь с экономическим развитием общества. Краткий исторический обзор от Аристотеля и Леонардо да Винчи до наших дней. Информационное моделирование. Может ли компьютер затормозить развитие «разума». Стоит ли читать «старые» книги – проблема извлечения «знаний». Становление вычислительной техники от дифференциальных анализаторов до суперкомпьютеров. «Вычислительные Пионеры».
Становление программирования – парадигмы программирования (объекты или процессы). Информационная вселенная. Информационные модели организации вычислений. Соответствие информационных и математических моделей реального мира. Компьютерная грамматика и арифметика – «критика чистого разума» (следуя Канту). Языки программирования: парадигмы и реалии. Компьютерная грамотность. Национальные информационные ресурсы. Как далеко можно плести сети. Кто на что влияет: общество и «вычислительные науки».
Кризис информационных технологий. Дом, который построил Джон (фон Нейман). Что такое «наука информатика» и «образование». Информатика и физика.
Как нам реорганизовать РАБКРИН (почти по Ленину). Что делать или кризис информационного жанра. Информация – данные – знания. Электронные библиотеки, коллекции и системы. Метаданные и схемы данных. Информационное построение окружающего мира – документы в информационном пространстве. Распределенные информационно-вычислительные ресурсы. Назад или вперед к «майнфреймам». Сетевые «операционные системы». Метаданные и принцип «цифровых библиотек». Настройка алгоритмов на данные или наоборот.
Часть 2. Компьютерные технологии в науке
Понятие о математическом моделировании.
Волна цунами – общие сведения
Современные ИКТ в задаче своевременного предупреждения об угрозе цунами
Методы обработки записей глубоководных гидрофизических станций
Использование современных архитектур для обработки данных в режиме реального времени
Примеры применения современных ИКТ в науках о Земле, науках о Живом и в образовании
Актуальные нерешенные задачи
На примере задачи уменьшения последствий природных катастроф излагаются совокупность элементов современных инфо-коммуникационных технологий, связанных прикладной направленностью.
Часть 3. Компьютерные технологии в образовании
Изучаются методологические основы преподавания информатики, проектирование целей, содержания и технологий реализации образовательного процесса по информатике. Обсуждается представление образовательного процесса по информатике в виде совокупности взаимосвязанных элементов, с объяснением характера связи между ними, обоснованием на этой основе необходимой структуры концептуально-описательной модели образовательного процесса.
Теории научения и обучения
Экспертные системы в образовании
Деятельностный подход к образованию
Создание учебной обстановки
Некомерческие линии развития информационных систем
Методические материалы по информатике и программированию
Дистанционное и факультативное обучение программистов
История информатики и ИКТ
Нерешенные проблемы образовательной информатики.
Аннотация учебной дисциплины
«Технология разработки программного обеспечения»
Целями дисциплины являются: ознакомление с современными языками программирования, их классификацией и областями их применения; освоение различных методов абстрагирования, обеспечения модульности и других аспектов проектирования программных систем; повышение профессиональной эрудиции.
Для достижения поставленных целей выделяются следующие задачи дисциплины:
- ознакомить слушателей с возможностями современных динамических языков и областями их применения;
- ознакомить с методами функционального и аспектно-ориентированного программирования и проектирования;
- ознакомить с элементами метапрограммирования, включая интроспекцию, управляемую кодогенерацию;
- дать представление о преимуществах и недостатках различных методах программирования и проектирования, а также о возможностях их комбинированного использования при решении прикладных задач.
Дисциплина входит в базовую часть профессионального цикла М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 Применение АОП в проектирование. Преимущества и недостатки по сравнению с традиционными методами проектирования. Примеры задач, эффективно решаемых с помощью АОП.
Аннотация учебной программы дисциплины
«Основания и обоснования информатики»
Целью дисциплины является
- рассмотреть информатику в целом, в её конструктивном (проектном и программном), научном и гуманитарном аспекте;
- систематизировать знания о базисных понятиях информатики в их взаимной согласованности и особенностях применения в различных технологиях разработки программ
Задачами дисциплины являются:
- определить основания информатики — взаимосогласованную систему категорий и базисных понятий, их свойств и отношений между ними;
- представить основные положения теории деятельности для анализа и обоснования базисных категорий информатики, методов и средств, применяемых для разработки аппаратных и программных комплексов и систем;
- рассмотреть теоретико-деятельностное обоснование информатики в разных аспектах построения аппаратных и программных и систем и их приложений — технологическом, инструментальном, управленческом, организационном, внедренческом.
Дисциплина входит в вариативную часть профессионального цикла М2 образовательной магистерской программы «Технология разработки программных систем» направления подготовки магистров 230100 «ИНФОРМАТИКА И ВЫЧИСЛИТЕЛЬНАЯ ТЕХНИКА»
Требования к первоначальному уровню подготовки обучающихся для успешного освоения дисциплины:
Уровень «знать»:
- основные парадигмы программирования (императивное, фукнциональное, логическое и объектно-ориентированное программирование);
-