Contents
Preface
Introduction
1 Why Did the Chicken Cross the Road?
1.1 The Computer
1.2 Turing Machine
CT: ABSTRACT AWAY
1.3 A Brief History of Computers
1.4 Software
1.5 Programming
1.6 Syntax and Semantics
CT: BEWARE OF SEMANTICS
1.7 Flowcharts
CT: READY FOR ALL CONTINGENCIES
CT: FIRST THINGS FIRST
CT: CHECK BEFORE PROCEEDING
1.8 Algorithms
CT: MAKE IT AN ALGORITHM
CT: CONSIDER EXTREME CASES
1.9 Pseudo Code
CT: STEP BY STEP
1.10 The Euclidean GCD Algorithm
CT: APPLY DOMAIN KNOWLEDGE
1.11 Goals and How to Get There
CT: BREAK IT DOWN
1.12 Road Crossing
Exercises
2 Bits, Bytes, and Words
2.1 Digital Computers
2.2 Binary Numbers
CT: MEANING OF SYMBOLS
2.2.1 Numbers in Other Bases
CT: EVALUATE DIFFERENT OPTIONS
2.3 Positive and Negative Integers
2.4 Modular Arithmetic
CT: MIND RESOURCE LIMITATIONS
CT: SYMBOLS CAN BE DECEIVING
2.5 Base Conversion
CT: START FROM THE END
2.6 Characters
2.6.1 US-ASCII
2.6.2 Unicode
CT: DATA CONTEXT
2.7 Editing Text
2.8 Data Output
CT: DELIVER THE MESSAGE
Exercises
3 True or False
3.1 Digital Electronic Circuits
CT: NOTICE THE LOGIC
CT: BOTTOM UP
CT: CREATE A VIRTUOUS CYCLE
3.2 Boolean Algebra
3.2.1 Expressions and Laws
3.2.2 Universal Gates
3.3 Decision Making
CT: LOGIC CHECKS
3.3.1 Conditions and Implications
CT: FOLLOW THE LOGIC
3.4 Logic Applied to Bits
CT: COMBINE BASIC COMPONENTS
3.5 Logic and Iteration
3.5.1 The while Loop
3.5.2 The for Loop
CT: PERFORM EVERYDAY PROGRAMMING
Exercises
4 Who Is the Master?
4.1 What Is an Operating System?
4.2 Operating System Kernel
4.2.1 System Programs
4.3 Open Source Software
CT: PROMOTE FREE AND OPEN
4.4 Graphical User Interface
4.5 Desktop Overview
4.5.1 Desktop Components
CT: KNOW YOUR ARENA
4.6 Are You Talking to Me?
4.6.1 Input Focus
CT: PAY ATTENTION TO DETAILS
4.6.2 Event Handling
4.7 Command-Line Interface
CT: MIND THE TRADE-OFF
4.8 Files
4.8.1 File Content Types
4.8.2 File Tree
CT: LEARN FROM TREES
4.8.3 File Management and Access Control
4.9 Processes
CT: KEEP IT IN CONTEXT
CT: CAPTURE THE STATE
4.9.1 Process Lifecycle
4.9.2 Process Address Space
4.9.3 Virtual Address Space Layout
4.9.4 Address Mapping
CT: TIMESHARING
4.10 Managing Tasks
4.11 Up and Running
CT: BETTER CONTROL BETTER SYSTEM
Exercises
5 Hello There!
5.1 What Is a Network?
5.2 The Internet
5.3 Local and Wide Area Networks
5.4 Internet Architecture
CT: REDUNDANCY FOR SAFETY
CT: ONE AND ALL
5.5 Wireless Networking
5.6 Networking Protocols
CT: FOLLOW PROTOCOL
5.7 IP Addresses
5.8 Domain Names
5.9 Client and Server
CT: INTEROPERATE
5.10 Peer to Peer
5.11 DNS Service
CT: INDIRECTION ADDS FLEXIBILITY
5.12 DNS Servers and Resolvers
CT: DECENTRALIZE
5.13 Domain Registration
5.13.1 Accessing Domain Registration Data
5.14 Packet Switching
5.15 Cloud Computing
CT: BACKUP IN THE CLOUD
Exercises
6 Home Sweet Homepage :-)
6.1 What Is a Web Server?
6.2 Web Browsers
6.3 A Brief History of the Web
6.4 URLs
CT: BE AWARE OF THE IMPLICIT CONTEXT
6.4.1 URL Encoding
CT: WEAR DIFFERENT HATS
6.5 HTML and HTML5
CT: MARK IT UP
6.6 Webpage Styling
6.7 Web Hosting
CT: REALLY USE YOUR WEBSITE
CT: BE CAREFUL WITH ONLINE INFORMATION
6.8 Dynamic Generation of Webpages
6.8.1 Active Server Pages
6.8.2 Database Access
6.9 Client-Side Scripting
6.10 Hypertext Transfer Protocol
6.10.1 HTTP Caching
CT: CACHE FOR SPEED
6.11 Website Development
CT: DEVELOP FOR USERS
6.12 Web Search Engines
CT: GOOGLE IT
CT: BELIEVE IT OR NOT
6.13 Web Services
6.14 Standard Web Technologies
Exercises
7 Keeping It Safe
7.1 Login
7.1.1 Website Login
CT: SAFEGUARD SECURITY REALMS
CT: PREVENT ILLICIT LOGIN
7.2 HTTPS and SSL/TLS
7.3 What Is a Digital Certificate?
7.4 Cryptography
7.4.1 Symmetric Cryptosystems
CT: SECURE SENSITIVE FILES
CT: ADD SECURITY LAYERS
7.5 Public-Key Cryptography
CT: BREAKTHROUGH
CT: BEWARE OF BUGS
7.6 RSA Public-Key Algorithm
7.7 Digital Signature
CT: SIGN DIGITALLY
7.8 Message Digests
7.9 Secure Email
7.9.1 Secure Email with Thunderbird
CT: FREE FROM SURVEILLANCE
7.10 Security Attacks and Defenses
CT: ALL FOR ONE AND ONE FOR ALL
Exercises
8 Solve That Problem
8.1 Solving Puzzles
8.1.1 Egg Frying
8.1.2 Liquid Measuring
8.1.3 A Magic Tray
8.2 Sorting
8.2.1 Bubble Sort
8.2.2 Improved Bubble Sort
CT: CUT IT DOWN
CT: BUILD IT UP
CT: STEPWISE REFINEMENT
CT: VERSION 2.O
8.3 Recursion
CT: REMEMBER RECURSION
8.3.1 Quicksort
8.4 Recursive Solution Formula
CT: APPLY THE RECURSION MAGIC
8.5 Tower of Hanoi
8.6 Eight Queens
8.7 General Backtracking
8.8 Tree Traversals
CT: FORM TREE STRUCTURES
8.9 Complexity
CT: WEIGH SPEED VS. COMPLEXITY
8.10 Heuristics
CT: DEVISE HEURISTICS
Exercises
9 Data everywhere
CT: GARBAGE IN, GARBAGE OUT
9.1 Digital Images
9.1.1 Representing Color
9.2 Raster Image Encoding
9.2.1 Raster Image Formats
CT: SMALL IS BEAUTIFUL
9.2.2 Vector Graphics
9.2.3 Scalable Vector Graphics
9.3 Audio and Video
9.3.1 Digital Audio
9.3.2 Audio Encoding Formats
9.4 Digital Video
9.4.1 Video Containers
9.4.2 Video Codecs
9.5 Format of Data and Files
CT: INTERPRETING DATA
CT: DATA IS APPLICATION DEPENDENT
CT: SAVE TREES WITH PDF
9.6 Data Sharing
9.7 Document Markup
9.7.1 What Is XML?
9.7.2 XML Document Format
9.7.3 XML for News Syndication
CT: MARKUP FOR INTEROPERABILITY
9.8 Data Compression
CT: COMPRESSION IS NOT ENCRYPTION
9.8.1 LZ Deflation
9.8.2 Huffman Code
CT: CUSTOMIZE FOR EFFICIENCY
9.9 Data Structures
CT: SYNTHESIZE AND SIMPLIFY
9.10 What Is a Database?
9.10.1 Relational Databases
9.10.2 SQL: Structured Query Language
CT: COMBINE WEB AND DATABASE
9.10.3 Big Data
CT: DATA ...