Computer science as a broad subject is probably the hottest topic of the last two decades, and it does not seem to change.
Choosing Computer Science as my major at university, 10 years ago now, I did not even know what I was going into; I just wanted to learn valuable skills and, maybe, one day, develop some cool app.
It took me several years to really understand the importance of computer science in my life; and it is not about knowing how to program because it is a highly requested skill.
It is about the mindset you build studying those subjects.
The two most important skills: logic and abstraction
Computer Science at university is definitely not learnin how to use a computer.
Technically, this is a prerequisite…. sort of.
Indeed, at least at my university in Modena, half of the courses are mathematical, and less of the remaining half is about programming itself.
The main idea behind this structure is that it does not matter if you know very well programming languages.
If you do not know what to develop, from the design of the algorithms to the optimization of the whole process, it is almost irrelevant.
I learnt that writing code is irrelevant and possibly dangerous if you do not know what you are doing and how you are doing it.
There are thousands of different ways to implement the very same functionalities, but some of them are more fast, some more secure, some more intuitive.
It is therefore fundamental to be able to recognize those differences and to do that, the programming languages are almost always irrelevant.
Logic and abstraction are probably the two most useful skills that I love to have learned.
Logic is the systematic study of valid rules of inference, i.e., the relations that lead to the acceptance of one proposition (the conclusion) on the basis of a set of other propositions (premises).
It is that skill that allow you to link events and concepts in the most accurate way possible.
It is the base of the causal reasoning, which means that it is through logic that you are able to say something like “this happened because of that” or “The cause of this event is …”.
In computer science this is at the basis of learning algorithms, which are probably the most important thing in the entire field.
The exact sequence of steps that a program will follow is defined through logical reasoning.
To me, this skill is highly transferable because everyday life is made of infinite sequences of causes and effects.
As every skill, the practice makes it better and better.
Being able to practice logic and reasoning so consistently and precisely as while learning computer science, will allow you to deal with reality, daily life, and your job in a way more comprehensive and clear way.
Logic is the reasoning process that allow you both to understand what the effect of a cause will be, and, on the other hand, what have been the cause of an effect.
In both direction this is a valuable skill and can help you in all aspect of life.
Although, the principal obstacle is knowing the rules of the environment you are applying logic to.
Logic is powerful only if applied to well known subjects, otherwise it can be even harmful.
If you want to have a real advantage in your job, learn and practice logic because it is a driving element of every aspect of our lives.
Abstraction in its main sense is a conceptual process where general rules and concepts are derived from the usage and classification of specific examples, literal (“real” or “concrete”) signifiers, first principles, or other methods.
When learning databases and Object-Oriented programming (a programming paradigm) I started my journey in learning abstraction.
Abstraction is the ability to generalize concepts and being able to recognize or build the same rules in a different field.
Being able to abstract concepts and knowledge, will always be helpful because when you have to deal with new subjects or problems, the process that will bring you to the solutions and the understanding will be so faster.
This ability is like having already done half of the job and transferring what you learned from one endeavour to another is always powerful and convenient.
Sometimes it is even game changing because, as I told you in a recent post, many new discoveries and novelties derive from transferred knowledge from other fields; Check it out here.
This can happen in all environments, and it is almost always unexpected.
Again, if you want to have a real competitive advantage in the world, learn and practice the skill of abstraction.
Neural connections are the power of our brains and abstraction is the real essence of connecting different concepts in new ways.
It took me years to really understand the power of logic and abstraction.
Those two skills allow me to reason faster and more effectively, to collect and link concepts in a more efficient and effective way.
I am really feeling the difference that those skills make in my life, and I really recommend everyone to practice them on a regular basis.
So, why starting this post with Computer Science?
It is studying computers that I learned those skills and I is one of the satisfying ways to do this.
I truly believe that computer science is the most effective and direct way to learn and practice logic and abstraction because computer science itself is deeply based on those concepts.
During my studies I found hundreds of cases in which logic and abstraction were useful, if not fundamental.
Not only, compute science is a strange topic that can be studied for the sake of itself, or also applied to thousands of different disciplines.
In my case I am specializing in medical applications, but any environment in which informatics is involved can be an interesting practicing field.
I have two advices…
To those who want to start computer science
If you are about to start studying computer science, approach it from a logic and abstraction point of view.
It will make your learning process so faster and effective.
To those who do not study computer science
If you do not consider studying computer science, try the best way to practice those skills anyway by reading and getting informed about many different topics, especially if different from each other.
This is the setting in which those will came out more useful and therefore the best way to start practicing them.