Функциональное программирование 24-25 — различия между версиями
Edashkov (обсуждение | вклад) (→Преподаватели) |
Edashkov (обсуждение | вклад) (→Контрольная работа) |
||
Строка 111: | Строка 111: | ||
== Контрольная работа == | == Контрольная работа == | ||
+ | Письменная Контрольная работа проводится в начале второго модуля. | ||
+ | Допускается использование собственных записей студента и явно разрешенных локальных справочных систем. | ||
− | + | Каждая задача контрольной работы оценивается дробным значением от 0 до 1 балла. Контрольная оцениваются значением: | |
− | + | ||
− | КР = (сумма полученных баллов за все задачи) / (количество | + | КР = 10 * (сумма полученных баллов за все задачи) / (количество задач в контрольной работе). |
− | + | ||
== Итоговый экзамен == | == Итоговый экзамен == |
Версия 20:45, 15 сентября 2024
Содержание
Функциональное программирование
Курс по выбору для студентов 3 и 4 курса ФКН ВШЭ, 1 и 2 модуль 2024 г. Функциональное программирование (ФП) представляет собой теоретически изящный, выдержавший проверку временем на практике и оказавший заметное влияние на технологии программирования вообще подход к созданию ПО. Курс посвящен основам ФП в целом и популярного языка Haskell в частности. Попутно сообщаются начальные сведения из области лямбда-исчислений, теории типов, теории категорий.
Преподаватели
Лектор: Евгений Дашков, ТГ: @edashkov, edashkov@gmail.com.
Лекции проводятся очно по пятницам с 1810 до 1930 в ауд. G603. Ссылка на трансляцию лекций.
Семинарист: Павел Соколов, ТГ: @TurtlePU.
Учебный ассистент: Ислам Талипов, ТГ: @lishy2.
Текущая успеваемость
[Таблица].
Setting up
- Если вы пользуетесь Windows, установите WSL2, если ещё не.
-
Установите ghcup — скачайте бинарный файл сами
либо введите одну любимую команду:
- MacOS:
brew install ghcup
- Arch-based distros:
yay -S ghcup-hs-bin
- WSL2, MacOS >= 10.13, Linux:
curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh
- Windows Powershell (cringe): Команда доступна по ссылке
- MacOS:
- Убедитесь, что путь до места установки
ghcup
содержится в$PATH
— запуститеghcup list
. -
Установите
recommended
версии компилятора, пакетного менеджера и языкового сервера:ghcup install ghc recommended ghcup install cabal recommended ghcup install hls recommended
- Убедитесь, что путь
~/.ghcup/bin
содержится в$PATH
. При необходимости добавьте этот путь сами. -
Создайте символические ссылки на установленные версии программ:
ghcup set ghc recommended ghcup set cabal recommended ghcup set hls recommended
-
Настройте LSP client в своей любимой среде разработки:
- Для VS Code есть плагин, он должен обнаружить HLS самостоятельно.
- В NeoVim настройте nvim-lspconfig, он знает про HLS.
- Инструкцию для других сред можно найти здесь.
- Опционально — установите Hoogle локально:
cabal install hoogle
-
Допишите в файл
~/.ghci
следующее::def hoogle \x -> return $ ":!hoogle \"" ++ x ++ "\"" :def hdoc \x -> return $ ":!hoogle --info \"" ++ x ++ "\""
- Теперь можно пользоваться Hoogle прямо из ghci с помощью команд
:hoogle
и:hdoc
Листки и код для семинаров
- Лекции и семинары Е. Дашкова в 22/23 учебном году
Домашние задания
Домашнее задание выдается частями приблизительно раз в две недели; при выдаче каждой части указывается срок ее сдачи. Все задания письменные.
Каждая задача оценивается дробным значением от 0 до 1 балла. Задачи делятся на «обыкновенные» и «повышенной сложности». Все задания в целом оцениваются числом:
ДЗ = 8 * обыкн + 2 * сложн, где
обыкн = (сумма баллов, полученных за обыкновенные задачи) / (количество обыкновенных задач в домашнем задании),
сложн = (сумма баллов, полученных за задачи повышенной сложности) / (количество задач повышенной сложности в домашнем задании).
Преподаватель вправе потребовать от любого студента «защитить» (т.е. изложить устно, отвечая на возникающие при этом вопросы) решение любой из зачтенных этому студенту задач ДЗ. В случае неуспешной защиты, баллы за соответствующую часть ДЗ могут быть снижены, в т.ч. до нуля.
Контрольная работа
Письменная Контрольная работа проводится в начале второго модуля. Допускается использование собственных записей студента и явно разрешенных локальных справочных систем.
Каждая задача контрольной работы оценивается дробным значением от 0 до 1 балла. Контрольная оцениваются значением:
КР = 10 * (сумма полученных баллов за все задачи) / (количество задач в контрольной работе).
Итоговый экзамен
Самостоятельная работа (мини-проект)
Материалы
Записи лекций Е. В. Дашкова в МФТИ (Youtube)
Записи лекций Е. В. Дашкова в МФТИ (Rutube; не все еще сюда переехало)
Базовые ресурсы
Стандартная библиотека языка Haskell на Hackage
Книги и статьи
Learn You a Haskell for Great Good
Lectures on the Curry-Howard Isomorphism
Purely Functional Data Structures.
Нет в открытом доступе
Programming in Haskell by Graham Hutton
Basic Category Theory for Computer Scientists by Benjamin C. Pierce