ФП 5SE осень 2019

Материал из CSC Wiki
Перейти к:навигация, поиск

Лекции

Преподаватель: Москвин Денис Николаевич dmoskvin@gmail.com

Экзамен

Вопросы к экзамену

Консультация состоится 25.01.2020 (сб) в 12:00 в Таймсе, в черных досках.

Экзамен начнется 26.01.2020 (вс) с 10:30 в Таймсе, в черных досках. Табличка для записи студентов на конкретное время.

Полезными при подготовке к экзамену могут оказаться конспекты лекций по теоретической и практической частям курса. Это расширенные версии слайдов, с дополнительными примерами и рассуждениями. Предупреждение: они неполные и представляют собой раннюю альфу!

Слайды

Лекция 1. Лямбда-исчисление 04.09.2019 (ср)

Лекция 2. Рекурсия и редукция 11.09.2019 (ср)

Лекция 3. Просто типизированное лямбда-исчисление 18.09.2019 (ср)

Лекция 4. Введение в Haskell 25.09.2019 (ср)

Лекция 5. Программирование на Haskell 02.10.2019 (ср)

Лекции 5a. Программирование на Haskell (2) 09.10.2019 (ср)

Лекция 6. Классы типов 16.10.2019 (ср)

Лекция 7. Свертки 23.10.2019 (ср)

Лекция 8. Аппликативные функторы 06.11.2019 (ср)

Лекция 9. Использование аппликативных функторов 13.11.2019 (ср)

Лекция 10. Монады 20.11.2019 (ср)

Лекция 11. Стандартные монады 27.11.2019 (ср)

Лекция 12. Трансформеры монад 04.12.2019 (ср)

Лекция 13. Алгоритм вывода типов 11.12.2019 (ср)

Лекция 14. Рекурсивные типы 18.12.2019 (ср)


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

Hoogle

Typeclassopedia

Haskell 2010 Language Report

Learn You a Haskell for Great Good!

Практика Халанский

Преподаватель Халанский Дмитрий

d.khalansky+fp2019@gmail.com (не пропускайте +fp2019, а то бот может положить письмо не туда) Не стесняйтесь писать с вопросами, замечаниями и пожеланиями, особенно если ощущаете, что застряли!

  • Задания разбираются через неделю, если не сказано обратное.
  • Я должен ответить в течение троих суток с момента, как увидел решения, так что имеет смысл что-то прислать, даже если готово ещё мало.

Домашние задания можно отправлять мне на почту с темой письма вида "Фамилия-НомерЗадания"; иначе, можно завести репозиторий на Gitlab, открыть мне (https://gitlab.com/d.khalansky) доступ и слать мне запрос на проверку pull request-ов.

Баллы

  • Каждая задача оценивается как максимум в один балл. Особо выдающиеся решения могут получать больше, но это редкость.
  • Можно получить дробный балл.
  • Для каждой темы назначается порог баллов, который нужно пройти.
  • Для зачёта необходимо и достаточно получить зачёт по всем темам, кроме любой одной, а также выполнить курсовую работу.
  • Баллы за одну тему не переходят в другую тему, так что если порог пройден, посылать новые задачи имеет смысл только ради рейтинга.
  • Каждая дополнительная задача также оценивается в один балл.
  • На дополнительные задачи нет сроков.
  • Дополнительные задачи не учитываются при расчёте рейтинга, с их помощью можно только дозакрывать темы.

Материалы

Курсовая: нужно на курсе Эдгара на Степике пройти модуль https://stepik.org/lesson/258178 и, когда появится, модуль https://stepik.org/lesson/258189. Приглашение на курс ниже, в разделе Эдгара. После решения задач можно сообщить мне, чтобы я их проверил, но я и так буду периодически смотреть, кто решил.

дополнительные задачи исходник

1. задание исходник; конспект исходник

2. задание исходник; конспект исходник

3. задание исходник; конспект исходник

4. задание исходник; конспект исходник

5. задание исходник; конспект исходник

6. задание исходник; конспект исходник Долго пытался придумать хорошую разминку, но в результате понял, что перепечатываю https://wiki.haskell.org/Foldr_Foldl_Foldl' . Если возникнут проблемы с домашним заданием, почитайте эту страницу, там очень подробно расписано, как происходят вычисления. Ещё попробуйте в интерпретаторе вызвать команду `:set +s` и после этого попроизводить разные вычисления функций: тогда ghci будет сообщать, сколько памяти было запрошено (хотя и не обязательно использовано) и сколько времени ушло на каждую команду; это поможет проверить свои догадки насчёт производительности.

7. задание исходник; конспект исходник; разминка

8. задание исходник; конспект исходник (разминка внутри задания). Для зачёта нужно решить пять задач, хотя бы одно из которых на свёртки и хотя бы одно — на развёртки.

9. задание исходник; конспект исходник (тут ещё пара слов про интуицию под Traversable, которые я когда-то из себя выжал)

10. задание исходник; см. конспект прошлой темы

11. задание исходник; конспект исходник. Важно: добавлена информация про курсовую.

12. задание исходник

13. задание исходник

14. Вторая часть курсовой (написание типизатора) появилась на Степике; она и будет заданием на эту неделю.

Практика Жаворонков

Преподаватель Жаворонков Эдгар

Табличка с результатами

Контакты:

Материалы с занятий и домашние задания:

Правила игры и прочее

Сдача домашних заданий

  • Первые три -- мне на почту. Формат -- pdf(LaTeX)
  • Следующие -- сдаются в приватный курс на Степике. Укажите при регистрации свои настоящие имя и фамилию. Для зачисления на курс необходимо перейти по ссылке-приглашению

Дедлайны

  • Мягкий -- указан в строке с соответствующим заданием. Если присылаете до него -- я смотрю, отвечаю и можно прислать исправления.
  • Жесткий -- наступает в момент начала пары. Присылать до него можно и нужно, я не снижаю баллы, но не гарантирую, что буду принимать исправления

Зачет

TBD