ФП 5SE осень 2017 — различия между версиями

Материал из SEWiki
Перейти к: навигация, поиск
(Добавил ссылку на книжку Введение в функциональное программирование)
(Материалы с занятий и домашние задания:)
 
(не показано 26 промежуточных версий 4 участников)
Строка 16: Строка 16:
 
> stack build</nowiki>
 
> stack build</nowiki>
 
Здесь classwork – название проекта (и, как следствие, папки с проектом), а simple – template, по которому сгенерировать проект (по умолчанию используется другой, где проект разбивается на приложение, библиотеку и тесты; нам это сейчас не нужно)
 
Здесь classwork – название проекта (и, как следствие, папки с проектом), а simple – template, по которому сгенерировать проект (по умолчанию используется другой, где проект разбивается на приложение, библиотеку и тесты; нам это сейчас не нужно)
 +
 +
Дока с планами всех практик: https://docs.google.com/document/d/10oe6QO28qXiBBOdsYEc2Qu6hSBOaSwQrT2AMyLePwvk/edit?usp=sharing
 +
 +
===Код с пар===
 +
# 11.10.2017: https://gist.github.com/projedi/490e8c76db5cd09c7838e4c62fa6eefc
 +
# 18.10.2017: https://gist.github.com/projedi/36ef298f9a457cac5ecce3d9b46110d4
 +
# 8.11.2017: https://gist.github.com/projedi/f436148804bbf8f3891b5d73239502a9
 +
# 15.11.2017: https://gist.github.com/projedi/e78d1ab7de3904ad0f417de189c11b0c
 +
# 22.11.2017: https://gist.github.com/projedi/0cdb8d6f2af6854192037769cdee644d
 +
# 29.11.2017: https://gist.github.com/projedi/8320e35887c95b06f729cabe9eaedc46
 +
# 13.12.2017: https://gist.github.com/projedi/36f57d713a76fcfe386fb390fb1b6b85
 +
# 20.12.2017: https://gist.github.com/projedi/50a00d08d0f9805a3b394d227f9b3b2b
  
 
===Домашние задания===
 
===Домашние задания===
Строка 24: Строка 36:
 
# https://yadi.sk/i/lrZGFUjT3N4vts дедлайн: 29.09.2017
 
# https://yadi.sk/i/lrZGFUjT3N4vts дедлайн: 29.09.2017
 
# https://stepik.org/lesson/57527/step/1?unit=35283 дедлайн: 6.10.2017
 
# https://stepik.org/lesson/57527/step/1?unit=35283 дедлайн: 6.10.2017
 +
# https://stepik.org/lesson/57528/step/1?unit=35284 дедлайн: 13.10.2017
 +
# https://stepik.org/lesson/57530/step/1?unit=35286  дедлайн: 20.10.2017
  
 
== Практика Жаворонков ==
 
== Практика Жаворонков ==
Строка 38: Строка 52:
 
* [[Медиа:Sem02.pdf|Семинар и домашнее задание 2]] ('''Дедлайн(мягкий): 19.09.2017 23:59''')
 
* [[Медиа:Sem02.pdf|Семинар и домашнее задание 2]] ('''Дедлайн(мягкий): 19.09.2017 23:59''')
 
* [[Медиа:Sem03.pdf|Семинар и домашнее задание 3]] ('''Дедлайн(мягкий): 26.09.2017 23:59''')
 
* [[Медиа:Sem03.pdf|Семинар и домашнее задание 3]] ('''Дедлайн(мягкий): 26.09.2017 23:59''')
 +
* Код с пары 27.09 куда-то потерялся
 +
* [[Медиа:Sem05.zip|Код с пары 04.10]]
 +
* [[Медиа:Sem06.zip|Код с пары 11.10]]
 +
* [[Медиа:Sem07.zip|Код с пары 18.10]]
 +
* [[Медиа:Sem08.zip|Код с пары 25.10]]
 +
* [[Медиа:Sem09.zip|Код с пары 8.11]]
 +
* [[Медиа:Sem10.zip|Код с пары 15.11]]
 +
* [[Медиа:Sem11.zip|Код с пары 22.11]]
 +
* [[Медиа:Sem12.zip|Код с пары 29.11]]
 +
* [[Медиа:Sem13.zip|Код с пары 6.12 -- заготовка]]
 +
