наверх

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

Дату старта объявим позже

Дата начала записи на курс еще не объявлена

  • 7 недель

    длительность курса

  • около 6 часов в неделю

    понадобится для освоения

  • 3 зачётных единицы

    для зачета в своем вузе

Курс является введением в функциональное программирование с использованием языка программирования F# - современного мультипарадигмального языка, основанного на платформе Microsoft .NET. Цель курса – с одной стороны, понять базовые принципы функционального программирования, с другой – освоить практический инструмент, который можно будет сразу же начать применять в практических проектах. Именно поэтому в качестве базового языка программирования был выбран F# - он, как любой энергичный язык, проще в освоении, для него имеются удобные инструменты (Visual Studio, Xamarin Studio, TryFsharp.org), а кроме того программы и библиотеки на F# легко встраиваются в любые существующие .NET проекты, что делает язык легко применимым на практике.

О курсе

В курсе изучаются функциональные возможности F#, на примерах изучаются характерные для функционального программирования структуры данных, рассматриваются реактивное программирование, монадические вычисления и их применение для реализации параллельного и асинхронного программирования. Более глубокие теоретические основы функционального программирования (лямбда-исчисление, комбинаторная логика, реализация функциональных языков, теория категорий) в курсе не затрагиваются, и будут положены в основу более продвинутого теоретического курса.

Формат

В состав курса входят видео-лекции и упражнения. Длительность курса составляет 7 недель. Средняя недельная нагрузка на обучающегося – 6 часов.

1. Сошников Д.В. Функциональное программирование на языке F#. – М.: ДМК Пресс, 2011.

2. К. Смит. Программирование на F#. – М.: Символ-Плюс, 2011. (перевод C. Smith,

3. Programming F#: A comprehensive guide for writing simple code to solve complex problems. O’Reilly, 2010)

4. Филд А., Харрисон П. Функциональное программирование. – М.: Мир, 1993.

5. Harrison, J. Introduction to Functional Programming. Lecture Notes, Cambridge University, 1997.

6. D.Syme, A.Granicz, A.Cisternio. Expert F# 4.0. A-Press, 2015

7. J.Harrop, F# for Scientists, Wiley, 2008.

8. E. Chailloux, P. Manoury, B.Pagano. Разработка программ с помощью Objective Caml. O’Reilly. Русский перевод: http://shamil.free.fr/comp/ocaml/

Требования

Для изучения курса желательны навыки программирования и знание основных алгоритмов и структур данных, хотя, строго говоря, возможно изучение функционального программирования «с нуля». На компьютере должно быть установлена одна из следующих бесплатных сред разработки: Visual Studio 2015 Community Edition (с установленной поддержкой F#) – рекомендуется для компьютеров на базе ОС Windows Xamarin Studio – рекомендуется для компьютеров на базе MaxOS X Также возможно (но не очень удобно) будет использовать одно из следующих средств: Сайт http://tryfsharp.org, http://tryfs.net для исполнения F#-кода онлайн Visual Studio Code + пакет ionide Компилятор командной строки + Emacs Подробнее про все варианты установки F# можно прочитать на сайте сообщества http://fsharp.org.

Программа курса

В курсе рассматриваются следующие темы:

1. Введение в функциональное программирование. Решение задач путем композиции функций.

2. Функции, типы и рекурсия. Комбинаторы. Хвостовая рекурсия.

3. Алгебраические типы данных. Списки.

4. Функциональные структуры данных. Деревья. Деревья поиска. Функциональная очередь. Зипперы на списках и на деревьях.

5. Приёмы функционального программирования. Замыкания. Генераторы, последовательности и потоки. Корекурсия. Мемоизация.

6. Монады и монадические выражения. Монады Maybe, продолжения, асинхронных и параллельных вычислений. Монадические парсеры.

7. Активные шаблоны. Реактивное функциональное программирование. Квотирование и метапрограммирование. Провайдеры типов.

Каждая тема предполагает изучение в течение одной недели.

Результаты обучения

Понимание принципов функционального программирования, способность осуществить функциональную декомпозицию задачи и построить чисто функциональное решение.

Знание функциональных структур данных и основных используемых абстракций, умение применять их в решении практических задач.

Умение применять F# для решения широкого спектра практических задач обработки и исследования данных.