«Understanding the Digital World» — By Brian Kernighan
I came across Kernighan’s 2017 book, Understanding the Digital World — What You Need to Know about Computers, the Internet, Privacy, and Security. I picked it up thanks to a random recommendation I read somewhere I don’t recall. And it’s really a great read. Of course, basically every reader that usually comes across this blog will be familiar with Kernighan. Be it because his most classic books from the 1970s, The Unix Programming Environment or The C Programming Language, or from the much more recent The Practice of Programming or The Go Programming Language, Kernighan is a world-renowned authority for technical content, for highly technical professionals at the time of their writing — And they tend to define the playing field later on. But this book I read is… For the general public. And it is superb at that. Kernighan states in his Preface that he teaches a very introductory course at Princeton (a title he admits to be too vague, Computers in our World) to people in the social sciences and humanities field. And this book shows how he explains all sorts of scary stuff to newcomers. As it’s easier than doing a full commentary on it, I’ll just copy the table of contents (only to the section level, it gets just too long if I also list subsections). The list of contents is very thorough (and the book is only 238 pages long!), but take a look at basically every chapter… And picture explaining those topics to computing laymen. An admirable feat!
- Part I: Hardware
- 1. What's in a computer?
- Logical construction
- Physical construction
- Moore's Law
- Summary
- 2. Bits, Bytes, and Representation of Information
- Analog versus Digital
- Analog-Digital Conversion
- Bits, Bytes and Binary
- Summary
- 3. Inside the CPU
- The Toy Computer
- Real CPUs
- Caching
- Other Kinds of Computers
- Summary
- 1. What's in a computer?
- Part II: Software
- 4. Algorithms
- Linear Algorithms
- Binary Search
- Sorting
- Hard Problems and Complexity
- Summary
- 5. Programming and Programming Languages
- Assembly Language
- High Level Languages
- Software Development
- Intellectual Property
- Standards
- Open Source
- Summary
- 6. Software Systems
- Operating Systems
- How an Operating System works
- Other Operating Systems
- File Systems
- Applications
- Layers of Software
- Summary
- 7. Learning to Program
- Programming Language Concepts
- A First JavaScript Example
- A Second JavaScript Example
- Loops
- Conditionals
- Libraries and Interfaces
- How JavaScript Works
- Summary
- 4. Algorithms
- Part III: Communications
- 8. Networks
- Telephones and Modems
- Cable and DSL
- Local Area Networks and Ethernet
- Wireless
- Cell Phones
- Bandwidth
- Compression
- Error Detection and Correction
- Summary
- The Internet
- An Internet Overview
- Domain Names and Addresses
- Routing
- TCP/IP protocols
- Higher-Level Protocols
- Copyright on the Internet
- The Internet of Things
- Summary
- 10. The World Wide Web
- How the Web works
- HTML
- Cookies
- Active Content in Web Pages
- Active Content Elsewhere
- Viruses, Worms and Trojan Horses
- Web Security
- Defending Yourself
- Summary
- 11. Data and Information
- Search
- Tracking
- Social Networks
- Data Mining and Aggregation
- Cloud Computing
- Summary
- 12. Privacy and Security
- Cryptography
- Anonymity
- Summary
- 13. Wrapping up </ul>
- 8. Networks