Курс “Функционално програмиране” – професия “Приложен програмист”

Курсът “Функционално програмиране” е специализирано обучение за професия “Приложен програмист” съгласно държавните общообразователни изисквания. Настоящата учебна програма е приложима за професионалните гимназии, профилираните гимназии и други учебни заведения.

Разпределение

  • 58 учебни часа (29 седмици по 2 часа)
  • 12 клас

Учебна програма

Настоящата учебна програма по “Функционално програмиране” е разработена от експертната група към МОН по проект “Професия приложен програмист”.

Наименование на разделите
Минимален брой часове
1

Мотивация зад функционалното програмиране

  • Понятие за “странични ефекти” в програмирането и проблеми, които създават
    • Входно / изходни операции от различен тип – конзола, файл, база от данни, мрежа
  • “Състояние” (state) на програмата
    • Глобално и локално състояние
    • Приложения
2
2

Функции и стойности – дефиниции и понятия

  • Дефиниция за “функция”
  • Дефиниция за “чиста функция”. Връзка със състояние и странични ефекти
  • Дефиниция за стойности на функция
  • Функции като стойности на функция (“first class” функция)
  • Въвеждане на понятието за рекурсия и създаване на основни рекурсивни функции (fact, fib, etc.)
  • Упражнение: писане на чисти функции
  • Упражнение: използване на first class функции
  • Упражнение: писане на рекурсивни функции
6
3

Програмиране без променливи и цикли. Решаване на задачи с рекурсия. Видове рекурсия

  • Осъзнаване, че рекурсия + аргументи на функции = цикли + променливи
  • Въвеждане на понятието “опашкова рекурсия” и свързване с идеята за цикъл
  • Упражнение: решаване на задачи с рекурсия
  • Упражнение: разписване на цикъл с рекурсивна функция
10
4

Работа със списъци във функционален език. Понятие за cons / head & tail. Рекурсивни функции върху списъци

  • head / tail / empty за рекурсивно обхождане на списък
  • Пресмятане на дължина на списък
  • Създаване на списъци чрез рекурсия
  • Упражнение: писане на рекурсивни програми за обработка на списъци във функционален стил
12
5

Понятие “функции от по-висок ред”. Запознаване с анонимни / lambda функции

  • Изграждане на абстракция чрез функции, които приемат като аргумент други функции и връщат функции като резултат
  • Изграждане на основни функции за изчисления в/у списъци – map, filter, reduce
  • Използване на анонимни функции при работа с map / filter / reduce
  • Упражнение: имплементиране на филтриращи, трансформиращи и агрегиращи функции от по-висок ред.
  • Упражнение: използване на филтриращи, трансформиращи и агрегиращи функции от по-висок ред
20
6

Затваряне на състояние във функция – closures

  • Дефиниране и използване на функции с вътрешно състояние. Понятие “closure”
  • Упражнение: дефиниране и използване на closures
4
7 Резерв 4

Свободно учебно съдържание

Всички учители, преподаватели и ентусиасти ще могат да изтеглят свободно учебно съдържание за курса “Функционално програмиране” (Functional-Programming-IT-Kariera-2020.zip), което включва:

  • Презентации за всяка тема
  • Задания за упражнения за всяка тема

Забележка: учебните материали за курса са разработени с езика Haskell, но този курс може да се преподава и с JavaScript или друг език, който поддържа парадигмите на функционалното програмиране.

Курсът е част от свободното учебно съдържание на СофтУни фондацията за професия “Приложен програмист”.