* [[Медиа:Sem14.zip|Код с пары 13.12]]
 +
* [[Медиа:Sem15.zip|Код с пары 20.12]]
  
 
=== Правила игры и прочее ===
 
=== Правила игры и прочее ===
Строка 44: Строка 70:
 
Первые три домашних задания сдаются мне на почту. Формат, в котором вы присылаете ваши решения не очень принципиален, однако предпочтение отдается чему-то адекватному, например pdf или Markdown(plain text в целом тоже котируется, а вот ссылку на картинку, лежащую где-нибудь на depositfiles присылать лучше не стоит).  
 
Первые три домашних задания сдаются мне на почту. Формат, в котором вы присылаете ваши решения не очень принципиален, однако предпочтение отдается чему-то адекватному, например pdf или Markdown(plain text в целом тоже котируется, а вот ссылку на картинку, лежащую где-нибудь на depositfiles присылать лучше не стоит).  
  
Начиная с четвертого домашнего задания вы будете писать код на хаскеле и дальше будет видно, будете ли вы присылать мне .hs-исходники, или мы придумаем еще какой-либо формат сдачи. Это подводит нас к мысли, что вам понадобится поставить некоторый тулчейн. Как это сделать -- я расскажу позже(или вам расскажут об этом на лекции).
+
Начиная с четвертого домашнего задания вы будете писать код на хаскеле и домашние задания будут сдаваться в приватный курс на степике. Там они будут проверяться тестирующей системой и я смогу смотреть ваши посылки. По мере прочтения лекций в курсе будут открываться новые модули с задачами. Модуль открывается сразу после пары и закрывается в начале следующей.
  
 
==== Дедлайны ====
 
==== Дедлайны ====
Строка 54: Строка 80:
 
Что бы допуститься до экзамена вам сперва необходимо получить зачет по практике. Для этого вам нужно сделать несколько вещей:
 
Что бы допуститься до экзамена вам сперва необходимо получить зачет по практике. Для этого вам нужно сделать несколько вещей:
 
* Сдать все теоретические домашние задания(ими считаются первые три)  
 
* Сдать все теоретические домашние задания(ими считаются первые три)  
* Получить не менее TBD от суммы баллов за теоретические и практические домашние задания без учета дополнительных заданий
+
* Получить не менее 75% от суммы баллов за теоретические и практические домашние задания без учета дополнительных заданий
 
* Сдать алгоритм вывода типов(ближе к концу семестра)
 
* Сдать алгоритм вывода типов(ближе к концу семестра)
  
Строка 60: Строка 86:
  
 
== Дополнительные материалы ==  
 
== Дополнительные материалы ==  
Небольшая запись с объяснением Numeric Typeclasses и их красивой диаграммой:
+
=== Полезные ссылки ===
 
