Chapter 0 Introduction 1
0.1 The Role of Algorithms 2
0.2 The History of Computing 4
0.3 The Science of Algorithms 10
0.4 Abstraction 11
0.5 An Outline of Our Study 12
0.6 Social Repercussions 13
Chapter 1 Data Storage 19
1.1 Bits and Their Storage 20
1.2 Main Memory 26
1.3 Mass Storage 29
1.4 Representing Information as Bit Patterns 35
*1.5 The Binary System 42
*1.6 Storing Integers 47
*1.7 Storing Fractions 53
*1.8 Data Compression 58
*1.9 Communication Errors 63
Chapter 2 Data Manipulation 73
2.1 Computer Architecture 74
2.2 Machine Language 77
2.3 Program Execution 83
*2.4 Arithmetic/Logic Instructions 90
*2.5 Communicating with Other Devices 94
*2.6 Other Architectures 100
Chapter 3 Operating Systems 109
3.1 The History of Operating Systems 110
3.2 Operating System Architecture 114
3.3 Coordinating the Machine's Activities 122
*3.4 Handling Competition Among Processes 125
3.5 Security 130
Chapter 4 Networking and the Internet 139
4.1 Network Fundamentals 140
4.2 The Internet 149
4.3 The World Wide Web 158
*4.4 Internet Protocols 167
4.5 Security 173
Chapter 5 Algorithms 187
5.1 The Concept of an Algorithm 188
5.2 Algorithm Representation 191
5.3 Algorithm Discovery 198
5.4 Iterative Structures 204
5.5 Recursive Structures 214
5.6 Efficiency and Correctness 222
Chapter 6 Programming Languages 239
6.1 Historical Perspective 240
6.2 Traditional Programming Concepts 248
6.3 Procedural Units 260
6.4 Language Implementation 268
6.5 Object-Oriented Programming 276
*6.6 Programming Concurrent Activities 283
*6.7 Declarative Programming 286
Chapter 7 Software Engineering 299
7.1 The Software Engineering Discipline 300
7.2 The Software Life Cycle 302
7.3 Software Engineering Methodologies 306
7.4 Modularity 308
7.5 Tools of the Trade 316
7.6 Quality Assurance 324
7.7 Documentation 328
7.8 The Human-Machine Interface 329
7.9 Software Ownership and Liability 332
Chapter 8 Data Abstractions 341
8.1 Basic Data Structures 342
8.2 Related Concepts 345
8.3 Implementing Data Structures 348
8.4 A Short Case Study 362
8.5 Customized Data Types 367
*8.6 Classes and Objects 371
*8.7 Pointers in Machine Language 372
Chapter 9 Database Systems 383
9.1 Database Fundamentals 384
9.2 The Relational Model 389
*9.3 Object-Oriented Databases 400
*9.4 Maintaining Database Integrity 402
*9.5 Traditional File Structures 406
9.6 Data Mining 414
9.7 Social Impact of Database Technology 416
Chapter 10 Computer Graphics 425
10.1 The Scope of Computer Graphics 426
10.2 Overview of 3D Graphics 428
10.3 Modeling 430
10.4 Rendering 439
*10.5 Dealing with Global Lighting 449
10.6 Animation 452
Chapter 11 Artificial Intelligence 461
11.1 Intelligence and Machines 462
11.2 Perception 467
11.3 Reasoning 473
11.4 Additional Areas of Research 484
11.5 Artificial Neural Networks 489
11.6 Robotics 497
11.7 Considering the Consequences 500
Chapter 12 Theory of Computation 509
12.1 Functions and Their Computation 510
12.2 Turing Machines 512
12.3 Universal Programming Languages 516
12.4 A Noncomputable Function 522
12.5 Complexity of Problems 527
*12.6 Public-Key Cryptography 536
Appendixes 545
A ASCII 547
B Circuits to Manipulate Two's Complement Representations 548
C A Simple Machine Language 551
D High-Level Programming Languages 553
E The Equivalence of Iterative and Recursive Structures 555
F Answers to Questions & Exercises 557
Index 597
*Asterisks indicate suggestions for optional sections.