Функциональное программирование 24-25 — различия между версиями

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
(Контрольная работа)
(Домашние задания)
Строка 74: Строка 74:
 
* [https://github.com/edashkov/hse-fp-22 Лекции и семинары] Е. Дашкова в 22/23 учебном году
 
* [https://github.com/edashkov/hse-fp-22 Лекции и семинары] Е. Дашкова в 22/23 учебном году
  
== Домашние задания ==
+
== Домашнее заданее ==
 
Домашнее задание выдается частями приблизительно раз в две недели; при выдаче каждой части указывается срок ее сдачи. Все задания письменные.
 
Домашнее задание выдается частями приблизительно раз в две недели; при выдаче каждой части указывается срок ее сдачи. Все задания письменные.
  

Версия 20:45, 15 сентября 2024

Функциональное программирование

Курс по выбору для студентов 3 и 4 курса ФКН ВШЭ, 1 и 2 модуль 2024 г. Функциональное программирование (ФП) представляет собой теоретически изящный, выдержавший проверку временем на практике и оказавший заметное влияние на технологии программирования вообще подход к созданию ПО. Курс посвящен основам ФП в целом и популярного языка Haskell в частности. Попутно сообщаются начальные сведения из области лямбда-исчислений, теории типов, теории категорий.

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

Лектор: Евгений Дашков, ТГ: @edashkov, edashkov@gmail.com.

Лекции проводятся очно по пятницам с 1810 до 1930 в ауд. G603. Ссылка на трансляцию лекций.

Семинарист: Павел Соколов, ТГ: @TurtlePU.

Учебный ассистент: Ислам Талипов, ТГ: @lishy2.

Текущая успеваемость

[Таблица].

Setting up

  1. Если вы пользуетесь Windows, установите WSL2, если ещё не.
  2. Установите 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): Команда доступна по ссылке
  3. Убедитесь, что путь до места установки ghcup содержится в $PATH — запустите ghcup list.
  4. Установите recommended версии компилятора, пакетного менеджера и языкового сервера:
    ghcup install ghc recommended
    ghcup install cabal recommended
    ghcup install hls recommended
  5. Убедитесь, что путь ~/.ghcup/bin содержится в $PATH. При необходимости добавьте этот путь сами.
  6. Создайте символические ссылки на установленные версии программ:
    ghcup set ghc recommended
    ghcup set cabal recommended
    ghcup set hls recommended
  7. Настройте LSP client в своей любимой среде разработки:
    • Для VS Code есть плагин, он должен обнаружить HLS самостоятельно.
    • В NeoVim настройте nvim-lspconfig, он знает про HLS.
    • Инструкцию для других сред можно найти здесь.
  8. Опционально — установите Hoogle локально:
    1. cabal install hoogle
    2. Допишите в файл ~/.ghci следующее:
      :def hoogle \x -> return $ ":!hoogle \"" ++ x ++ "\""
      :def hdoc \x -> return $ ":!hoogle --info \"" ++ x ++ "\""
    3. Теперь можно пользоваться Hoogle прямо из ghci с помощью команд :hoogle и :hdoc

Листки и код для семинаров

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

Домашнее задание выдается частями приблизительно раз в две недели; при выдаче каждой части указывается срок ее сдачи. Все задания письменные.

Каждая задача оценивается дробным значением от 0 до 1 балла. Задачи делятся на «обыкновенные» и «повышенной сложности». Все задания в целом оцениваются числом:

ДЗ = 8 * обыкн + 2 * сложн, где

обыкн = (сумма баллов, полученных за обыкновенные задачи) / (количество обыкновенных задач в домашнем задании),

сложн = (сумма баллов, полученных за задачи повышенной сложности) / (количество задач повышенной сложности в домашнем задании).

Преподаватель вправе потребовать от любого студента «защитить» (т.е. изложить устно, отвечая на возникающие при этом вопросы) решение любой из зачтенных этому студенту задач ДЗ. В случае неуспешной защиты, баллы за соответствующую часть ДЗ могут быть снижены, в т.ч. до нуля.


Контрольная работа

Письменная Контрольная работа проводится в начале второго модуля. Допускается использование собственных записей студента и явно разрешенных локальных справочных систем.

Каждая задача контрольной работы оценивается дробным значением от 0 до 1 балла. Контрольная оцениваются значением:

КР = 10 * (сумма полученных баллов за все задачи) / (количество задач в контрольной работе).

Итоговый экзамен

Самостоятельная работа (мини-проект)

Материалы

Группа слушателей курса в ТГ

Материалы Е.В. Дашкова

Записи лекций Е. В. Дашкова в МФТИ (Youtube)

Записи лекций Е. В. Дашкова в МФТИ (Rutube; не все еще сюда переехало)

Базовые ресурсы

Сайт языка

Haskell Tool Stack

Информация про Cabal

Hoogle

Hackage

Стандартная библиотека языка Haskell на Hackage

Книги и статьи

Learn You a Haskell for Great Good

Real World Haskell

Basic Simple Type Theory

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

Оценки