Types 23 — различия между версиями

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
(Домашние задания)
 
(не показано 14 промежуточных версии этого же участника)
Строка 16: Строка 16:
  
 
[https://disk.yandex.ru/d/zl7DgU7FmuJKLg/%D0%A2%D0%B8%D0%BF%D1%8B%20%D0%B2%20%D1%8F%D0%B7%D1%8B%D0%BA%D0%B0%D1%85%20%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F Записи занятий (Я.Диск)]
 
[https://disk.yandex.ru/d/zl7DgU7FmuJKLg/%D0%A2%D0%B8%D0%BF%D1%8B%20%D0%B2%20%D1%8F%D0%B7%D1%8B%D0%BA%D0%B0%D1%85%20%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F Записи занятий (Я.Диск)]
 +
 +
[https://classroom.google.com/c/NjM0MDcwNzgzODA3?cjc=rt3n6dq classroom для сдачи заданий]
  
 
[https://docs.google.com/spreadsheets/d/1ygCm0WCdA0vTRaiJU5BbgtD4utra25BfF2wdxYChsUA/edit?usp=sharing Оценки]
 
[https://docs.google.com/spreadsheets/d/1ygCm0WCdA0vTRaiJU5BbgtD4utra25BfF2wdxYChsUA/edit?usp=sharing Оценки]
Строка 36: Строка 38:
 
== Домашние задания ==
 
== Домашние задания ==
  
* ПДЗ-1 (практическое). TBA
+
* ПДЗ-1 (практическое). Реализация программы, обманывающей систему типов одного из мейнстримных языков программирования. 5 баллов за реализацию, 5 баллов за объяснение. [https://docs.google.com/document/d/1Kkrbkes6KJm_ivMUTqKtqaCd2et55RLBpi3UINhctaA/edit?usp=sharing Условие]. Дедлайн: '''7 ноября в 23:59'''.
* ТДЗ-1 (теоретическое). TBA
+
* ТДЗ-1 (теоретическое). Решение теоретических задач по темам первой части курса. До 15 баллов. [https://drive.google.com/file/d/12vgTJwM0y5Ollp2kcLgcwLW-qUEgdZyg/view?usp=sharing Условие]. [https://drive.google.com/file/d/1YkJ3aIMn4AqanWAkKym56k0drAMYeZlH/view?usp=sharing Исходник]. Дедлайн: '''23 декабря в 23:59'''.
* ПДЗ-2 (практическое). TBA
+
* ПДЗ-2 (практическое). Реализация алгоритма W с различными расширениями. Базовая реализация 10 баллов, расширения – до 5 бонусных баллов. [https://drive.google.com/file/d/17LTaOWpcXnjI3ICKpfOzyVcy0D6y7byf/view?usp=sharing Условие]. [https://codeforces.com/contestInvitation/ee8782d41e94a66154507098dbbce4ab0c8603e4 Тестирующая система]. Дедлайн: '''30 ноября в 23:59'''.
* ТДЗ-2 (теоретическое). TBA
+
* ТДЗ-2 (теоретическое). Решение теоретических задач по темам второй части курса. До 15 баллов. [https://drive.google.com/file/d/12vgTJwM0y5Ollp2kcLgcwLW-qUEgdZyg/view?usp=sharing Условие]. [https://drive.google.com/file/d/1YkJ3aIMn4AqanWAkKym56k0drAMYeZlH/view?usp=sharing Исходник]. Дедлайн: '''23 декабря в 23:59'''.
* ПДЗ-3 (практическое). TBA
+
* ПДЗ-3 (практическое, бонусное). Реализация двусторонней проверки типов. 5 бонусных баллов с весом 0.2 в итоге. [https://docs.google.com/document/d/1WGAjqRF2IjsveFyU7hSTKqTWgXO5dVfgqnDO_Ma-Jxo/edit?usp=sharing Условие]. Дедлайн: '''23 декабря в 23:59'''.
 +
 
 +
Условие теоретических домашних заданий скомпилировано с помощью XeLaTeX.
 +
 
 +
=== Правила устной сдачи ===
 +
 
 +
Для сдачи теоретического задания доступна также устная сдача. Для того, чтобы сдать задачу устно, нужно:
 +
 
 +
# Заранее выписать на лист бумаги или в .pdf все логические правила вывода и термы, необходимые для Вашего решения, а также всё, что должно быть '''выписано''' или '''построено''' по условию задачи;
 +
# Договориться со мной (Павлом) о сдаче во время консультаций (пн-пт с 15 до 18 кроме ср) либо сразу до/после занятия;
 +
# Рассказать решение, опираясь на Ваши выкладки.
  
 
== Итоговая оценка за курс ==
 
== Итоговая оценка за курс ==

Текущая версия на 17:35, 15 декабря 2023

Типы в языках программирования

Осенний курс по выбору для студентов 4 курса ПМИ ФКН ВШЭ.

Лектор и семинарист: Павел Соколов aka @TurtlePU.

Полезные ссылки

Канал курса (Telegram)

Чат курса (Telegram)

Основные пары (Zoom)

Дополнительные пары (Zoom)

Записи занятий (Я.Диск)

classroom для сдачи заданий

Оценки

Лекции и семинары

  • Лекция 1, 25 сен 2023. Организация курса; Формальные методы и теория типов; Язык IntBool. Запись.
  • Семинар 1, 25 сен 2023. Денотационная и операционная семантики; Корректность системы типов языка IntBool. Запись.
  • Лекция 2, 25 сен 2023. Preservation и progress теоремы; Лямбда-исчисление и его Тьюринг-полнота. Запись.
  • Семинар 2, 2 окт 2023. Операционная семантика лямбда-исчисления; STLC. Запись.
  • Лекция 3, 2 окт 2023. Теоретико-множественная семантика STLC; Алгебраические типы данных; Соответствие Карри-Говарда. Запись.
  • Семинар 3, 2 окт 2023. Доказательства в интуиционистской логике через CHC; Оператор fix и натуральные числа в STLC. Запись.
  • Лекция 4, 9 окт 2023. Оператор явной типизации; типизация параметров в STLC. Полиморфизм и System F; лямбда-куб. Запись.
  • Семинар 4, 9 окт 2023. Система типов Хиндли-Милнера, часть 1. Запись.
  • Лекция 5, 9 окт 2023. Система типов Хиндли-Милнера, часть 2. Запись.
  • Семинар 5, 16 окт 2023. Система типов Хиндли-Милнера и алгебраические типы данных. Полиморфная рекурсия. Запись.
  • Лекция 6, 16 окт 2023. Система типов Хиндли-Милнера и отношение подтипизации. Запись.
  • Семинар 6, 16 окт 2023. Тип-пересечение и тип-объединение. Задача эквивалентности типов. Двусторонний вывод типов. Запись.

Домашние задания

  • ПДЗ-1 (практическое). Реализация программы, обманывающей систему типов одного из мейнстримных языков программирования. 5 баллов за реализацию, 5 баллов за объяснение. Условие. Дедлайн: 7 ноября в 23:59.
  • ТДЗ-1 (теоретическое). Решение теоретических задач по темам первой части курса. До 15 баллов. Условие. Исходник. Дедлайн: 23 декабря в 23:59.
  • ПДЗ-2 (практическое). Реализация алгоритма W с различными расширениями. Базовая реализация 10 баллов, расширения – до 5 бонусных баллов. Условие. Тестирующая система. Дедлайн: 30 ноября в 23:59.
  • ТДЗ-2 (теоретическое). Решение теоретических задач по темам второй части курса. До 15 баллов. Условие. Исходник. Дедлайн: 23 декабря в 23:59.
  • ПДЗ-3 (практическое, бонусное). Реализация двусторонней проверки типов. 5 бонусных баллов с весом 0.2 в итоге. Условие. Дедлайн: 23 декабря в 23:59.

Условие теоретических домашних заданий скомпилировано с помощью XeLaTeX.

Правила устной сдачи

Для сдачи теоретического задания доступна также устная сдача. Для того, чтобы сдать задачу устно, нужно:

  1. Заранее выписать на лист бумаги или в .pdf все логические правила вывода и термы, необходимые для Вашего решения, а также всё, что должно быть выписано или построено по условию задачи;
  2. Договориться со мной (Павлом) о сдаче во время консультаций (пн-пт с 15 до 18 кроме ср) либо сразу до/после занятия;
  3. Рассказать решение, опираясь на Ваши выкладки.

Итоговая оценка за курс

Итог = Округление(0.1 * ПДЗ-1 + 0.2 * ПДЗ-2 + 0.2 * ПДЗ-3 + 0.25 * ТДЗ-1 + 0.25 * ТДЗ-2).

Округление арифметическое.

Литература

Основная литература

  1. Benjamin C. Pierce, Types and Programming Languages
  2. Frank Pfenning, Lecture Notes on Bidirectional Type Checking

Дополнительная литература

  1. Lectures on the Curry-Howard Isomorphism