+
* [https://gist.github.com/CMCDragonkai/fab0980b3325e8a788c9 Небольшая запись с объяснением Numeric Typeclasses и их красивой диаграммой.]
https://gist.github.com/CMCDragonkai/fab0980b3325e8a788c9
+
* [http://dev.stephendiehl.com/editor_talk.html Configure your ghci]
 +
* [https://habrahabr.ru/post/183150/ Функторы, аппликативные функторы и монады на пальцах]
 +
=== Книги ===
  
---
+
* [http://www.nsu.ru/xmlui/bitstream/handle/nsu/8874/Harrison.pdf Введение в функциональное программирование, John Harrison]
  
[http://www.nsu.ru/xmlui/bitstream/handle/nsu/8874/Harrison.pdf Введение в функциональное программирование, John Harrison]
+
* [http://inis.jinr.ru/sl/vol2/Mathematics/%D0%9C%D0%B0%D1%82.%D0%BB%D0%BE%D0%B3%D0%B8%D0%BA%D0%B0/%D0%91%D0%B0%D1%80%D0%B5%D0%BD%D0%B4%D1%80%D0%B5%D0%B3%D1%82,_%D0%9B%D0%B0%D0%BC%D0%B1%D0%B4%D0%B0-%D0%B8%D1%81%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5,1985.pdf Ламбда-исчисление, Барендрегт]

Текущая версия на 13:03, 21 декабря 2017

Лекции

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

Практика Шабалин

Начиная с 4-го занятия потребуются компьютеры. На них нужно поставить stack: https://docs.haskellstack.org/en/stable/README/#how-to-install

Еще желательно заранее создать рабочую папку с проектом (чтобы stack автоматом скачал необходимые библиотеки и компилятор):

> stack new classwork simple
> cd classwork
> stack setup
> stack build

Здесь classwork – название проекта (и, как следствие, папки с проектом), а simple – template, по которому сгенерировать проект (по умолчанию используется другой, где проект разбивается на приложение, библиотеку и тесты; нам это сейчас не нужно)

Дока с планами всех практик: https://docs.google.com/document/d/10oe6QO28qXiBBOdsYEc2Qu6hSBOaSwQrT2AMyLePwvk/edit?usp=sharing

Код с пар

  1. 11.10.2017: https://gist.github.com/projedi/490e8c76db5cd09c7838e4c62fa6eefc
  2. 18.10.2017: https://gist.github.com/projedi/36ef298f9a457cac5ecce3d9b46110d4
  3. 8.11.2017: https://gist.github.com/projedi/f436148804bbf8f3891b5d73239502a9
  4. 15.11.2017: https://gist.github.com/projedi/e78d1ab7de3904ad0f417de189c11b0c
  5. 22.11.2017: https://gist.github.com/projedi/0cdb8d6f2af6854192037769cdee644d
  6. 29.11.2017: https://gist.github.com/projedi/8320e35887c95b06f729cabe9eaedc46
  7. 13.12.2017: https://gist.github.com/projedi/36f57d713a76fcfe386fb390fb1b6b85
  8. 20.12.2017: https://gist.github.com/projedi/50a00d08d0f9805a3b394d227f9b3b2b

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

Табличка с результатами: https://docs.google.com/spreadsheets/d/1qnKuNN3FTIZqInoWOL0i02NeEv3mT4XwPp8_HUMsDes/edit?usp=sharing Инвайт на курс в степике: https://stepik.org/invitation/01319ce7dc3fe58dc06457cf4ed7c029beacd70e/

  1. https://yadi.sk/i/ocg7lzsF3Mjmap дедлайн: 15.09.2017
  2. https://yadi.sk/i/YGMNMCES3Mr3Bc дедлайн: 22.09.2017
  3. https://yadi.sk/i/lrZGFUjT3N4vts дедлайн: 29.09.2017
  4. https://stepik.org/lesson/57527/step/1?unit=35283 дедлайн: 6.10.2017
  5. https://stepik.org/lesson/57528/step/1?unit=35284 дедлайн: 13.10.2017
  6. https://stepik.org/lesson/57530/step/1?unit=35286 дедлайн: 20.10.2017

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

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

Контакты:

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

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

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

Первые три домашних задания сдаются мне на почту. Формат, в котором вы присылаете ваши решения не очень принципиален, однако предпочтение отдается чему-то адекватному, например pdf или Markdown(plain text в целом тоже котируется, а вот ссылку на картинку, лежащую где-нибудь на depositfiles присылать лучше не стоит).

Начиная с четвертого домашнего задания вы будете писать код на хаскеле и домашние задания будут сдаваться в приватный курс на степике. Там они будут проверяться тестирующей системой и я смогу смотреть ваши посылки. По мере прочтения лекций в курсе будут открываться новые модули с задачами. Модуль открывается сразу после пары и закрывается в начале следующей.

Дедлайны

На вики я пишу мягкий дедлайн до которого мне можно присылать решения, и я постараюсь ответить и, в случае чего, вы можете прислать мне исправления. Жесткий дедлайн, после которого я не смотрю решения -- начало пары. Если вы прислали решение после мягкого дедлайна, то я постараюсь ответить вам в течение дня, но не готов гарантировать, что буду принимать исправления. Решения присланные после жесткого дедлайна -- не оцениваются.

Зачет

Что бы допуститься до экзамена вам сперва необходимо получить зачет по практике. Для этого вам нужно сделать несколько вещей:

  • Сдать все теоретические домашние задания(ими считаются первые три)
  • Получить не менее 75% от суммы баллов за теоретические и практические домашние задания без учета дополнительных заданий
  • Сдать алгоритм вывода типов(ближе к концу семестра)

Если что-то из этих пунктов не выполняется, то мы решаем этот вопрос в индивидуальном порядке.

Дополнительные материалы

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

Книги