Computer Science for Everyone — Part I.

Isaac Casanova
5 min readMay 6, 2017

--

Many of you have heard of Computer Science. You’ve probably wondered at some point, what makes someone who studies Computer Science different from someone who’s good with computers? What exactly does a Computer Scientist or Software Engineer do? What does Computer Science mean anyway?

Through a series of articles, I’ll clarify what Computer Science is and how it relates to our everyday lives. Before I go into the details, it will serve us well to establish what a computer program is.

A computer program is a collection of instructions[1] that performs a specific task when executed by a computer. A computer requires programs to function and typically executes the program’s instructions in a central processing unit.

CS education is critical for today’s changing world. Image Credit.

Examples of computer programs range from Facebook Live Video and Google Search to how your microwave makes that “beeping” sound when it’s done heating. Our lives are surrounded by computer programs, and they execute silently in many places we may not realize.

In order to complete tasks, computers receive instructions via the programming language the program is written in. A programming language is a formal grammar that defines instructions for the computer, represented by the alphabetical symbols of human language. A computer uses a programming language to perform calculations that may or may not be seen by an end user.

Consider this fully-fledged program:

print 'hello, world!'

That’s a valid computer program, written in the Python programming language. It calls the print function, passing in the text “hello, world!”. To execute a Python program, you create a text file and name it hello.py”, for example. The “.py in the extension tells the computer to interpret the text as a Python program. You then pass the text into the Python interpreter, or compiler, by running “python hello.py”.

An example of running Python code in macOS Terminal.

The interpreter translates Python’s formal grammar into low-level machine code. The computer then executes the translated machine code, resulting in “hello, world!” printing on the screen.

The process of executing a computer program.

Computer programs are written in different programming languages depending on the intended audience. For example, I would write my Android app in Java, my iOS app in Swift, and my website would be written with JavaScript. The reason why we use different programming languages is why an auto-mechanic uses several different tools. As a computer scientist, you choose the right tool for the job.

To sum up what’s been covered so far, a computer program is a text file containing lines of text that the computer interprets in order to perform it’s work. The text inside the program is written in a programming language, which is passed to a compiler or interpreter. The compiler or interpreter generates low-level machine instructions, and the computer executes them.

A Computer Scientist’s Job

The job of a Computer Scientist is to continuously improve how these programs work through studying their mathematical behavior. The definition from the Wikipedia article on Computer Science is as follows:

Computer science is the study of the theory, experimentation, and engineering that form the basis for the design and use of computers.

An example of the confusion around Computer Science.

Computer Science deals with the mathematical foundations that the computer is based on. There are many sub-fields within Computer Science, which can be theoretical, practical, or a combination of both.

An example of a practical application of Computer Science is Mobile Development, which is the process of creating mobile applications on the iPhone, Android, and other mobile operating systems. This is how mobile applications like Instagram, Snapchat, and Quora are built.

Mobile applications provide an advanced interface for dealing with information.

An example of a theoretical field within Computer Science is Computational Complexity Theory. In short, this consists of grouping classes of problems against what a machine can or can’t do. We achieve this by studying a series of mathematical representations of a computer, namely the Turing Machine, named after Alan Turing.

The different classes of problems that computers face.

An example of a field that lies “in-between” is Machine Learning. Machine Learning is the process of a computer program changing output in response to a flow of data. Machine Learning programs can be supervised, adjusting in the wake of learning from previous input, or unsupervised, acting upon data collected from different sources at once. An example of machine learning lies in your own Facebook Feed, which changes and adjusts based on the input you give it. In effect, the feed algorithm is personalized for your experience because it learns from the data that you give it.

The Facebook feed learns by studying your data.

In reality, every “practical” field of Computer Science stands on the shoulders of its theoretical foundation. A good computer scientist is well-versed in both the theoretical and practical foundations in their area of expertise.

Pushing the Limit

So, what are some things that Computer Scientists aren’t?

I can.. but not all of us want to!

For the most part, Computer Scientists don’t fix computers. That’s not to say that they don’t know how to troubleshoot malware or slow startup issues with your machine, but that’s not where their main skillset lies. The main skill of a Computer Scientist is to solve problems using a computer in the most efficient way possible.

Secondly, not all Computer Scientists are efficient at multiple programming areas. A very skilled backend engineer using Ruby on Rails may not be the best Android engineer. Likewise, an iOS engineer may or may not be good at building websites. Much like you wouldn’t want a cook installing tires on your car, Computer Scientists tend to stick with a subset of practical fields and gain depth there. Of course, there are the unicorns, the Full Stack Developers, but they truthfully are few and far in between, and tend to be more experienced.

I hope that I’ve cleared up some confusion around what a Computer Scientist is. If not, be sure to let me know in the comments! In the next post, I’ll show some of the basics of computer programming. That way, you’ll get a better feel for how Computer Scientists think.

Thanks for reading, and as always, feedback is greatly appreciated.

--

--