Бакалавриат
2024/2025





Метавычисления
Статус:
Курс по выбору (Прикладная математика и информатика)
Направление:
01.03.02. Прикладная математика и информатика
Кто читает:
Департамент информатики
Где читается:
Школа информатики, физики и технологий
Когда читается:
4-й курс, 1, 2 модуль
Формат изучения:
без онлайн-курса
Охват аудитории:
для всех кампусов НИУ ВШЭ
Преподаватели:
Булычев Дмитрий Юрьевич
Язык:
русский
Кредиты:
5
Программа дисциплины
Аннотация
Является дисциплиной по выбору. Метавычисления — это раздел программирования, посвященный разработке методов анализа и преобразования программ за счет реализации конструктивных метасистем (метапрограмм) над программами. Метавычисления в первую очередь включают теорию суперкомпиляции и близкие методы и средства. В рамках изучения дисциплины студенты получат представление об основных принципах метавычислений и суперкомпиляции, научатся применять их для реализации частичных вычислителей и суперкомпиляторов. Для освоения дисциплины студентам необходимы знания, полученные в результате изучения дисциплин «Функциональное программирование», «Компиляторы», «Семантики языков программирования».
Цель освоения дисциплины
- Формирование у студентов теоретических знаний и практических навыков по основам анализа языков программирования, разработке метавычислителей для различных языков программирования.
- Освоение методов статического и динамического анализов, семантического анализа, абстрактной интерпретации.
Планируемые результаты обучения
- Знает основные понятия и факты теорий языков программирования и метавычислений, такие, как проекции Футамуры–Ершова–Турчина, разбиение программ, самоприменение, компиляция, семантика и семантический анализ, типы, анализ потока данных, анализ времени связывания, завершаемость, безопасность, специализация, суперкомпиляция, абстрактная интерпретация и другие.
- Умеет реализовывать различные виды метавычислителей для функциональных и императивных языков программирования.
- Имеет навыки в анализе программ и языков программирования.
Содержание учебной дисциплины
- Раздел 1. Введение в метавычисления
- Раздел 2. Специализация программ
- Раздел 3. Критерии программной специализации
- Раздел 4. Суперкомпиляция
Элементы контроля
- Домашнее задание №3Домашнее задание №3 выдается студентам в одном варианте и состоит в реализации суперкомпилятора для академического функционального языка. Из задачи выделяется 4 основных подзадачи, выполняемых обязательно последовательно друг за другом, поскольку каждая последующая подзадача основана на предыдущей. Срок на выполнение каждой подзадачи – одна неделя. Форма представления обучающимися домашнего задания — своевременная публикация решения в репозиторий.
- ЭкзаменУстный экзамен проводится в форме ответов на вопросы экзаменационного билета. Экзаменационный билет содержит два вопроса из перечня вопросов к экзамену. На подготовку ответа выделяется 2,5 часа.
- Домашнее задание №2Домашнее задание №2 выдается студентам в одном варианте и состоит в реализации специализатора для простого функционального языка программирования. Из задачи выделяется 4 основных подзадачи, выполняемых обязательно последовательно друг за другом, поскольку каждая последующая подзадача основана на предыдущей. Срок на выполнение каждой подзадачи – одна неделя. Форма представления обучающимися домашнего задания — своевременная публикация решения в репозиторий.
- Домашнее задание №1Домашнее задание №1 выдается студентам в одном варианте и состоит в реализации специализатора для простого императивного языка программирования. Из задачи выделяется 5 основных подзадач, выполняемых обязательно последовательно друг за другом, поскольку каждая последующая подзадача основана на предыдущей. Срок на выполнение каждой подзадачи – одна неделя. Форма представления обучающимися домашнего задания — своевременная публикация решения в репозиторий.
Промежуточная аттестация
- 2024/2025 2nd moduleПреподаватель учитывает оценку за текущий контроль (домашние задания). Онакопленная = (Одз/1 + Одз/2 + Одз/3) / 3 Результирующая оценка за дисциплину рассчитывается следующим образом: Орезультирующая = 0,5*Онакопленная + 0,5*Оэкзамен
Список литературы
Рекомендуемая основная литература
- 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