In the simplest of terms, computer science is the study of information (“data”) and how it can be manipulated (“algorithms”) to solve problems, mostly in theory but also in practice.
Computer science is not the study of computers, nor does it strictly require the use of computers. Data and algorithms are possible to compute using pen and paper, which makes “computer science” a misnomer. Computer science is more akin to mathematics, which is why some now prefer to use the term “informatics” instead.
Computer science often gets conflated with three other fields, which are related but not exactly the same:
- Computer engineering — Involves the study of data and algorithms, but in the context of computer hardware. How do electronic components communicate? How to design microprocessors? How to improve chipset efficiency?
- Software Engineering — You can think of this as “applied computer science,” in that computer scientists tend to tackle abstract theories while software engineers write real-world programs that incorporate theory and algorithms.
- Information Technology — Information technology involves the use and mastery of already existing software and hardware. IT professionals help maintain networks and provide assistance when others are having trouble with a given program or device.
All that being said, most people nowadays use “computer science” as a catch-all term for any field that involves programming, data analysis and manipulation, and the interaction of software and hardware. In other words, computer science has many “concentrations” or “disciplines.”
The Many Disciplines of Computer Science
If you plan on studying computer science, you should know that no two schools have the same coverage or curriculum. Schools can’t even agree on what “computer science” entails, let alone agree on which disciplines belong under the computer science heading.
Here’s a non-exhaustive list of the most common “types” of computer science you may encounter and what each one specializes in. As you’ll see, computer science is one of the broadest fields today:
- Artificial Intelligence — The development of machines that can display cognitive functions like thinking, speaking, reasoning, and solving problems. Incorporates other fields, including linguistics, psychology, and neuroscience. Machine learning is a subset that explores the ability of machines to learn, evolve, and recognize patterns in data on their own.
- Bioinformatics — The use of computer science to measure, analyze, model, and understand the complexities of biology. Involves the large-scale analysis of data, high-performance computations, data simulations, molecular models, and more.
- Computational Theory — The study of algorithms and mathematical proofs. Not only concerned with the creation of new algorithms or the improvement of existing algorithms, but also the methods and provability of theorems.
- Computer Graphics — The study of how data can be manipulated and transformed in a way that’s intuitive for humans to view. Includes topics like photorealistic images, dynamic image generation, 3D modeling and animations, and data visualizations.
- Game Development — The creation of PC, mobile, and web games for entertainment. Game engines are designed differently from business and research applications, and often involve unique algorithms and data structures optimized for real-time interaction.
- Networking — The study of distributed computer systems and how communications can be improved within and between networks.
- Robotics — The creation and development of algorithms used by robotic machines. Includes improvements to robotic kinematics, the interface between robots and humans, environmental interactions, robot-to-robot interactions, virtual agents, etc.
- Security — The development of algorithms, methods, and software to protect computer systems against intruders, malware, and abuse. Includes cloud and network security, PC security, mobile security, email security, anti-virus software, and cryptography (the study of encryption and decryption).
In order to graduate from a college or university with a computer science degree, your studies will likely include at minimum:
- How computer systems work at the hardware and software levels.
- How to write code in various programming languages.
- The nature and application of data structures and algorithms.
- Mathematical concepts (e.g. formal logic, graph theory, etc.)
- How to design a compiler, operating system, and computer.
Are You a Good Fit for Computer Science?
I would never tell somebody to give up on computer science simply because they don’t have the “right” traits or characteristics. If you want to pursue it, then by all means, pursue it! Hard work and perseverance can overcome all kinds of shortcomings in this field.
But it’s true that certain traits and characteristics can make you more likely to enjoy and succeed in a computer science career. A degree costs at minimum four years of your life. Know what you’re getting into to minimize the chance of wasting those precious years.
Someone is a “good fit” for computer science if:
- They are naturally curious and inquisitive.
- They feel compelled to solve problems and puzzles.
- They think in a logical, step-by-step manner.
- They approach issues from unconventional angles.
- They are willing to evolve and learn new things every day.
- They have enough grit to endure long periods of frustration.
- They know how to search the web for answers.
Problem solving is the core skill of any computer scientist, software engineer, and information technologist. If you aren’t naturally curious and feel a deep-seated urge to figure things out, then you will find no joy in computer science as a career — guaranteed.
Furthermore, computer science is one of the fastest advancing fields in the world today. If you have no desire to keep up with new languages, new libraries, new applications, new IDEs and software, etc. then you may soon be overwhelmed (unless you stick to legacy fields).
Computer science is also highly creative. You’re literally creating code from scratch, not unlike a writer, painter, or musician. You have to think outside the box, and you have to practice. Programmer’s block is a common hurdle, and you’ll need determination to make it through to the other side, time and time again.
If none of the above applies to you, then you may not be a good fit.
Pick a Specialization and Master It
If computer science intrigues you and you think you have what it takes to be a good fit, then congratulations! You have a tough but rewarding career waiting for you just up ahead. There’s only one more thing you need to know if you want to succeed…
In the beginning, taste and explore as many different areas of computer science as you can. You might be surprised at which ones you like best (and how certain ones sounded fun but actually aren’t). But once you know which one, focus and become a master of it.
Dabbling in many areas can be fine as a hobby, but jacks-of-all-trades rarely make it far in their careers. On the other hand, being an specialized expert will take you very far.
Now that you know what computer science is, do you have any questions? Concerns? Other pieces of advice to add? Let us know in the comments below!
Image Credit: Matej Kastelic via Shutterstock.com