Функциональное программирование и Scala-технологии

Специальность / Speciality: 7-06-0533-04 Математика и компьютерные науки / Mathematics and computer science
Профилизация / Profiling: Веб-программирование и интернет-технологии / Web Development and Internet Technologies

Учебная дисциплина, модуль / Academic discipline, module: Функциональное программирование и Scala-технологии / Functional Programming and Scala Technology

 

Краткое содержание учебной дисциплины, модуля / Brief summary

Основы лямбда-выражений

Концепция лямбда-функций. Эволюция программирования. Создание кода в функциональном стиле. Функции как значения.

Обработка коллекций

Итерирование списков. Поиск элементов. Преобразование списков. Повторное использование лямбд. Области видимости и замыкания. Соединение элементов. Собирание (picking) элементов. Терминальные операции.

Строки, компараторы и фильтры

Итерирование строк. Реализация компаратора. Множественные компараторы. Collect-методы. Просмотр всех или избранных файлов директории.

Дизайн кода с лямбда выражениями

Разделение задач. Делегирование задач. Декорирование кода. Работа с исключениями. Создание свободных интерфейсов с использованием выражений лямбда.

Взаимодействие с ресурсами

Очистка ресурсов. Управление блокировками.

Оптимизация рекурсии

Использование оптимизации Tail-Call. Ускорение с запоминанием.

Композиция лямбд

Использование функциональной композиции.  MapReduce. Параллелизм. Практики функционального стиля.

Fundamentals of lambda expressions

The concept of lambda functions. Evolution of programming. Creating code in functional style. Functions as values.

Collections processing

Iterating lists. Searching for elements. Transforming lists. Reusing lambdas. Scopes and closures. Connecting elements. Picking (picking) elements. Terminal operations.

Strings, comparators and filters

String iteration. Comparator realization. Multiple comparators. Collect-methods. Viewing all or favorite files in a directory.

Designing code with lambda expressions

Task splitting. Delegation of tasks. Code decoration. Handling exceptions. Creating free interfaces using lambda expressions.

Interaction with resources

Resource cleaning. Lock management.

Recursion optimization

Using Tail-Call optimization. Acceleration with memorization.

Composition of lambdas

The use of functional composition.  MapReduce. Parallelism. Practices of functional style.

Формируемые компетенции / The formed competences

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

To be able to apply modern technologies for software development.

Результаты обучения (знать, уметь, владеть) / Learning outcomes (know, can, be able)

В результате изучения дисциплины обучающийся должен:

знать:

Основы функционального программирования на Java и Scala, преимущества и недостатки данной технологии;

ключевые моменты языков Java и Scala;

уметь:

писать функциональный код на языках Java и Scala;

применять как функциональный, так и объектно-ориентированный подходы к написанию кода;

владеть:

навыками разработки на языках Java и Scala.

As a result of studying the discipline the student should:

Know:

— Basics of functional programming in Java and Scala, advantages and disadvantages of this technology;

— key points of Java and Scala languages;

be able to:

— Write functional code in Java and Scala languages;

— apply both functional and object-oriented approaches to code writing;

possess:

— Java and Scala development skills.

Семестр изучения учебной дисциплины, модуля / Semester of study

1

1

Пререквизиты / Prerequisites

Технологии программирования

Programming technologies

Трудоемкость в зачетных единицах (кредитах) / Credit units

3

3 Credit units

Количество аудиторных часов и часов самостоятельной работы / Academic hour of students’ class work,

hours of self-directed learning

Всего 108 часов, из них 36 аудиторных часа и 72 часа самостоятельной работы.

A total of 108 hours, of which 36 academic hours of students’ class work and 72 hours of self-directed learning.

Требования и формы текущей и промежуточной аттестации / Requirements and forms of current and interim certification

Опрос, решение кейсов, защита лабораторной работы, контрольная работа.

Экзамен.

Survey, case solving, defense of laboratory work, control work.

Exam.