Перейти к основному содержимому

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

О курсе

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

Формат

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

Информационные ресурсы

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

  • Сайбел П. «Практический Common Lisp», электронный ресурс: http://lisper.ru/pcl/pcl.pdf

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

  • Абельсон Х., Сассман Дж. «Структура и интерпретация компьютерных программ», 2010, М:КДУ, 608 с.

Материалы на английском:

  1. Peter Seibel "Practical Common Lisp", 2005, Apress, http://www.gigamonkeys.com/book/
  2. Graham, Paul "On Lisp", http://paulgraham.com/onlisptext.html.
  3. Harold Abelson, Gerald Sussman, Julie Sussman "Structure and Interpretation of Computer Programs", 1996, 2nd ed., MIT Press
  4. Krishnamurthi, Shriram "Programming Languages: Application and Interpretation", 2003, Brown University Press.
  5. Guy Steele, Richard Gabriel "The evolution of Lisp", The second ACM SIGPLAN conference on History of programming languages. New York, NY: ACM. pp. 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. Ленивые вычисления.

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

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

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

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

  • 09.03.01 Информатика и вычислительная техника
    1. Разрабатывать компоненты программных комплексов и баз данных, использовать современные инструментальные средства и технологии программирования (ПК-5)
    2. Способность разрабатывать средства реализации информационных технологий (методические, информационные, математические, алгоритмические, технические и программные) (ПК-12)
  • 09.03.02 Информационные системы и технологии
    1. Способность к проектированию базовых и прикладных информационных технологий (ПК-11)
    2. Способность разрабатывать средства реализации информационных технологий (методические, информационные, математические, алгоритмические, технические и программные) (ПК-12)
  • 09.03.03 Прикладная информатика
    1. Способность разрабатывать, внедрять и адаптировать прикладное программное обеспечение (ПК-2)
    2. Способность программировать приложения и создавать программные прототипы решения прикладных задач (ПК-8)
  • 09.03.04 Программная инженерия
    1. Готовность применять основы информатики и программирования к проектированию, конструированию и тестированию программных продуктов (ОПК-3)
    2. Готовность применять основные методы и инструменты разработки программного обеспечения (ПК-1)
  • 10.04.01 Информационная безопасность
    1. Способность проектировать системы управления информационной безопасностью с учетом технических и технологических особенностей объектов защиты (ПК-2)
    2. Способность разработать программы и методики испытаний, организовать тестирование и отладку программно-аппаратных, криптографических и технических систем и средств обеспечения информационной безопасности (ПК-5)

Авторы курса

Course Staff Image #1

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

Кандидат технических наук
Доцент кафедры мониторинга и прогнозирования информационных угроз

  1. Номер курса

    x1018.00
  2. Статус

    Будущий
  3. Область знаний

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