• A
  • A
  • A
  • АБВ
  • АБВ
  • АБВ
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта
02
Июль

Метавычисления

2023/2024
Учебный год
RUS
Обучение ведется на русском языке
5
Кредиты
Статус:
Курс по выбору
Когда читается:
4-й курс, 1, 2 модуль

Преподаватель

Программа дисциплины

Аннотация

Является дисциплиной по выбору. Метавычисления — это раздел программирования, посвященный разработке методов анализа и преобразования программ за счет реализации конструктивных метасистем (метапрограмм) над программами. Метавычисления в первую очередь включают теорию суперкомпиляции и близкие методы и средства. В рамках изучения дисциплины студенты получат представление об основных принципах метавычислений и суперкомпиляции, научатся применять их для реализации частичных вычислителей и суперкомпиляторов. Для освоения дисциплины студентам необходимы знания, полученные в результате изучения дисциплин «Функциональное программирование», «Компиляторы», «Семантики языков программирования».
Цель освоения дисциплины

Цель освоения дисциплины

  • Формирование у студентов теоретических знаний и практических навыков по основам анализа языков программирования, разработке метавычислителей для различных языков программирования.
  • Освоение методов статического и динамического анализов, семантического анализа, абстрактной интерпретации.
Планируемые результаты обучения

Планируемые результаты обучения

  • Знает основные понятия и факты теорий языков программирования и метавычислений, такие, как проекции Футамуры–Ершова–Турчина, разбиение программ, самоприменение, компиляция, семантика и семантический анализ, типы, анализ потока данных, анализ времени связывания, завершаемость, безопасность, специализация, суперкомпиляция, абстрактная интерпретация и другие.
  • Умеет реализовывать различные виды метавычислителей для функциональных и императивных языков программирования.
  • Имеет навыки в анализе программ и языков программирования.
Содержание учебной дисциплины

Содержание учебной дисциплины

  • Раздел 1. Введение в метавычисления
  • Раздел 2. Специализация программ
  • Раздел 3. Критерии программной специализации
  • Раздел 4. Суперкомпиляция
Элементы контроля

Элементы контроля

  • неблокирующий Домашнее задание №3
    Домашнее задание №3 выдается студентам в одном варианте и состоит в реализации суперкомпилятора для академического функционального языка. Из задачи выделяется 4 основных подзадачи, выполняемых обязательно последовательно друг за другом, поскольку каждая последующая подзадача основана на предыдущей. Срок на выполнение каждой подзадачи – одна неделя. Форма представления обучающимися домашнего задания — своевременная публикация решения в репозиторий.
  • блокирующий Экзамен
    Устный экзамен проводится в форме ответов на вопросы экзаменационного билета. Экзаменационный билет содержит два вопроса из перечня вопросов к экзамену. На подготовку ответа выделяется 2,5 часа.
  • неблокирующий Домашнее задание №2
    Домашнее задание №2 выдается студентам в одном варианте и состоит в реализации специализатора для простого функционального языка программирования. Из задачи выделяется 4 основных подзадачи, выполняемых обязательно последовательно друг за другом, поскольку каждая последующая подзадача основана на предыдущей. Срок на выполнение каждой подзадачи – одна неделя. Форма представления обучающимися домашнего задания — своевременная публикация решения в репозиторий.
  • неблокирующий Домашнее задание №1
    Домашнее задание №1 выдается студентам в одном варианте и состоит в реализации специализатора для простого императивного языка программирования. Из задачи выделяется 5 основных подзадач, выполняемых обязательно последовательно друг за другом, поскольку каждая последующая подзадача основана на предыдущей. Срок на выполнение каждой подзадачи – одна неделя. Форма представления обучающимися домашнего задания — своевременная публикация решения в репозиторий.
Промежуточная аттестация

Промежуточная аттестация

  • 2023/2024 учебный год 2 модуль
    Преподаватель учитывает оценку за текущий контроль (домашние задания). Онакопленная = (Одз/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