Введение
Познакомиться с курсом, узнать о декларативном программировании и других парадигмах программирования и понять, почему это важно знать каждому программисту.
теория
Hello World
Написать свою первую программу и узнать про способы ее запуска
тесты
упражнение
Абстракция с помощью функций
Познакомиться с литералами и выражениями, а так же приоритетом операций в них. Научиться работать с лямбда-функциями.
Комбинирование функций
Научиться комбинировать функции. Познакомиться с понятиями окружения, порядком вычисления и с подстановочной моделью вычислений.
Линейно-рекурсивный процесс
Познакомиться с понятием вычислительных процессов и, конкретно, линейно-рекурсивным процессом.
Линейно-итеративный процесс
Научиться строить рекурсии с аккумулятором. Познакомиться с оптимизацией хвостовой рекурсии.
Функции первого класса. Передача функций как аргументов
Научиться передавать анонимные функции как аргументы других функций.
Функции первого класса. Возврат как значения
Научиться строить более обобщенные функции и генерировать из них конкретные.
Что такое данные?
Попытаться понять, что такое данные в рамках языка программирования, и как можно построить структуру данных на примере pair.
Абстракция данных
Познакомиться с идеей абстракции данных на примере создания структуры, представляющей рациональное число.
Замкнутые множества
Познакомиться с понятием замыкания при использовании математической операции на примере вложенных пар.
Map
Познакомиться с функцией высшего порядка, позволяющей применять переданную функцию к элементам множества.
Фильтрация
Познакомиться с еще одной полезной функцией высшего порядка: filter.
Свертка
Написать функцию, позволяющую производить свертку нескольких значений.
Деревья
Изучить структуру данных «двоичное дерево» и ее реализацию в PHP с помощью списков.
Стандартные интерфейсы
Рассмотреть концепцию разделения программы на функциональные блоки, работающие с общей структурой данных.
Оператор присваивания
Рассмотреть концепцию присваивания и изменения состояния.
Объекты
Продолжить изучение оператора присваивания и перейти к созданию объектов.
Преимущества присваивания
Рассмотреть полезные и положительные аспекты сохранения состояния.
Недостатки присваивания
Рассмотреть проблемы, связанные с использованием присваивания и сохранения состояния.