| Preface |
|
xiii | |
| Introduction |
|
xvii | |
|
1 Why Did the Chicken Cross the Road? |
|
|
1 | (22) |
|
|
|
1 | (2) |
|
|
|
3 | (2) |
|
|
|
5 | (1) |
|
1.3 A Brief History of Computers |
|
|
5 | (2) |
|
|
|
7 | (1) |
|
|
|
8 | (1) |
|
|
|
9 | (1) |
|
|
|
10 | (1) |
|
|
|
10 | (3) |
|
CT: Ready for All Contingencies |
|
|
12 | (1) |
|
|
|
12 | (1) |
|
CT: Check before Proceeding |
|
|
12 | (1) |
|
|
|
13 | (2) |
|
|
|
14 | (1) |
|
CT: Consider Extreme Cases |
|
|
14 | (1) |
|
|
|
15 | (2) |
|
|
|
17 | (1) |
|
1.10 The Euclidean GCD Algorithm |
|
|
17 | (1) |
|
CT: Apply Domain Knowledge |
|
|
18 | (1) |
|
1.11 Goals and How to Get There |
|
|
18 | (1) |
|
|
|
19 | (1) |
|
|
|
19 | (4) |
|
|
|
22 | (1) |
|
|
|
23 | (24) |
|
|
|
23 | (3) |
|
|
|
26 | (5) |
|
|
|
29 | (1) |
|
2.2.1 Numbers in Other Bases |
|
|
29 | (1) |
|
CT: Evaluate Different Options |
|
|
30 | (1) |
|
2.3 Positive and Negative Integers |
|
|
31 | (2) |
|
|
|
33 | (3) |
|
CT: Mind Resource Limitations |
|
|
35 | (1) |
|
CT: Symbols Can Be Deceiving |
|
|
35 | (1) |
|
|
|
36 | (1) |
|
|
|
37 | (1) |
|
|
|
37 | (3) |
|
|
|
37 | (1) |
|
|
|
38 | (2) |
|
|
|
40 | (1) |
|
|
|
40 | (3) |
|
|
|
43 | (4) |
|
|
|
44 | (1) |
|
|
|
45 | (2) |
|
|
|
47 | (22) |
|
3.1 Digital Electronic Circuits |
|
|
47 | (6) |
|
|
|
48 | (3) |
|
|
|
51 | (1) |
|
CT: Create a Virtuous Cycle |
|
|
52 | (1) |
|
|
|
53 | (1) |
|
3.2.1 Expressions and Laws |
|
|
53 | (1) |
|
|
|
54 | (1) |
|
|
|
54 | (4) |
|
|
|
56 | (1) |
|
3.3.1 Conditions and Implications |
|
|
56 | (2) |
|
|
|
58 | (1) |
|
3.4 Logic Applied to Bits |
|
|
58 | (3) |
|
CT: Combine Basic Components |
|
|
61 | (1) |
|
|
|
61 | (8) |
|
|
|
61 | (1) |
|
|
|
62 | (4) |
|
CT: Perform Everyday Programming |
|
|
66 | (1) |
|
|
|
67 | (2) |
|
|
|
69 | (26) |
|
4.1 What Is an Operating System? |
|
|
69 | (1) |
|
4.2 Operating System Kernel |
|
|
70 | (1) |
|
|
|
70 | (1) |
|
|
|
71 | (1) |
|
CT: Promote Free and Open |
|
|
72 | (1) |
|
4.4 Graphical User Interface |
|
|
72 | (1) |
|
|
|
73 | (2) |
|
|
|
73 | (2) |
|
|
|
75 | (1) |
|
4.6 Are You Talking to Me? |
|
|
75 | (2) |
|
|
|
75 | (1) |
|
CT: Pay Attention to Details |
|
|
76 | (1) |
|
|
|
76 | (1) |
|
4.7 Command-Line Interface |
|
|
77 | (3) |
|
|
|
80 | (1) |
|
|
|
80 | (4) |
|
|
|
81 | (1) |
|
|
|
81 | (2) |
|
|
|
83 | (1) |
|
4.8.3 File Management and Access Control |
|
|
83 | (1) |
|
|
|
84 | (6) |
|
|
|
85 | (1) |
|
|
|
86 | (1) |
|
|
|
86 | (1) |
|
4.9.2 Process Address Space |
|
|
87 | (1) |
|
4.9.3 Virtual Address Space Layout |
|
|
88 | (1) |
|
|
|
89 | (1) |
|
|
|
90 | (1) |
|
|
|
90 | (2) |
|
|
|
92 | (3) |
|
CT: Better Control Better System |
|
|
92 | (2) |
|
|
|
94 | (1) |
|
|
|
95 | (26) |
|
|
|
95 | (1) |
|
|
|
96 | (2) |
|
5.3 Local and Wide Area Networks |
|
|
98 | (2) |
|
5.4 Internet Architecture |
|
|
100 | (2) |
|
CT: Redundancy for Safety |
|
|
100 | (1) |
|
|
|
101 | (1) |
|
|
|
102 | (1) |
|
|
|
103 | (2) |
|
|
|
104 | (1) |
|
|
|
105 | (1) |
|
|
|
105 | (1) |
|
|
|
106 | (2) |
|
|
|
107 | (1) |
|
|
|
108 | (1) |
|
|
|
109 | (2) |
|
CT: Indirection Adds Flexibility |
|
|
110 | (1) |
|
5.12 DNS Servers and Resolvers |
|
|
111 | (2) |
|
|
|
112 | (1) |
|
|
|
113 | (1) |
|
5.13.1 Accessing Domain Registration Data |
|
|
113 | (1) |
|
|
|
114 | (1) |
|
|
|
115 | (6) |
|
|
|
117 | (2) |
|
|
|
119 | (2) |
|
6 Home Sweet Homepage :-) |
|
|
121 | (26) |
|
6.1 What Is a Web Server? |
|
|
121 | (1) |
|
|
|
122 | (1) |
|
6.3 A Brief History of the Web |
|
|
123 | (1) |
|
|
|
124 | (4) |
|
CT: Be Aware of the Implicit Context |
|
|
126 | (1) |
|
|
|
126 | (1) |
|
|
|
127 | (1) |
|
|
|
128 | (2) |
|
|
|
130 | (1) |
|
|
|
130 | (1) |
|
|
|
130 | (2) |
|
CT: Really Use Your Website |
|
|
131 | (1) |
|
CT: Be Careful with Online Information |
|
|
131 | (1) |
|
6.8 Dynamic Generation of Webpages |
|
|
132 | (2) |
|
6.8.1 Active Server Pages |
|
|
133 | (1) |
|
|
|
134 | (1) |
|
6.9 Client-Side Scripting |
|
|
134 | (1) |
|
6.10 Hypertext Transfer Protocol |
|
|
135 | (3) |
|
|
|
137 | (1) |
|
|
|
138 | (1) |
|
|
|
138 | (1) |
|
|
|
139 | (1) |
|
|
|
139 | (2) |
|
|
|
140 | (1) |
|
|
|
140 | (1) |
|
|
|
141 | (1) |
|
6.14 Standard Web Technologies |
|
|
142 | (5) |
|
|
|
144 | (3) |
|
|
|
147 | (28) |
|
|
|
148 | (4) |
|
|
|
148 | (1) |
|
CT: Safeguard Security Realms |
|
|
149 | (2) |
|
CT: Prevent Illicit Login |
|
|
151 | (1) |
|
|
|
152 | (1) |
|
7.3 What Is a Digital Certificate? |
|
|
153 | (2) |
|
|
|
155 | (5) |
|
7.4.1 Symmetric Cryptosystems |
|
|
157 | (2) |
|
CT: Secure Sensitive Files |
|
|
159 | (1) |
|
|
|
159 | (1) |
|
7.5 Public-Key Cryptography |
|
|
160 | (2) |
|
|
|
160 | (2) |
|
|
|
162 | (1) |
|
7.6 RSA Public-Key Algorithm |
|
|
162 | (2) |
|
|
|
164 | (1) |
|
|
|
164 | (1) |
|
|
|
164 | (3) |
|
|
|
167 | (3) |
|
7.9.1 Secure Email with Thunderbird |
|
|
167 | (2) |
|
CT: Free from Surveillance |
|
|
169 | (1) |
|
7.10 Security Attacks and Defenses |
|
|
170 | (5) |
|
CT: All for One and One for All |
|
|
171 | (3) |
|
|
|
174 | (1) |
|
|
|
175 | (26) |
|
|
|
175 | (3) |
|
|
|
175 | (1) |
|
|
|
176 | (1) |
|
|
|
177 | (1) |
|
|
|
178 | (4) |
|
|
|
178 | (2) |
|
8.2.2 Improved Bubble Sort |
|
|
180 | (1) |
|
|
|
180 | (1) |
|
|
|
181 | (1) |
|
|
|
181 | (1) |
|
|
|
182 | (1) |
|
|
|
182 | (4) |
|
|
|
183 | (1) |
|
|
|
184 | (2) |
|
8.4 Recursive Solution Formula |
|
|
186 | (1) |
|
CT: Apply the Recursion Magic |
|
|
186 | (1) |
|
|
|
187 | (3) |
|
|
|
190 | (3) |
|
|
|
193 | (1) |
|
|
|
194 | (1) |
|
|
|
195 | (1) |
|
|
|
195 | (2) |
|
CT: Weigh Speed vs. Complexity |
|
|
196 | (1) |
|
|
|
197 | (4) |
|
|
|
197 | (3) |
|
|
|
200 | (1) |
|
|
|
201 | (28) |
|
CT: Garbage in, Garbage Out |
|
|
201 | (1) |
|
|
|
202 | (2) |
|
|
|
202 | (2) |
|
9.2 Raster Image Encoding |
|
|
204 | (2) |
|
9.2.1 Raster Image Formats |
|
|
204 | (1) |
|
|
|
205 | (1) |
|
|
|
205 | (1) |
|
9.2.3 Scalable Vector Graphics |
|
|
205 | (1) |
|
|
|
206 | (2) |
|
|
|
206 | (1) |
|
9.3.2 Audio Encoding Formats |
|
|
207 | (1) |
|
|
|
208 | (2) |
|
|
|
208 | (1) |
|
|
|
209 | (1) |
|
9.5 Format of Data and Files |
|
|
210 | (2) |
|
|
|
210 | (1) |
|
CT: Data Is Application Dependent |
|
|
211 | (1) |
|
|
|
211 | (1) |
|
|
|
212 | (1) |
|
|
|
212 | (4) |
|
|
|
213 | (1) |
|
9.7.2 XML Document Format |
|
|
214 | (1) |
|
9.7.3 XML for News Syndication |
|
|
214 | (1) |
|
CT: Markup for Interoperability |
|
|
215 | (1) |
|
|
|
216 | (4) |
|
CT: Compression Is Not Encryption |
|
|
217 | (1) |
|
|
|
217 | (1) |
|
|
|
218 | (2) |
|
CT: Customize for Efficiency |
|
|
220 | (1) |
|
|
|
220 | (2) |
|
CT: Synthesize and Simplify |
|
|
222 | (1) |
|
|
|
222 | (3) |
|
9.10.1 Relational Databases |
|
|
222 | (1) |
|
9.10.2 SQL: Structured Query Language |
|
|
223 | (1) |
|
CT: Combine Web and Database |
|
|
224 | (1) |
|
|
|
225 | (1) |
|
|
|
225 | (1) |
|
9.11 Protecting Personal Data |
|
|
225 | (4) |
|
|
|
226 | (1) |
|
|
|
227 | (2) |
|
|
|
229 | (20) |
|
|
|
230 | (2) |
|
|
|
231 | (1) |
|
|
|
231 | (1) |
|
|
|
232 | (2) |
|
|
|
233 | (1) |
|
|
|
233 | (1) |
|
10.3 Program Configuration and Customization |
|
|
234 | (1) |
|
|
|
234 | (1) |
|
|
|
234 | (2) |
|
|
|
235 | (1) |
|
10.5 Machine Language Programs |
|
|
236 | (1) |
|
10.6 Assembly Language Programs |
|
|
237 | (1) |
|
|
|
238 | (2) |
|
|
|
240 | (2) |
|
|
|
241 | (1) |
|
10.9 Software Development |
|
|
242 | (1) |
|
10.10 Object-Oriented Programming |
|
|
242 | (4) |
|
|
|
242 | (1) |
|
|
|
243 | (1) |
|
|
|
244 | (1) |
|
CT: Expose Only the Interface |
|
|
244 | (2) |
|
10.11 Object-Oriented Design |
|
|
246 | (3) |
|
|
|
247 | (2) |
|
|
|
249 | (2) |
|
|
|
249 | (2) |
| Website and Interactive Demos |
|
251 | (2) |
| Bibliography |
|
253 | (2) |
| Index |
|
255 | |