There are more and more job postings that include computer science/math background is an asset. How important is it and do you need a computer science background to succeed?
What is Computer Science?
While Software Engineering is developing software for computers, Computer Science studies how computers actually work.
Topics in Computer Science include applied mathematics, linear algebra, algorithms, computational theory. So, you can tell that there is a strong mathematics prevalence in the subject. Most often, Software Engineering is taught in Colleges and Computer Science in Universities.
Why is there so much math?
Good question. To understand it, you first have to realize that all a computer can do without any software is add numbers. Really, the main purpose of a CPU is to add numbers fast, and the purpose of the GPU is to add a lot of numbers at the same time. Everything else, from subtracting numbers to your browser rendering this website is built on top of that. How? Computer Science.
What are the essentials of Computer Science?
Computer Science is a vast topic on its own, but these are the main pillars of it:
- Number theory. Since all we can do is add numbers, there must be some ways to combine it into something more useful. This is number theory. It studies the properties of numbers and operations on them. One particular concept from the number theory that you might have heard about is binary numbers.
- Boolean algebra. The CPU is made up of transistors, which are combined into logic gates. These are pretty much very primitive functions, which can operate only with True or False values. Boolean algebra teaches how to use logic gates to solve and automate common computational problems, prove theories, and so on.
- Algorithms. Once we get to a higher level of abstraction and programming languages pop up, it is important to be aware of many ways you can process data. An algorithm is a sequence of actions you (or your computer) need to execute in order to solve a problem. This topic also includes algorithm complexity, a study about the speed and efficiency of algorithms.
- Data Structures. After you process the data, you have to put it somewhere accessible. This is where the data structures come into play. It is a study of different ways to organize your data.
Algorithms and Data Structures are often combined into Theory of Computation as they deal closely with each other. There are some overlaps between an arbitrary Computer Science curriculum and Software Engineering, as common algorithms and data structures are vital to any computing problem.
Who needs Computer Science?
Now that you have an idea what is Computer Science, let us talk about who needs it. First of all, I will say that no matter what kind of developer you are, the knowledge of Computer Science will help you. It will boost your logical reasoning and problem-solving skills at the very least and may provide some applied knowledge to your specific field.
But Computer Science is pretty hard and may take too much time to learn to be of use. This is something that you have to decide for yourself, but I strongly advise everyone just to try it out. Computer Science is fascinating and you can enjoy learning it.
There are some fields where Computer Science is a must, though. For example, Data Science. Data Science is about processing data on a computer, so it is very important to know how to use all the capabilities of the CPU to extract useful information. Data Scientists need to have good knowledge about Data Structures, Algorithms and Math (Linear Algebra and Calculus).
Another example is low-level programming. When you deal closely with hardware, it is important to know exactly how it works under the hood to produce quality software.
How to learn computer science?
There are a lot of resources available to you, both paid and free. As a starting point, I suggest this course from Harvard University. It is completely free and will let you decide if Computer Science is something you are interested in. To get your math skills up to speed, try Khan Academy.
For more advanced readers, I suggest the series of books “The Art of Computer Programming” by Donald Knuth. It is a comprehensive review of common algorithms, data structures, and mathematical background. A fair warning: these books require you to be proficient in High School Calculus and to do a lot of problem-solving.
Thank you for reading, I hope you enjoyed this article. Let me know in the comments how do you use Computer Science in your job/everyday life!