Техническое задание -- некий текст (документ), где более или менее конкретно освещается ответ на вопрос "что делать?".
Пишут ТЗ обычно вместе с заказчиком.
Бизнес-логика системы обычно определяется именно тут (хотя бы она, а более конкретные требования -- по ситуации).
Open Source (опенсорс) -- под этим термином подразумевается:
Как движение: явление и существование т.н. программного обеспечения с открытым исходным кодом.
Самое программное обеспечение с открытым исходным кодом.
Бесплатность опенсорса
На практике (при использовании термина "опенсорс") часто подразумевается, что это ПО ещё и бесплатное (хотя открытость и бесплатность совпадают не всего, но часто совпадают).
Ядро [программной системы] -- некая часть, без которой данная система в природе не встречается. Именно к ней подключаются модули (плагины), она руководит ими и/или зависит от них.
Если рассматривать приложение с высшего уровня абстракции, то ядро это одна из его подсистем (часто "самая главная").
Модуль (программный модуль) -- некое условно независимое (в какой-то степени) от остальной системы ПО, подключаемое к ней как часть, и дающее новые возможности.
Модуль как часть
Модуль по своему смыслу есть (или может стать) часть какой-то системы (а может и многих систем, если он универсален), обычно модулями руководит (после подключения) некая подсистема, которую могут называть ядром.
Начинающие по курсу вынуждены были сами искать такие определения:
дамп, стек и очередь, RSS(общее представление), функция обратного вызова, фрейм,плагин, паттерн, Composer, инстанцирование, deprecated, виджет, MVC, CMS, рендеринг, IDE
Кэширование -- в общем случае: перемещение каких-либо данных в такое место/вид, откуда, в случае надобности, их можно будет достать быстрее, чем оттуда, где они были изначально.
Кэш -- данные в "быстром" хранилище/виде.
Примеры кэширования -- откуда и куда/быстрее-медленнее
Это самое "место" может быть где угодно (как и исходное), лишь бы из него данные извлекались быстрее, так например:
Архитектура/Программная архитектура -- способ выделения частей и организации связей между ними (определения спосбоа их взаимодействия) в рамках системы (программы) на разных уровнях абстракции.
В более узком смысле под архитектурой подразумевают высокие уровни абстракции -- более удалённые от конткретных строчек кода, чем, скажем, ООП-классы.