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
- 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.