What’s the difference between computer science and theoretical computer science? Theoretical computer science emphasizes mathematical techniques and the unrealized possibilities in computer science.

That may sound abstract. But computer science is one field where philosophical abstractions are relevant. From artificial intelligence to hacking to quantum physics, the theory side of computer science is front-and-center to cutting edge developments.

Read on to learn more about theoretical computer science. You may decide to pursue it yourself.

**Foundations of Theoretical Computer Science**

In the early 20th century, German mathematician David Hilbert developed the Hilbert program. This wasn’t a program in the computer programming context. Rather, it was a program in the academic sense of organized research.

The goal? To identify all presumed mathematical truths, join them, and prove their mutual compatibility.

More fundamentally, Hilbert was attempting to answer a crucial question in mathematics—can math ever achieve its basic purpose? In other words, can the symbols and operations of math be anything more than symbolic?

Enter Kurt Gödel. According to Gödel’s incompleteness theorem, the answer is a resounding “no.” This leaves questions about the possibilities and limits of computation.

Theoretical computer science is in some sense connected to theoretical mathematics. One key premise they share: we likely can’t know everything. So then what can we know?

**Topics in Theoretical Computer Science**

Theoretical computer science is relevant to many domains of applied computer science. A partial list includes:

**Cryptography**—how to achieve secure communication by transforming information**Algorithms**—the development of conditional rules sets (“if/then”)**Data structure**—how to organize information for efficient use**Machine learning**—how machines can mimic human mental processes**Quantum computing**—using principles of quantum mechanics in place of traditional binary principles

Again, this is only a partial list. The reach of theoretical computer science is far and wide.

**Careers in Theoretical Computer Science**

Many careers in this field are academic, focusing on research and teaching. That’s true of most theoretical fields, whether they have practical applications or not.

Beyond the academic setting, it’s also possible to find work in the private industry. That includes consulting work—either solo or with a firm—and in-house work as an employee.

Any high-tech field business could find itself in need of theoretical computing expertise. That said, particular fields are more likely to have such a need. Examples include the topics listed above—and more.

**Preparation for Theoretical Computer Science**

Are you interested in pursuing theoretical computer science? If so, it’s important to have a strong grounding in both mathematics and computer science. You can get a lot of core training from school. But if you’re passionate about the subject, you can learn a lot more on your own.

**Educational Paths**

If you’re accepted to a college that offers a major or minor in theoretical computer science, that’s a solid option. Otherwise, you could balance your training between mathematics and computer science. It also helps to have some training in philosophy.

Many computer science theorists pursue post-graduate training up to and beyond the doctorate level. That’s particularly helpful if you plan to teach and publish.

If you’re interested in combining theoretical computer science with another domain, then other degrees could come in handy. For example, if you want to focus on machine learning, AKA artificial intelligence, then you could pursue extra training in that field.

**Practical Skills**

Certain skills are important for most careers in computer science. Whether you’re coding web pages with CSS and HTML or developing machine learning algorithms with Python, these will prove invaluable.

**Command-line interface (CLI)**—This is a computer’s terminal interface, where a user types command rather than clicking them with a mouse. Here’s a simple command-line cheat sheet.

**Regex**—Regex is short for a regular expression. It’s a method for analyzing text and picking out patterns. Here’s a simple regex cheat sheet.

**Text editors**—This is often where you’ll write and edit code. You can do this through a graphical program like Sublime Text. Some people prefer the power and flexibility of the early CLI program, Vim. Here’s a simple Vim cheat sheet.

**Where to Learn More**

The exciting field of theoretical computer science is changing all the time. Here are some resources to learn more about the field and keep up with new developments.

**Prominent journals in the field include:**

- Foundations and Trends in Theoretical Computer Science
- Discrete Mathematics & Theoretical Computer Science
- Theory of Computing (an open-access journal)

**Groups and associations include:**

- Association for Computing Machinery Special Interest Group on Algorithms and Computation Theory (ACM SIGACT)
- Simons Institute for the Theory of Computing
- European Association for Theoretical Computer Science

**Events and conferences include:**

- Symposium on Theory of Computing
- Symposium on Logic in Computer Science
- International Symposium on Fundamentals of Computation Theory

**Websites with more information on theoretical computer science:**

- Theoretical Computer Science—Stack Exchange
- Theory of Computation at the Massachusetts Institute of Technology (MIT)
- Directory of web pages related to theoretical computer science

That’s enough to get you started.

**The Future of Computing Belongs to Theorists**

Now you know the basics of theoretical computer science. It’s an intellectually stimulating field, packed with challenges and real-world implications.

Were you intrigued by this brief introduction? If so, you should spend some time studying topics in computer science and mathematics. That way, you’ll know for sure if your interest is strong enough to build a career on.

Curious about other topics? Look around our site for more fascinating articles!