Fully understanding the "intricacies" of the Prolog code design process

Several difficulties here.

  • You can’t possibly fit the intricacies of multiple programming paradigms in a course.
  • Programming paradigms themselves are usually (always?) pushed way beyond their usefulness.
  • “Declarative Programming” is an oxymoron; here is one post on the topic but please search yourself, the topic pops up regularly.
  • Reading library code is a fundamental part of learning programming.
  • Terribly sloppy to save typing: Programming does not have general laws in the same way that nature does. It is invented by humans and we still don’t understand ourselves well enough.

I understand that this doesn’t answer your question directly.