Опубликована: 05.04.2011 | Уровень: для всех | Стоимость: 490.00 руб. | Длительность: 14 дней
Курс знакомит слушателей с парадигмой функционального программирования, в которой решение задач сводится к описанию функций, перерабатывающих некоторые входные данные в выходные и строящихся из более простых функций на основе принципов функциональной абстракции и аппликации. Рассматриваются теоретические основы функционального программирования (лямбда-исчисление, комбинаторная логика, вопросы вычислимости), на примере функционального подхода дается представление о некоторых теоретических разделах компьютерных наук (семантика языков программирования, доказательство программ). С другой стороны курс содержит значительную практическую составляющую, основанную на промышленном языке программирования F# (входит в состав Microsoft Visual Studio 2010), рассматриваются вопросы использования функциональных языков для построения компиляторов, грамматического разбора и т.д.
Курс будет интересен как практикующим программистам и студентам, изучившим основы компьютерных наук, так и математикам. Для программистов на императивных языках знакомство с функциональным подходом позволит расширить сознание, перейти на более чистый (свободный от побочных эффектов) стиль программирования с более высоким уровнем абстракции, научиться эффективно использовать новые возможности современных императивных языков (LINQ, лямбда-выражения и т.д.). Для математиков, функциональное программирование может служить безболезненным введением в компьютерные науки, поскольку в рамках курса мы практически «с нуля» строим (начиная от математических основ, вплоть до реализации интерпретатора/компилятора и описания формальной семантики) язык программирования на базе лямбда-исчисления – раздела дискретной математики.
Цель: Познакомить слушателя с основами функционального программирования как дисциплины, находящейся на стыке программирования и дискретной математики; дать, с одной стороны, практические навыки функционального программирования на используемом на практике языке F#, а с другой – показать связь между теоретическими главами computer science и программированием, осветив некоторые теоретические проблемы информатики (вычислимость, семантика языков программирования, доказательство программ) и показав, как они решаются в функциональном подходе.
Необходимые знания: Строго говоря, предварительных знаний для курса не требуется – возможно изучение программирования, начиная с функционального подхода. Однако более традиционным подходом является изучение основ программирования на базе императивного языка, и затем изучение функционального программирования как альтернативной парадигмы. Курс в большей степени ориентирован именно на такой подход.

План занятий

ЗанятиеЗаголовок <<Дата изучения
-
Лекция 1
-
Лекция 2
-
Лекция 3
-
Лекция 4
Функциональное программирование в реальной жизни
Построение множества Мандельброта. Функциональное программирование в реальной жизни. Пример визуализации на F#. Рекомендуемая литература. Информация о курсе.
-
Тест 1
12 минут
-
Лекция 5
-
Лекция 6
-
Лекция 7
-
Тест 2
12 минут
-
Лекция 8
-
Лекция 9
Примеры работы со списками
Примеры работы со списками. Перестановки. Вычисление простых чисел. Работа с изображениями. Синтаксис порождения списка list comprehension.
-
Лекция 10
-
Лекция 11
-
Тест 3
21 минута
-
Лекция 12
-
Лекция 13
-
Тест 4
12 минут
-
Лекция 14
Введение в л-исчисление
Основные модели вычислений. Синтаксис л-исчисления. Чистое и прикладное л-исчисление. Преобразования л-выражений. Редукция. Бетта-редукция и замена переменной.
-
Лекция 15
-
Лекция 16
-
Тест 5
24 минуты
-
Лекция 17
-
Лекция 18
-
Лекция 19
-
Лекция 20
-
Тест 6
12 минут
-
Лекция 21
-
Лекция 22
-
Лекция 23
-
Тест 7
18 минут
-
Лекция 24
-
Лекция 25
-
Лекция 26
-
Лекция 27
-
Тест 8
9 минут
-
Лекция 28
-
Лекция 29
-
Лекция 30
-
Тест 9
12 минут
-
5 часов
-