Видео-курс: Функциональное программирование

На сайте Интернет университета информационных технологий опубликован видео-курс по функциональному программированию. Курс читает наш коллега, Дмитрий Сошников.

image

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

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

С другой стороны курс содержит значительную практическую составляющую, основанную на промышленном языке программирования F# (входит в состав Microsoft Visual Studio 2010), рассматриваются вопросы использования функциональных языков для построения компиляторов, грамматического разбора и т.д.

Содержание курса

  1. Определение и краткая история функционального программирования
  2. Абстракция и декомпозиция. Декларативное программирования
  3. Парадигмы программирования
  4. Функциональное программирование в реальной жизни
  5. Основные принципы функционального программирования
  6. Сопоставление с образцом. Рекурсия. Циклы
  7. Пример: построение графика 2D-функции
  8. Рекурсивные структуры данных. Списки
  9. Примеры работы со списками
  10. Хвостовая рекурсия. Порядковое представление списков и матриц
  11. Функциональные структуры данных
  12. Деревья
  13. Деревья выражений и деревья поиска. Продолжения
  14. Введение в л-исчисление
  15. Нормальный и аппликативный порядок редукции. Теорема Чёрча-Россера
  16. Описание рекурсивных функций. Комбинаторы и комбинаторная логика
  17. От л-исчисления к языку программирования
  18. Замыкания, генераторы и отложенные вычисления
  19. Последовательности и ленивые вычисления в F#. Мемоизация
  20. Пример: реализация машины Тьюринга
  21. Типизация в языках функционального программирования
  22. Формальная семантика языков функционального программирования
  23. Доказательство свойств программ
  24. Реализация функциональных языков. Eval-Apply-интерпретаторы
  25. Реализация функциональных языков: интерпретаторы и абстрактные машины
  26. Реализация функцоинальных языков: редукция графов, потоковые реализации
  27. Анализ искусственных и естественных языков
  28. Метапрограммирование: Quotations
  29. Императивное ядро в функциональных языках. Монады. Computational Workflows
  30. Асинхронные и параллельные вычисления

Курс доступен здесь http://www.intuit.ru/department/pl/funcprog/