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
  • Compilers and interpreters
  • Distributed systems

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.

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.

See what readers have to say

Adrian Booth

Adrian Booth

Software engineer at Syft
https://medium.com/@adrianbooth

“This book is an essential read for anyone who felt they missed out on a computer science education, but also is a great reference guide for graduates.

Tom distils each topic beautifully and succinctly, making it an overall joy to read where you're provided just enough information on a topic to leave you craving more.

It's choc full of references to guide you in exploring each topic in more detail and contains many visual aids which assist you along the way.”

John Whiles

John Whiles

Software engineer at Contentful
http://www.johnwhiles.com/

“I read this book to get an overview of computer science. I'm a working programmer, but having graduated from a bootcamp rather than a comp-sci degree, I felt like I lacked some of the knowledge that would help me progress in my career.

This book covers a lot of the topics that I lacked confidence in. Each chapter gave me the lay of the land for the particular area in question. I now feel like I can understand discussions about topics like algorithmic complexity, compilers, networking and more. I also feel that if I needed to dive deeper into any of these topics, then I have a solid base to start from.

The book isn't just for theoretical or architectural interest. I’ve been able to apply some of the content to my day to day work. For example, I was able to use what I learnt about state machines to refactor a complex React component. The end result was a big improvement over my previous attempt, and I’m pretty proud of the code now!

I'd really recommend this book, if you're in a position like I was: knowing how to code but lacking knowledge of some computer science fundamentals.”

About the author

Tom Johnson

Tom Johnson

Hi, I'm Tom! After attending the highly selective Founders and Coders co-operative in London, I've worked in a wide range of engineering roles, from fast growing start-ups to global banks. To make up for my lack of a formal computer science education, I spent years working through all the textbooks you see 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.