Why you need 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.

The topics you need to succeed

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:

The whole book is available to read online for free. For a better experience, you can buy the book in PDF, ePub and Kindle formats. Here’s a sample chapter so you can decide whether it’s worth it for you. I’m confident you’ll like it.

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.

See what readers have to say

Adrian Booth

Adrian Booth

Software engineer at Syft

“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

“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. Since I don’t have a computer science degree, 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!

Extra online content

From time to time I post extra content that couldn’t fit into the first edition. It ranges from deep dives to my musings on computing.

Sign up to the mailing list to receive new content in your inbox. No spam!

* indicates required

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.