Table of contents : Title Page Copyright Page Contents Preface Introduction Part I: Hardware 1. What Is a Computer? 1.1 Logical Construction 1.1.1 Processor 1.1.2 Primary memory 1.1.3 Secondary storage 1.1.4 Et cetera 1.2 Physical Construction 1.3 Moore’s Law 1.4 Summary 2. Bits, Bytes, and Representation of Information 2.1 Analog versus Digital 2.2 Analog-Digital Conversion 2.2.1 Digitizing images 2.2.2 Digitizing sound 2.2.3 Digitizing movies 2.2.4 Digitizing text 2.3 Bits, Bytes, and Binary 2.3.1 Bits 2.3.2 Powers of two and powers of ten 2.3.3 Binary numbers 2.3.4 Bytes 2.4 Summary 3. Inside the Processor 3.1 The Toy Computer 3.1.1 The first Toy program 3.1.2 The second Toy program 3.1.3 Branch instructions 3.1.4 Representation in memory 3.2 Real Processors 3.3 Caching 3.4 Other Kinds of Computers 3.5 Summary Wrap-up on Hardware Part II: Software 4. Algorithms 4.1 Linear Algorithms 4.2 Binary Search 4.3 Sorting 4.4 Hard Problems and Complexity 4.5 Summary 5. Programming and Programming Languages 5.1 Assembly Language 5.2 High-Level Languages 5.3 Software Development 5.3.1 Libraries, interfaces, and development kits 5.3.2 Bugs 5.4 Intellectual Property 5.4.1 Trade secret 5.4.2 Trademark 5.4.3 Copyright 5.4.4 Patent 5.4.5 Licenses 5.5 Standards 5.6 Open Source Software 5.7 Summary 6. Software Systems 6.1 Operating Systems 6.2 How an Operating System Works 6.2.1 System calls 6.2.2 Device drivers 6.3 Other Operating Systems 6.4 File Systems 6.4.1 Secondary storage file systems 6.4.2 Removing files 6.4.3 Other file systems 6.5 Applications 6.6 Layers of Software 6.7 Summary 7. Learning to Program 7.1 Programming Language Concepts 7.2 A First JavaScript Program 7.3 A Second JavaScript Program 7.4 Loops and Conditionals 7.5 JavaScript Libraries and Interfaces 7.6 How JavaScript Works 7.7 A First Python Program 7.8 A Second Python Program 7.9 Python Libraries and Interfaces 7.10 How Python Works 7.11 Summary Wrap-up on Software Part III: Communications 8. Networks 8.1 Telephones and Modems 8.2 Cable and DSL 8.3 Local Area Networks and Ethernet 8.4 Wireless 8.5 Cell Phones 8.6 Bandwidth 8.7 Compression 8.8 Error Detection and Correction 8.9 Summary 9. The Internet 9.1 An Internet Overview 9.2 Domain Names and Addresses 9.2.1 Domain Name System 9.2.2 IP addresses 9.2.3 Root servers 9.2.4 Registering your own domain 9.3 Routing 9.4 TCP/IP Protocols 9.4.1 IP, the Internet Protocol 9.4.2 TCP, the Transmission Control Protocol 9.5 Higher-Level Protocols 9.5.1 Telnet and SSH: remote login 9.5.2 SMTP: Simple Mail Transfer Protocol 9.5.3 File sharing and peer-to-peer protocols 9.6 Copyright on the Internet 9.7 The Internet of Things 9.8 Summary 10. The World Wide Web 10.1 How the Web Works 10.2 HTML 10.3 Cookies 10.4 Active Content in Web Pages 10.5 Active Content Elsewhere 10.6 Viruses, Worms and Trojan Horses 10.7 Web Security 10.7.1 Attacks on clients 10.7.2 Attacks on servers 10.7.3 Attacks on information in transit 10.8 Defending Yourself 10.9 Summary Part IV: Data 11. Data and Information 11.1 Search 11.2 Tracking 11.3 Social Networks 11.4 Data Mining and Aggregation 11.5 Cloud Computing 11.6 Summary 12. Artificial Intelligence and Machine Learning 12.1 Historical Background 12.2 Classical Machine Learning 12.3 Neural Networks and Deep Learning 12.4 Natural Language Processing 12.5 Summary 13. Privacy and Security 13.1 Cryptography 13.1.1 Secret-key cryptography 13.1.2 Public-key cryptography 13.2 Anonymity 13.2.1 Tor and the Tor Browser 13.2.2 Bitcoin 13.3 Summary 14. What Comes Next? Notes Glossary Index