План-проспект спецкурса "Математические основы функционального программирования"



Скачать 60.68 Kb.
Дата08.10.2012
Размер60.68 Kb.
ТипПлан-проспект

План-проспект спецкурса
“Математические основы функционального программирования”

Аннотация курса


Спецкурс для студентов-специалистов, читается в осеннем семестре.

Лекции читаются 24 часа.

Форма итогового контроля: устный экзамен с оценкой.

Авторы программы: Артём Гавриченков, Фёдор Сахаров

Лектор: Артём Гавриченков

Цели и задачи курса


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

Задачи изучения дисциплины:

  • сформировать представление о принципах, целях и задачах функционального программирования

  • сформировать основное представление о теоретических основах функциональной парадигмы программирования.

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


Требования к уровню освоения спецкурса:

По окончанию изучения спецкурса слушатель должен

  • знать:

    • лямбда-исчисление и комбинаторную логику

    • принцип ленивых вычислений

    • базовые принципы функционального программирования, операции над функциональными структурами данных

    • основы типизации функциональных ЯП

    • методы инкапсуляции побочных эффектов в “чистых” функциональных ЯП

    • элементы теории категорий

  • уметь:

    • решать математические задачи теории лямбда-исчисления

    • строить сложные типы данных на основе модели типов Хиндли-Милнера

    • реализовывать приложения на языке Haskell и платформе Glasgow Haskell Compiler

    • реализовывать приложения на основе ЯП императивной парадигмы с учётом опыта проектирования функциональных программ

№ п/п лекции

Наименование тем и разделов

Всего (часов)

Аудиторные занятия (часов)

1

Введение в декларативную парадигму программирования

1

1

2

Принципы и основы функционального программирования

1

1

3

Основы лямбда-исчисления

2

2

4

Основы комбинаторной логики

2

2

5

Элементы теории категорий и модель типизации Хиндли-Милнера

2

2

6

Язык Haskell и платформа GHC

16

16




ИТОГО

24

24



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


  1. Введение в декларативную парадигму программирования

    1. История развития языков программирования

    2. Предпосылки появления языков, эксплуатирующих декларативную парадигму

    3. Характеристика функциональной парадигмы программирования

  2. Принципы и основы функционального программирования

    1. Концепция функционального подхода к созданию программ

    2. Рекурсия

    3. Задачи функционального программирования

      1. Иллюстрация эффективности функционального подхода

    4. Проблемы абстракций функционального программирования и обзор их решений

  3. Основы лямбда-исчисления

    1. История лямбда-исчисления

    2. Основные понятия и определения

    3. Решение задач лямбда-исчисления

  4. Основы комбинаторной логики

    1. История комбинаторной логики

    2. Основные понятия и определения

    3. Сходства и различия модели лямбда-исчисления и комбинаторной логики

    4. Решение задач комбинаторной логики и трансляция лямбда-выражений в комбинаторные выражения

  5. Элементы теории категорий и модель Хиндли-Милнера

    1. Основы теории категорий.

    2. Элементы теории категорий в функциональных языках программирования.

    3. Модель типизации Хиндли-Милнера.

  6. Язык Haskell и платформа GHC

    1. Введение в язык Haskell – практическую реализацию модели функционального программирования.

    2. Типы языка Haskell

      1. Встроенные типы языка Haskell

      2. Построение сложных и рекуррентных типов

      3. Классы типов

      4. Модель типизации языка Haskell как реализация Тьюринг-полного языка программирования

    3. Управляющие конструкции языка Haskell

      1. Условные переходы

      2. Функции

      3. Сопоставление образцов, реализующих функцию

      4. Вызов функций и рекурсия

      5. Модули

    4. Практическое применение модели лямбда-исчислений и комбинаторной логики на языке Haskell

    5. Специфические особенности языка Haskell

      1. Ленивые вычисления

      2. Побочные эффекты и монады

      3. Исключения

    6. Система классов стандартной библиотеки Glasgow Haskell Compiler

    7. Решение практических задач на языке Haskell

      1. Решение модельных задач

      2. Иллюстрация решения типичных задач функционального программирования на языке Haskell и платформе GHC

        1. Эквивалентная трансформация программ

        2. Доказательство свойств программ (автоматическое доказательство теорем)

        3. Построение трансляторов ЯП



