Giovanni's Diary > Subjects > Programming > Notes >

Mental Map of Computer Science

Computer Science is a very broad field, which gets lost in the details. The more specific the thing you are working on, the more specific knowledge you will have to learn - and its a big rabbit hole. For every job you use different technologies, programming languages, frameworks, build systems etc. Heck, a lot of knowledge will become irrelevant in a very short amount of time. Therefore I belive it is impossible and unnecessary to learn all there is to know, then how are we supposed to program computers in an useful way?

I think there is a general mental model or map, or an approach or workflow, that we learn when working with computer that is fundamental to everything we do. This is what's important to understand and master, as it will help you tremendously when you face a problem you have never encountered before (which happens in the real world).

Let's make some examples of problem areas you may encounter:

  • graphics: how do we render a scene on a screen?
  • compilers: how do we convert structured bytes into another structure?
  • database: how do we store and query data?
  • network: how do we make different machines communicate?
  • cryptogrphy: how do we secure communication?
  • compression: how do we store data such that it takes less space?
  • rng: how do we generate (pseudo) random numbers?
  • AI: how do we make the machine learn a pattern?
  • IOT: how do we make a machine interact with its physical environment?

Notice that the implementation really does not matter in the study of these questions. We could try to propose a design of a solution, yet the implementation is the actual solution and the real truth. The only way we can assert that something works is by implementing and running it. Implementation is as important as design.

Notice also that many problems have already been solved in most cases, and others are still in development. The most difficult problem is to find which problem is worth working on.


Travel: Programming Notes, Index