наверх

Функциональное программирование: специальный курс

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

В курсе изучаются продвинутые приемы функционального программирования и практические вопросы программирования на языке Haskell. Этот язык относится к «чистым» функциональным языкам и предоставляет в распоряжение программиста уникальные инструменты, позволяющие элегантно и эффективно решать самые сложные задачи. Курс содержит видеолекции, сопровождаемые опросами в виде тестов по текущему материалу, и лабораторные работы. Материал курса рассчитан на 10 недель обучения.

О курсе

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

Формат

В состав курса входят видео-лекции, интерактивные задания и проверочные задания. Длительность курса составляет 10 недель. Трудоемкость курса – 4 зачетных единицы. Средняя недельная нагрузка на обучающегося – 14-15 часов.

Основной учебник по курсу:

Дополнительные материалы:

Информационные ресурсы на английском:

  • Harold Abelson, Gerald Sussman, Julie Sussman "Structure and Interpretation of Computer Programs", 1996, 2nd ed., MIT Press
  • Simon Peyton Jones et al. "The Haskell 98 Language Report", 2002, https://www.haskell.org/onlinereport
  • Bryan O’Sullivan, John Goerzen, Don Stewart "Real World Haskell", 2008, O’Reilly.

Требования

Желательным (но не обязательным) условием для успешного освоения курса является прохождение курса «Функциональное программирование: базовый курс». В процессе обучения активно используется компилятор Haskell, поддерживающий стандарт Haskell 98 (например, GHC: https://www.haskell.org/ghc/).

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

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

1. Введение в функциональное программирование
2. Основные сведения о языке Haskell
3. Рекурсия и функции высшего порядка
4. Абстрактные типы данных и система типов языка Haskell
5. Функторы, моноиды и монады
6. Ввод-вывод, монада IO и библиотеки
7. Комонады, стрелки и линзы
8. Ленивые вычисления и персистентные структуры данных
9. Параллельные вычисления и транзакционная память

В курсе имеется два типа дедлайна (предельного срока выполнения оценивающих мероприятий):

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

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

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

Способность решать задачи прикладного программирования с использованием инструментария языка программирования Haskell (РО-1).

Формируемые компетенции

  09.03.01 Информатика и вычислительная техника  

ПК-5

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

РО-1

ПК- 12

Способность разрабатывать средства реализации информационных технологий (методические, информационные, математические, алгоритмические, технические и программные)

РО-1

  09.03.02 Информационные системы и технологии  

ПК-11

Способность к проектированию базовых и прикладных информационных технологий

РО-1

ПК-12

Способность разрабатывать средства реализации информационных технологий (методические, информационные, математические, алгоритмические, технические и программные)

РО-1

  09.03.03 Прикладная информатика  

ПК-2

Способность разрабатывать, внедрять и адаптировать прикладное программное обеспечение

РО-1

ПК-8

Способность программировать приложения и создавать программные прототипы решения прикладных задач

РО-1

  09.03.04 Программная инженерия  

ОПК-3

Готовность применять основы информатики и программирования к проектированию, конструированию и тестированию программных продуктов

РО-1

ПК-1

Готовность применять основные методы и инструменты разработки программного обеспечения

РО-1

  10.04.01 Информационная безопасность  

ПК-2

Способность проектировать системы управления информационной безопасностью с учетом технических и технологических особенностей объектов защиты

РО-1

ПК-5

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

РО-1

  • 10 недель

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

  • от 14 до 15 часов в неделю

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

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

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

Гирик Алексей Валерьевич

Кандидат технических наук
Должность: доцент кафедры безопасности киберфизических систем

Похожие курсы