TDD (Test-Driven Development) - подход при котором тесты пишутся до кода.
Недетермированый код - это код, который может выдать разные результаты при один и тех же параметрах. Может по разному обрабатывать идни и те же данные.
Стек - абстрактный тип данных, организован по принцыпу LIFO (last in - first out).
Каринг - конвертация функции, которая принимает несколько аргументов в функции, которая принимает один аргумент. ПРи каждом последующем вызове функцияпринимает один аргумент и возвращает другую функцию, которая так же принимает один аргумент до тех пор, пока все аргументы не будут обработаны.
Predicate - это функция, которая возврацает true или false. Используется в filter.
Lambda - анонимная функция, которую можно использовать как значение. Их часто передают в качестве аргументов в функции высокого порядка.