CRC Press, 2021. — 273 p. — (How Things Work). — ISBN 978-0-367-56731-6.
It’s axiomatic to state that people fear what they do not understand, and this is especially true when it comes to technology. However, despite their prevalence, computers remain shrouded in mystery, and many users feel apprehensive when interacting with them. Smartphones have only exacerbated the issue. Indeed, most users of these devices leverage only a small fraction of the power they hold in their hands.
How Things Work: The Computer Science Edition is a roadmap for readers who want to overcome their technophobia and harness the full power of everyday technology. Beginning with the basics, the book demystifies the mysterious world of computer science, explains its fundamental concepts in simple terms, and answers the questions many users feel too intimidated to ask.
By the end of the book, readers will understand how computers and smart devices function and, more important, how they can make these devices work for them. To complete the picture, the book also introduces readers to the darker side of modern technology: security and privacy concerns, identity theft, and threats from the Dark Web.
Author
Computers Are EverywhereModern technology
Objectives of this book
Organization
Formatting conventions
A brief history of computingOverview
Major advances in computing
Abacus—2700–2300 BCE
Babbage’s Analytical Engine—1834–1871
The Advent of Software—1840s
Turing Machines—1930s
ABC: First Electrical Computer—1930s–1940s
ENIAC: First Digital Computer—1940s
The Advent of the Transistor—1940s–1950s
The First Commercial Computer—1951
The First Home Computers—1977
DigitizationOverview
What is digitization?
Keyboard Characters
Digitized Images
Digitized Music and Sound
Other Examples of Digitization
Data Loss
Advanced topic: okay, so what’s a “bit”?
What Is a Computer?Overview
Conceptual design
Hardware
Motherboard Components
Peripheral Components
Software
System Software
Application Software
Networking
Advanced topic: layering
Internal Hardware ComponentsThe CPU
The Control Unit
Registers
The Arithmetic/Logic Unit
Arithmetic Operations
Logic Operations
Data Transfer Operations
Other Operations
Assembler Mnemonics and Opcodes
Memory
The BUS
Internal Bus
External Bus
Data storage
Hard Drives
Optical Drives
Flash Drives
Solid-state Drives
Cloud Drives
Instruction execution
Advanced topic: arithmetic shift instructions
Hardware-External ComponentsInput-only devices
Keyboard
Mouse
Image Input
Audio Input
Barcode and Quick Response Readers
Optical Character Recognition
Speech Recognition
Biometric Devices
Output-only devices
Screens, Monitors, and Projectors
Casting
Augmented Reality and Virtual Reality
Printers
3D Printers
Audio and Video Streaming
Speech Synthesis
Input and output devices
Touchscreens
Smart Speakers
MIDI Devices
Advanced topic: computer vision
Networking: The Art of CommunicationNetwork attributes
Network Scale
PANs
LANs
CANs
MANs
WANs
Network Objectives
SANs
EPNs
VPNs
Network Access
Network organization and internetworking
Intranet
Extranets
The Internet
Darknets
Network topology
Bus Network
Star Network
Ring Topology
Mesh Network
Hybrid Networks
Network components
Network Interface Controllers
Routers
Hubs
Switches
Bridges
Modems
Firewalls
Network technologies
Physical Transmission Media
CAT 5 Cable
Coaxial Cable
Fiber-Optic Cable
Ethernet
Wireless Networks
Wi-Fi
Bluetooth
How do networks work?
The OSI Model
The DARPA Network Model
The TCP/IP Stack
Data Link Layer
The IP Layer
The TCP Layer
Application Layer
The Internet
What’s DNS?
What’s a URL?
Networking example
Advanced topic: IoT
Software: The Elusive EnigmaWhat is software?
Software layers
Firmware and BIOS
Operating System and Utilities
Application Software
Advanced topic: microcode
Software: Operating SystemsWhat does an operating system do?
Process Lifecycle Management
Invocation
Execution
Scheduling
Context Switching
Process Suspension
Kernel Mode vs. User Mode
Process Termination
The Idle Process
Resource and Hardware Management
Operating System Architecture
Application Interface
The Kernel
Device Drivers
Software Resources
Memory Management
File System Management
The Abstraction
The Implementation
User Interfaces
User Security
Process Security
Data Security
System Initialization (Booting)
Security
User Security
Process Security
Data Security
Common Services and Utilities
File Explorers
Disk Administration
Backup and Restore
Clipboard
Network Administration
Example: disk read scenario
Advanced topic: types of operating systems
Single-Tasking vs. Multitasking
Single-User vs. Multi-User
Real-Time Operating Systems
Software Architecture and DesignWhat is a computer application?
Where are applications used?
Business
Music
Education
Health Care
Military
The design of software applications
Software architecture
MVC
The View
The Controller
The Model
MVC in Practice
MVC: Single Program
MVC: Distributed Components
MVC: Advantages and Disadvantages
Advanced topic: service-oriented architecture
Software: How It’s BuiltWhat is computer programming?
What is a programming language?
A Brief History of Programming Languages
Classes of Computer Languages
Machine Languages
Assembly Languages
Imperative vs. Declarative
Structured Programming Languages
Object-Oriented Programming Languages
Miscellaneous Language Categories
How do programs execute?
Compilation
Interpretation
Comparison of Execution Techniques
The software development lifecycle
Requirements Specification
Analysis Phase
Design Phase
System Architecture
State Diagrams
Transition Tables
Data Architecture Diagrams
View Adoption
Buy vs. Build
Program and Component Design
System Development Phase
A Day in the Life of a Programmer
System Integration Phase
Functional Testing Phase
Debugging
Performance Testing Phase
Acceptance Testing and Deployment
Maintenance Cycles
Advanced topic: development methodologies
Waterfall Model
Prototyping
Agile Methodology
Software Development Challenges
Putting It All TogetherGeneral Comments
Roman Numerals: A Quick Overview
Converting Roman numerals to integerRequirements
Design
Code
Program Listing
Java Methods
The main() Method
The convertRomanCharToIntegerValue() Method
The convertRomanStringToInt() Method
Compile and Execute
Integer to RomanRequirements
Analysis
Design
Code
Program Listing
The main() Method
The convertIntegerToRomanNumeral() Method
Compile and Execute
Advanced topic: Combined program
Modified Design
Program Listing
Compile and Execute
Additional Program Improvements
Security and PrivacyWhat do people know about you?
Why should you care?
General Concerns
Monetization of Data
Data Breaches
Identity Theft
Malware
How do Organizations acquire data?
Free Services
Tracking Your Surfing
Device Fingerprinting
Social Media
How can you protect yourself?
Think Before You Share
Protect Passwords
Log Off
Browsers and Search Engines
Wi-Fi Networks
Update Software
Anti-Malware Software
Use a VPN
Verify Invoices and Bills
Clean Up
Remain Wary
Advanced topic: the dark side
Glossary of terms
Reading list