Курс “Функциональное программирование на F#” опубликован в репозитории учебных курсов Майкрософт
По следам моего выступления на конференции “Современные технологии и IT-образование” в репозиторий учебных курсов Майкрософт выложены слайды по курсу “Функциональное программирование на языке F# ”, который я прочитал в прошлом семестре на ФИВТ МФТИ. В курс на текущий момент входят следующие лекции:
- Что такое функциональное программирование – дается определение и основные отличия функционального программирования от других парадигм, кратко обсуждается понятие парадигм программирования, применение функционального программирования в реальной жизни, перспективы использования функциональных языков в индустриальном программировании. Также в этой лекции приводится несколько увлекательных примеров на языке F#, в т.ч. построение множества Мандельброта.
- Основы функционального программирования – рассматриваются основные понятия функционального программирования с примерами на F#: редукция, каррирование, функциональные типы, рекурсия. Приводится пример построения программы рисования графика функции в функциональном стиле.
- Рекурсивные структуры данных – списки – рассматриваются основные операции над списками в функциональных языках на примере F#, обсуждается представление матриц и массивов.
Скачать лекции 1-3 - Рекурсивные структуры данных – деревья – обсуждаются вопросы представления двоичных деревьев и деревьев общего вида в функциональных языках на примере F#.
- Аппликативная модель вычислений. Лямбда-исчисление и комбинаторная логика – рассматриваются теоретические основы функционального программирования: лямбда-исчисление и комбинаторная логика. Дается формулировка теоремы Чёрча-Россера и стандартизации (без доказательства), вводятся понятия нормального и аппликативного порядка редукции и комбинатора неподвижной точки.
Скачать лекции 4-5 - Лямбда-исчисление как язык программирования – рассматривается, как можно построить язык программирования на основе чистого лямбда-исчисления, введением чисел (нумералов), логических констант и условного оператора. Вводятся понятия ленивых и энергичных вычислений, мемоизации, замыканий, рассматриваются генераторы и последовательности. В заключении приводится пример реализации интерпретатора машины Тьюринга на F#.
- Семантика языков функционального программирования и типизация – описывается построение систем типов для лямбда-исчисления. Вводится понятие семантики языка программирование и описывается денотационная семантика основных конструкций функционального языка. Приводятся примеры доказательства функциональных программ.
Скачать лекции 6-7 - Реализация языков функционального программирования – рассматриваются различные подходы к реализации функциональных языков: eval/apply-интерпретаторы, абстрактные машины (SECD, КАМ), редукция графов. Приводятся примеры реализации энергичного и ленивого eval/apply-интерпретатора на F# и реализация интерпретатора SECD-машины. Также кратко описываются подходы к лексическому и синтаксическому анализу с примерами синтаксического анализатора методом рекурсивного спуска и на базе fslex/fsyacc. После этой лекции должно придти понимание того, как можно реализовать свой собственный модельный функциональный язык (90% кода содержится в примерах) .
- Метапрограммирование и параллельное программирование – рассматриваются особенности языка F#, связанные с метопрограммированием: Quotations и Computational Expressions, даётся понятие монады и реализация монады недетерминированных вычислений через Computational Expressions с примерами её использования для решения логических задач с перебором. Рассматриваются параллельные и асинхронные вычисления на основе Asynchronous Workflows.
Скачать лекции 8-9
В ближайшее время также планируется выход аналогичного видео-курса в рамках интернет-университета информационных технологий ИНТУИТ.РУ. Тем временем я буду признателен вам за возможные советы по улучшению курса, за замечания и обсуждения вопросов преподавания функционального программирования в целом. Пишите в комментарии к этой записи, на почту dmitryso(sobaka)microsoft(dot)com или в твиттер.
Comments
Anonymous
August 11, 2011
Ссылки на скачивание лекций не работаютAnonymous
November 17, 2011
Курс есть здесь - www.intuit.ru/.../funcprogAnonymous
November 03, 2012
Восстановите ссылку, курс нужен в печатном виде.Anonymous
November 03, 2012
Врете!!! "...опубликован в репозитории учебных курсов Майкрософт..." ссылки не работают ((