По алгоритмам -> есть книга "Грокаем алгоритмы".
Сама она из себя представляет вводную часть к изучению этой темы, это некоторый двухсотстраничный анонс.
Если вообще нет никакого понимания, то читай ее (за два-три дня не напряжённого чтения по 2-3 часа легко осилишь).
Если есть понимание, к примеру, что такое "жадные алгоритмы", то можешь открывать сразу последнюю главу, в которой подробно рассказывается куда можно углубляться и по каким материалам.
В книге используется python, но это классный и простой язык, все примеры понятны.