Бакалавриат
2022/2023![Цель освоения дисциплины](/f/src/global/i/edu/objectives.svg)
![Планируемые результаты обучения](/f/src/global/i/edu/results.svg)
![Содержание учебной дисциплины](/f/src/global/i/edu/sections.svg)
![Элементы контроля](/f/src/global/i/edu/controls.svg)
![Промежуточная аттестация](/f/src/global/i/edu/intermediate_certification.svg)
![Список литературы](/f/src/global/i/edu/library.svg)
Метавычисления
Лучший по критерию «Полезность курса для Вашей будущей карьеры»
Лучший по критерию «Полезность курса для расширения кругозора и разностороннего развития»
Лучший по критерию «Новизна полученных знаний»
Статус:
Курс по выбору (Прикладная математика и информатика)
Направление:
01.03.02. Прикладная математика и информатика
Кто читает:
Департамент информатики
Когда читается:
4-й курс, 1, 2 модуль
Формат изучения:
без онлайн-курса
Охват аудитории:
для всех кампусов НИУ ВШЭ
Преподаватели:
Москвин Денис Николаевич
Язык:
русский
Кредиты:
4
Контактные часы:
40
Программа дисциплины
Аннотация
Является дисциплиной по выбору. Метавычисления — это раздел программирования, посвященный разработке методов анализа и преобразования программ за счет реализации конструктивных метасистем (метапрограмм) над программами. Метавычисления в первую очередь включают теорию суперкомпиляции и близкие методы и средства. В рамках изучения дисциплины студенты получат представление об основных принципах метавычислений и суперкомпиляции, научатся применять их для реализации частичных вычислителей и суперкомпиляторов. Для освоения дисциплины студентам необходимы знания, полученные в результате изучения дисциплин «Функциональное программирование», «Компиляторы», «Семантики языков программирования».
Цель освоения дисциплины
- Формирование у студентов теоретических знаний и практических навыков по основам анализа языков программирования, разработке метавычислителей для различных языков программирования.
- Освоение методов статического и динамического анализов, семантического анализа, абстрактной интерпретации.
Планируемые результаты обучения
- Знает основные понятия и факты теорий языков программирования и метавычислений, такие, как проекции Футамуры–Ершова–Турчина, разбиение программ, самоприменение, компиляция, семантика и семантический анализ, типы, анализ потока данных, анализ времени связывания, завершаемость, безопасность, специализация, суперкомпиляция, абстрактная интерпретация и другие.
- Умеет реализовывать различные виды метавычислителей для функциональных и императивных языков программирования.
- Имеет навыки в анализе программ и языков программирования.
Содержание учебной дисциплины
- Раздел 1. Введение в метавычисления
- Раздел 2. Специализация программ
- Раздел 3. Критерии программной специализации
- Раздел 4. Суперкомпиляция
Элементы контроля
- Домашнее задание 1Домашнее задание No1 выдается студентам в одном варианте и состоит в реализации спецаиализатора для простого императивного языка программирования. Из задачи выделяется 5 основных подзадач, выполняемых обязательно последовательно друг за другом, поскольку каждая последующая подзадача основана на предыдущей. Срок на выполнение каждой подзадачи – одна неделя. Форма представления обучающимися домашнего задания — своевременная публикация решения в репозиторий.
- Домашнее задание 2Домашнее задание No2 выдается студентам в одном варианте и состоит в реализации специализатора для простого функционального языка программирования. Из задачи выделяется 4 основных подзадачи, выполняемых обязательно последовательно друг за другом, поскольку каждая последующая подзадача основана на предыдущей. Срок на выполнение каждой подзадачи – одна неделя. Форма представления обучающимися домашнего задания — своевременная публикация решения в репозиторий.
- Домашнее задание 3Домашнее задание No3 выдается студентам в одном варианте и состоит в реализации суперкомпилятора для академического функционального языка. Из задачи выделяется 4 основных подзадачи, выполняемых обязательно последовательно друг за другом, поскольку каждая последующая подзадача основана на предыдущей. Срок на выполнение каждой подзадачи – одна неделя. Форма представления обучающимися домашнего задания — своевременная публикация решения в репозиторий.
- Устный экзаменУстный экзамен проводится в форме ответов на вопросы экзаменационного билета. Экзаменационный билет содержит два вопроса из перечня вопросов к экзамену. На подготовку ответа выделяется 2,5 часа.
Промежуточная аттестация
- 2022/2023 учебный год 2 модульРезультирующая оценка за дисциплину рассчитывается следующим образом: Орезультирующая = 0,5 Онакомпленная + 0,5 Оэкзамен где Онакопленная рассчитывается как взвешенная сумма всех форм текущего контроля. Онакопленная = (ОдзNo1 + ОдзNo2 + ОдзNo3)/3
Список литературы
Рекомендуемая основная литература
- Pierce, B. C. (2002). Types and Programming Languages. Cambridge, Mass: The MIT Press. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=70966
Рекомендуемая дополнительная литература
- Cardoso, J. M. P., & Diniz, P. C. (2009). Compilation Techniques for Reconfigurable Architectures. New York, NY: Springer. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=275651
- Draheim, D. (2017). Semantics of the Probabilistic Typed Lambda Calculus : Markov Chain Semantics, Termination Behavior, and Denotational Semantics. Berlin, Germany: Springer. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1479832