To explain the situation, I will start with an **analogy**;

In math, we love to generalise things. For example, historically, we first had $ (\mathbb{R}, +, \cdot)$ , then we generalised to sets with to two binary operations with similar properties. Another example, if we have some algebraic structures (basically sets with some operations on them satisfying some properties), we first looked at a product of those objects, then we generalised them to products/coproducts in the category of those objects, etc. In this way, we have much more a general view of what is going on, so that we can see the interconnection between different “things”. In fact, IMO, the main advantage of using category theory is this; it provides a much broader view about any subject.

Now, let me come to my actual question;

I’m a Physics and Mathematics student, and I love programming, and all that tech stuff. However, whenever I try to learn something about computer science, in general – for example, network programming, web security, and even in programming – I basically lost in the books; What I mean by is that the general teaching method is something along this line; This can be done like this, and that can be done like this – as if they are just cookbooks, there is no general overview, or underlying logic about the network/structure/concept, nor almost any motivation, or how should we think / how can one come up with a similar answer that just you presented in the book, etc.

So my first and main question is that, how can one overcome this difficulty of getting lost in reading/studying computer science topics ?

Optionally, if you have any book suggestions which does not possess the problem that I’ve outlined above about any topic, I would appreciate if you could share it.