наверх

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

 width=
14 часов
До конца записи
  • 10 недель

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

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

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

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

О курсе

Курс посвящен введению в функциональное программирование. В настоящее время интерес к функциональному программированию неуклонно растет, а функциональные языки программирования и заложенные в них концепции активно применяются в разработке программного обеспечения, работающего под высокой нагрузкой и предъявляющего повышенные требования к безопасности и масштабируемости. Многие приемы функционального программирования можно применять и в традиционных процедурных и объектно-ориентированных языках, особенно учитывая тот факт, что такие языки, как Java, C++, С#, Python, со временем заимствуют все больше и больше инструментов у чистых функциональных языков. Объяснение базовых концепций функционального подхода к написанию программ в курсе иллюстрируется с помощью одного из самых знаковых для функционального программирования языков – Lisp. По окончанию курса обучающиеся смогут применять базовые концепции фукнционального программирования при написании программ на любых языках, а также получат опыт использования языка Lisp для решения практических задач.

Формат

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

1. Siebel P. Practical Common Lisp. – Apress, 2005 (книга на сайте автора (англ.): http://www.gigamonkeys.com/book/, доступен бесплатный и свободно распространяемый перевод на русский язык: http://lisper.ru/pcl/pcl.pdf)
2. Абельсон Х., Сассман Дж. Структура и интерпретация компьютерных программ. – М: КДУ, 2010. – 609 с.
3. Graham P. On Lisp [Электронный ресурс]. – URL: http://paulgraham.com/onlisptext.html.
4. Abelson H., Sussman G., Sussman J. Structure and Interpretation of Computer Programs. – 2nd ed. – MIT Press, 1996.
5. Krishnamurthi S. Programming Languages: Application and Interpretation. – Brown University Press, 2003.
6. Steele G., Gabriel R. The evolution of Lisp / The second ACM SIGPLAN conference on History of programming languages. – New York: ACM. – С. 231–270.

Требования

Необходимым условием для освоения курса является знание основ вычислительной техники и дискретной математики. Для прохождения курса требуется компилятор Lisp, поддерживающий стандарт Common Lisp, например, GNU CLISP или SBCL (http://www.sbcl.org/platform-table.html).
Руководство по установке компилятора можно скачать здесь.

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

В курсе рассматриваются следующие темы:
1. Введение в функциональное программирование и формальные основания функционального программирования
2. Базовые синтаксические конструкции, типы, символы и списки в языке Lisp
3. Ввод и вывод в языке Lisp
4. Функции высших порядков
5. Рекурсия
6. Применяющие и отображающие функционалы
7. Замыкания и лямбда-выражения
8. Макросы в языке Lisp
9. Ленивые вычисления

Каждая тема предполагает изучение в течение одной недели. На 10-й неделе запланирован интернет-экзамен.

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

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

  • Умение решать задачи прикладного программирования с использованием базовых приемов функционального программирования (РО-1)
  • Умение применять язык программирования Lisp для написания программ (РО-2)

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

  • 02.04.03 Математическое обеспечение и администрирование информационных систем
    1. Готовность к использованию основных моделей информационных технологий и способов их применения для решения задач в предметных областях (ПК-2)
    2. Готовность к разработке моделирующих алгоритмов и реализации их на базе языков и пакетов прикладных программ моделирования (ПК-3)
  • 09.03.01 Информатика и вычислительная техника
    1. Способность разрабатывать модели компонентов информационных систем, включая модели баз данных и модели интерфейсов «человек – электронно-вычислительная машина» (ПК-1)
    2. Способность разрабатывать компоненты программно-аппаратных комплексов и баз данных, используя современные инструментальные средства и технологии программирования (ПК-2)
  • 09.03.02 Информационные системы и технологии
    1. Способность к проектированию базовых и прикладных информационных технологий (ПК-11)
    2. Способность к проектированию базовых и прикладных информационных технологий (ПК-12)
  • 09.03.03 Прикладная информатика
    1. Способность разрабатывать, внедрять и адаптировать прикладное программное обеспечение (ПК-2)
    2. Способность программировать приложения и создавать программные прототипы решения прикладных задач (ПК-8)
  • 09.03.04 Программная инженерия
    1. Готовность применять основные методы и инструменты разработки программного обеспечения (ПК-1)
    2. Владение навыками использования различных технологий разработки программного обеспечения (ПК-3)
  • 10.03.01 Информационная безопасность
    • Способность применять программные средства системного, прикладного и специального назначения, инструментальные средства, языки и системы программирования для решения профессиональных задач (ПК-3)

Сертификат

Сертификат будет выдан слушателям, выполнившим следующие условия:

  1. Достижение в срок до 6 ноября 2016 года включительно не менее 60% от максимального количества баллов по следующим работам:
    • Неделя 1 - "Лабораторный практикум 1";
    • Неделя 2 - "Лабораторный практикум 2";
    • Неделя 3 - "Лабораторный практикум 3";
    • Неделя 4 - "Лабораторный практикум 4".
  2. Оплата в срок до 8 ноября 2016 года включительно. К оплате допускаются только слушатели, выполнившие пункт 1.
  3. Достижение до жесткого дедлайна не менее 60% от максимального количества баллов по следующим работам:
    • Неделя 5 - "Промежуточный экзамен";
    • Неделя 10 - "Итоговый экзамен".
    Во время решения указанных задач должны быть выполнены условия проведения промежуточной и итоговой аттестации с идентификацией личности, которые описаны здесь. Невыполнение этих условий влечет за собой потерю возможности получения сертификата. Максимальная длительность каждой аттестации составляет 60 минут.
  4. Достижение в срок до 18 декабря 2016 года включительно не менее 60% от максимального количества баллов по курсу.

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

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

сертификат об окончании курса

Сертификат

Сертификат выдается при достижении не менее 60% от максимального количества баллов по курсу.

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