Список вопросов к экзамену


  1. История языков программирования. Предпосылки появления функциональных языков программирования. Примеры функциональных ЯП. История языка Haskell.

  2. Характеристика функционального программирования. Основные принципы и концепции. Рекурсия, ленивые вычисления, побочные эффекты, функции высших порядков.

  3. Характеристика функционального программирования. Основные задачи.

  4. Лямбда-исчисление. История, понятия и определения.

  5. Лямбда-исчисление. Язык Haskell как реализация аппарата лямбда-исчисления.

  6. Комбинаторная логика. История, поняти и определения.

  7. Комбинаторная логика. Взаимосвязь с аппаратом лямбда-исчисления. Реализация в языке Haskell.

  8. Элементы теории категорий. Понятия и определения.

  9. Модель типизации Хиндли-Милнера. Иллюстрация модели на примере аппарата классов типов языка Haskell.

  10. Язык Haskell. Типы и структуры данных. Встроенные типы данных.

  11. Язык Haskell. Типы и структуры данных. Сложные и рекуррентные типы данных.

  12. Язык Haskell. Типы и структуры данных. Модули.

  13. Язык Haskell. Типы и структуры данных. Типы данных стандартной библиотеки GHC.

  14. Язык Haskell. Типы и структуры данных. Реализация вычислений на основе аппарата классов типов.

  15. Язык Haskell. Управляющие конструкции. Вызов функций, условные переходы, ключевые слова. Рекурсия.

  16. Язык Haskell. Управляющие конструкции. Построение функций. Сопоставление образцов. Рекурсия.

  17. Язык Haskell. Композиция функций.

  18. Язык Haskell. Механизм вычисления выражений. Ленивые вычисления.

  19. Язык Haskell. Механизм вычисления выражений. Монады.

  20. Язык Haskell. Механизм вычисления выражений. Исключения.

  21. Задачи функционального программирования. Эквивалентная трансформация программ

  22. Задачи функционального программирования. Доказательство свойств программ (автоматическое доказательство теорем)

  23. Задачи функционального программирования. Построение трансляторов ЯП


Список литературы


[1] Bryan O'Sullivan, Don Stewart, and John Goerzen Real World Haskell [HTML] (http://book.realworldhaskell.org/read/)

[2] Hindley J. R., Lercher H., Seldin J. Itroduction to combinatory logic.Cambridge Press 1972.

[3] Душкин Р.В. Функциональное программирование на языке Haskell. – ДМК пресс, 2006.

[4] Душкин Р.В. Справочник по синтаксису языка Haskell. – ДМК пресс, 2006.

[5] Church A. The calculii of lambda-conversion. Princeton, ed 2 – 1951.

[6] Adámek, Jiří; Herrlich, Horst; Strecker, George E. (1990). Abstract and concrete categories. John Wiley & Sons. http://katmat.math.uni-bremen.de/acc/acc.htm.

Похожие:

План-проспект спецкурса \"Математические основы функционального программирования\" iconПрограмма спецкурса «Математические основы информатик и»
Рабочая программа спецкурса «Математические основы информатики» для 8-9 классов разработана на основе примерной программа основного...
План-проспект спецкурса \"Математические основы функционального программирования\" iconВопросы к междисциплинарному экзамену
Математические основы функционального программирования: лямбда-исчисление А. Черча и теория рекурсивных функций: основные понятия...
План-проспект спецкурса \"Математические основы функционального программирования\" iconМатематические основы программирования Раздел Техника программирования
Здесь представлен план, порядок изучаемых тем, который поможет вам научиться решать олимпиадные задачи или найти пробелы в своих...
План-проспект спецкурса \"Математические основы функционального программирования\" iconВведение в лямбда-исчисление
Математические основы функционального программирования: лямбда-исчисление А. Черча и теория рекурсивных функций: основные понятия...
План-проспект спецкурса \"Математические основы функционального программирования\" iconФункциональное и логичеcкое программирование
Целью дисциплины является освоение студентами теоретических основ функционального (ФП) и логического программирования (ЛП) и приобретение...
План-проспект спецкурса \"Математические основы функционального программирования\" icon16 марта в 17. 45 аудитория 402 главного корпуса Программа курса Основы программирования
Основы программирования. Методика программирования во Flash. Носители кода. Язык Action Script (AS), история, корни. Окно Actions....
План-проспект спецкурса \"Математические основы функционального программирования\" icon1. История функционального программирования. Основные свойства функциональных языков
...
План-проспект спецкурса \"Математические основы функционального программирования\" iconВопросы к экзамену по курсу «Функциональное и логическое программирование»
Особенности функционального программирования, его отличие от императивного программирования. Понятие функции
План-проспект спецкурса \"Математические основы функционального программирования\" iconОтветы на экзаменационные вопросы интернет-курсов интуит (intuit): 291. Основы функционального программирования
В каких из перечисленных форм необходимость вычислять те или иные подвыражения зависит от значений переменных?
План-проспект спецкурса \"Математические основы функционального программирования\" iconФорум «функциональные языки»
Единого мнения на тему точного определения функционального языка не существует, в том числе и среди сообщества функционального программирования....
Разместите кнопку на своём сайте:
ru.convdocs.org


База данных защищена авторским правом ©ru.convdocs.org 2016
обратиться к администрации
ru.convdocs.org