Monday, November 25, 2019

So you want to be a Computer Scientist?

"Anyone can be a computer scientist." "Programming is simple, you just have to be dedicated." 

You've probably heard something similar to these quotes from one of your relatives or acquaintances, or maybe you heard it in some sort of media. While the quotes themselves are not meant to be misleading, programming and computer science are not as easy as you may be lead to believe. In fact, I am willing to go on record saying that computer science is not for everyone.


I had never written a single computer program in my life until 4 years ago in 2015. My first program was a simple Hello, World program. If you have any familiarity with what a programming language is and how they work, you've probably heard of and even implemented a Hello, World program. 


A programming language is a vocabulary and a set of 'grammatical' rules that can be used to instruct a computer. It may sound obvious, but a computer does not understand human language (like English). This is a fact which confounds novice programmers more often than you might think. You need to understand how a computer thinks if you want to write a program that a computer will understand.

A program is, by definition, a set of instructions that guides a computer into performing a specific task. Similar to how you need to be able to think like a dog in order to train a dog, you need to be able to think like a computer in order to guide a computer.


You can learn to think like a dog by observing their behavior and how they interact with the world; you don't need to understand their anatomy or how their cells interact in their body to make them move. This is because a dog can function without requiring a human to guide it. 
A computer, on the other hand, does not do anything unless it has been instructed to do something (even turning your computer on or off requires an instruction that was coded in your computer's operating system). It is, thus, extremely important that you understand the basic unit of information that allows a computer to operate.


The basic unit of information in computing is called a bit. If I were to explain what a bit is, this blog would become too technical for an introductory chapter (I explain bits and bytes in detail here: ). I would instead like to give an overview of what I think is the most economical way to learn computer science.

Although there are parts of it that are considered a field of mathematics, computer science is not a branch of mathematics. By its very nature, computer science is multi-disciplinary, which means that it is only interesting when it is combined with another field. 

Whether it be to build a website or solving complex equations, computer scientists are contributing to every field you can imagine. In fact, computer science has become so pervasive that even employers for traditionally non-technical jobs may be more inclined to hire people with some experience in programming over those who don't have any computer science knowledge. It is, thus, essential that we find a way to make computer science accessible to the masses.



Teachers and professors like to think that the best way to learn computer science is to put it in practice. The problem with this notion is that it neglects the people who are not 'born engineers'. Some people simply do not have the pre-disposition to persist through a continuous cycle of trial and error that is essential to engineering.

My aim through this series of blogs is to give you an insight into the ideas that make computers so ubiquitous, in a way that is both accessible and engaging. Computer science is a field that deals with a heavy amount of jargon, i.e. there are lots of specialized terms in computer science that are difficult to understand in normal speech/language. I will try to keep the jargon I introduce in these blogs to a minimum, but, if I have to introduce a new term, I will make sure to explain it such that it is clear as to why you should know the term.



"And what is the use of a book... without pictures or conversation" - Lewis Carroll, Alice in Wonderland. As a visual learner, I find computer science textbooks particularly terse due to the lack of pictures and the large amount of jargon that is not particularly conducive to conversation. The lack of pictures in computer science textbooks is the reason which inspired me to start this series of blogs, and so, you can expect to find an eclectic mix of pictures and stories in my blogs that will help you, if you are a visual learner, to stay invested in learning compute science.


I wrote my first program in 2015 and have since worked as a software engineer/developer at two different companies. If I can transform from a novice to a professional in 4 years, so can you. I think computer science is not for everyone but everyone should have access to computer science topics to be able to make that judgement for themselves.



I hope you will find this series of blogs helpful towards answering some of your lingering questions about computer science, and if you are currently in the process of figuring out whether you want to pursure computer science as your career path, I hope this series will make it easier for you to make that decision.