You need to know computer science

When I started my first programming job I was crushingly aware of how little I knew. Sure, I could write code, but the computer itself was pretty much a magical box of mystery. I lacked the necessary mental model of how everything fitted together.

Worse than that, there was a lot I didn’t even realise that I didn’t know. Well-meaning colleagues would casually mention some concept or convention that I’d simply never heard of. How can you have confidence in your abilities when you're not standing on a firm foundation?

The simple truth is that to be a great programmer, capable of handling anything that might come up, you need a solid foundation in computer science. You need to know how the computer works, what its capabilities are and what its limitations are.

But learning computer science is difficult. Things are even tougher if you’re learning by yourself and in your own time.

Where should you start? How do you chart a path through the whole of computer science, studying topics in the right order? How can you possibly work your way through the dozens of “classic”, doorstop textbooks?

I know because I've been there.

You need to know these topics

Lots of computer science textbooks try to be comprehensive. That's why they're 1,000 pages long and weigh a tonne. The problem is that without an instructor it's difficult to guide your own reading.

The Computer Science Book is different. It's a highly selective, single-volume introduction to the whole of computer science.

I'm not promising comprehensiveness. I'm promising a complete, practical introduction to the computer science knowledge you need to be a great programmer.

Before adding even the tiniest thing I challenged myself: “do people need to know this?". Only the essential made the cut. The result is ten concise chapters. Each one functions both as a standalone introduction and a launch pad for further, independent study. We'll cover:

  • Computer architecture
  • Operating systems
  • Algorithms and data structures
  • Computer networking
  • Databases
  • Concurrent programming
  • Theory of computation
  • Programming languages – in progress
  • Compilers and interpreters – in progress
  • Distributed systems – in progress

As a programmer you will deal with these topics literally every single day. Read The Computer Science Book and you'll be familiar with all of them. You'll understand the underlying concepts, be conversant with the terminology and, most importantly, know the limitations of your knowledge and where to get deeper information when you need it.

I'm writing The Computer Science Book in installments. When you buy a copy you'll get the latest version now and new chapters direct to your inbox as I finish them.

Better still, it's zero risk to you because I'm offering a money-back guarantee, no questions asked. I'm giving away the first chapter as a free sample. I'm confident you'll like it.

About the author

Tom Johnson

Tom Johnson

Hi, I'm Tom! After retraining at Founders & Coders in London I've been working as a software engineer. To make up for my lack of a formal computer science education I spent years working through all the textbooks on recommended reading lists.

The Computer Science Book is the result of those years of self-study. My aim is to make computer science more accessible to people who, like me, need to learn on the job – and quickly!

Recent articles

Any questions?

If you have any questions, please feel free to get in touch: book @ tmjohnson.co.uk

You can also find me on Github or on Twitter.