Charles Dierbach Wiley Contents Preface XXI Acknowledgments xxv About the Author xxvii Introduction 1 MOTIVATION 2 FUNDAMENTALS 2 1.1 What Is Computer Science? 2 Computational Problem Solving 5 of Computational Problem Solving 1.1.1 The Essence of 1.1.2 Limits Self-Test Questions 1.2 1.2.2 6 Algorithm? 6 Algorithms and Computers: an Self-Test Questions 1.3 6 Computer Algorithms 1.2.1 What, Is A Perfect Match Computer Hardware 9 1.3.1 Digital Computing: It's All about 1.3.3 Fundamental Hardware 1.3.4 Operating 1.3.5 Limits of 7 8 Switches 9 10 1.3.2 The Binary Number System 11 Components Systems—Bridging Software and Hardware Integrated Self-Test 1.4 3 Questions Computer Software Circuits Technology: Moore's 13 14 Computer Software? 14 14 1.4.2 Syntax, Semantics, and Program Translation 17 1.4.3 Procedural vs. Object-Oriented Programming 1.4.1 What Is Self-Test Questions 17 COMPUTATIONAL PROBLEM SOLVING Computational Problem Analysis 18 1.5 The Process of 1.5.1 1.5.2 Program Design Problem 19 Program Implementation 21 1.5.4 Program Testing 1.5.3 21 17 Solving 17 Law 11 12 x Contents 1.6 The 1.6.3 The 22 Python 1.6.2 The IDLE Python Development Environment Standard Python Python 1.6.4 A Bit of 1.6.5 Learning 1.7 A First Library Program—Calculating 26 the Drake Equation 29 30 1.7.2 Problem Analysis 30 1.7.3 Program Design 1.7.4 30 Program Implementation 1.7.5 30 32 Program Testing Chapter Summary 33 Chapter Exercises 34 Python Programming Exercises 36 Modification Problems Program Development 22 23 24 How to Use IDLE 1.7.1 The Problem Program 22 Python Programming Language 1.6.1 About 37 Problems 37 Data and Expressions MOTIVATION 38 39 FUNDAMENTAL CONCEPTS 2.1 Literals 2.1.1 What Is Literal? a 2.1.2 Numeric Literals 2.1.3 40 40 String Literals 40 40 44 2.1.4 Control Characters 46 2.1.5 47 String Formatting 2.1.6 Implicit and Explicit Line Joining 48 2.1.7 Let's Apply It—"Hello World Unicode Encoding" Self-Test Questions 2.2 Variables and Identifiers 2.2.1 What Is a 50 Variable? 50 2.2.2 Variable Assignment and 2.2.3 What Is 2.2.4 Identifier? Keywords and 2.2.5 Let's Self-Test 2.3 an Operators Apply Keyboard Input 52 53 Other Predefined Identifiers in It—"Restaurant Tab Calculation" Questions an 2.3.2 Arithmetic 57 Operator? Operators 57 Self-Test Questions 60 Expressions and Data Types 2.4.1 What Is an 61 61 Expression? 2.4.2 Operator Precedence 2.4.3 55 56 2.3.3 Let's Apply It—"Your Place in the Universe" 2.4 Python 57 2.3.1 What Is 48 49 Operator Associativity 61 63 59 54 Contents 2.4.4 What Is 2.4.5 Data a 64 Type? 64 Mixed-Type Expressions 2.4.6 Let's Apply Self-Test It—"Temperature Questions 66 Conversion COMPUTATIONAL PROBLEM SOLVING 2.5 Age in Seconds 2.5.2 Problem 2.5.3 67 67 Program 2.5.1 The Problem 65 Program" 67 67 Analysis 67 Program Design Implementation 2.5.4 Program Chapter Summary 74 Chapter Exercises 74 Python Programming Exercises Program Modification Problems and Testing 69 76 76 Program Development Problems 77 Control Structures MOTIVATION 79 80 FUNDAMENTAL CONCEPTS 3.1 What Is a 80 Control Structure? 80 3.2 Boolean Expressions (Conditions) Operators 81 3.2.2 Membership Operators 82 81 3.2.1 Relational 3.2.3 Boolean 3.2.4 Precedence and Boolean 3.2.5 Short-Circuit 3.2.6 83 Operators Operator (Lazy) Evaluation Expressions Logically Equivalent Boolean Expressions Self-Test 85 86 87 88 Questions 3.3 Selection Control 89 3.3.1 If Statement 89 3.3.2 Indentation in Python 90 3.3.3 Multi-Way Selection 91 3.3.4 Let's Apply It—Number of Days Self-Test Questions 96 3.4 Iterative Control Program 96 3.4.1 While Statement 97 3.4.2 Input Error Checking 3.4.3 Infinite in Month loops 98 99 3.4.4 Definite vs. 3.4.5 Boolean Indefinite Flags and Indefinite Loops Loops 100 100 3.4.6 Let's Apply It—Coin Change Exercise Program Self-Test Questions 104 COMPUTATIONAL PROBLEM SOLVING 3.5 Calendar Month 3.5.1 Program The Problem 104 104 104 101 94 xi 3.5.2 Problem Analysis 3.5.3 104 105 Program Design 3.5.4 Program Implementation and Testing Chapter Summary 117 Chapter Exercises 107 118 Python Programming Exercises 120 Program Modification Problems Program Development 121 Problems 123 Lists 125 MOTIVATION 126 FUNDAMENTAL CONCEPTS 4.1 List Structures 4.1.1 What Is 127 127 a List? 4.1.2 Common List 127 4.1.3 List Traversal 128 Self-Test Questions 129 4.2 Lists (Sequences) 4.2.1 List 4.2.2 Python Tuples 4.2.3 Sequences 127 Operations in 130 Python 130 Type 131 132 4.2.4 Nested Lists 134 4.2.5 Let's Apply It—A Chinese Zodiac Program Self-Test Questions 4.3 Iterating Over Lists (Sequences) in Python 4.3.1 For 135 137 137 137 Loops 4.3.2 The Built-in range Function 138 4.3.3 List Index Values Iterating Over List Elements 4.3.4 While 4.3.5 Let's Self-Test 4.4 More 4.4.1 on Loops Apply and Lists (Sequences) 144 144 Assigning and Copying Lists 144 146 Comprehensions COMPUTATIONAL PROBLEM SOLVING 4.5 Calendar Year Program 4.5.1 The Problem 4.5.2 Problem 147 147 147 Analysis 147 4.5.3 Program Design 148 4.5.4 Program Implementation and Testing Chapter Summary 161 Chapter Exercises 162 Python Programming Exercises Program Modification Problems Program Development Problems 164 164 165 139 140 It—Password Encryption/Decryption Questions Python Lists 4.4.2 List vs. 149 Program 141 Contents Functions 168 MOTIVATION 169 169 FUNDAMENTAL CONCEPTS 5.1 Program Routines 5.1.1 What Is 5.1.2 169 Function Routine? a Functions Defining 169 170 5.1.3 Let's Apply It—Temperature Self-Test Questions 175 5.2 More on Functions Conversion Program (Function Version) 173 176 5.2.1 Calling Value-Returning Functions 176 177 5.2.2 Calling Non-Value-Returning Functions 5.2.3 Parameter Passing 178 181 5.2.4 Keyword Arguments in Python 5.2.5 Default Arguments in Python 183 5.2.6 Variable Scope 183 186 5.2.7 Let's Apply It—GPA Calculation Program Self-Test Questions 189 COMPUTATIONAL PROBLEM SOLVING 5.3 Credit Card Calculation 5.3.1 The Problem 5.3.2 Problem 5.3.3 Program 189 190 Analysis 190 Program Design 5.3.4 Program Implementation Chapter Summary 202 Chapter Exercises 202 Python Programming Exercises and Testing 191 203 Program Modification Problems Program Development 189 189 204 Problems 204 Objects and Their Use MOTIVATION 206 207 FUNDAMENTAL CONCEPTS 6.1 Software Objects 6.1.1 What Is 6.1.2 an Object? References Object Questions Self-Test 6.2 Turtle 6.2.1 208 209 216 216 Graphics Creating 207 207 a Turtle Graphics 6.2.2 The "Default" Turtle Window 216 218 6.2.3 Fundamental Turtle Attributes and Behavior 6.2.4 Additional Turtle Attributes 6.2.5 Creating Multiple Turtles 222 225 219 xiii xiv Contents 6.2.6 Let's Apply It—Bouncing Balls Program Self-Test Questions COMPUTATIONAL PROBLEM SOLVING 6.3 Horse Race Simulation 6.3.1 The Problem 229 229 Program 230 6.3.2 Problem Analysis 6.3.3 230 231 Program Design 6.3.4 Program Implementation and Testing Chapter Summary 243 Chapter Exercises 243 Python Programming Program Exercises Modular 245 246 Design MOTIVATION 247 248 FUNDAMENTAL CONCEPTS 7.1 Modules 248 248 7.1.1 What Is Module? a 248 7.1.2 Module Specification Self-Test Questions 7.2 Developing 7.2.2 251 a Specification Modular Design of the Calendar Year Program of the Calendar Year Program Modules Self-Test Questions Python Modules 7.3.1 What Is a 249 251 Top-Down Design 7.2.1 7.3 231 244 Modification Problems Program Development Problems j^J 226 229 252 255 255 Python Module? 255 Namespaces 256 7.3.2 Modules and 7.3.3 Importing Modules 257 7.3.4 Module Loading and Execution 7.3.5 Local, Global, and Built-in 7.3.6 A 260 Namespaces in Python Programmer-Defined Stack Module 7.3.7 Let's Apply It—A Palindrome Checker Program Self-Test Questions 268 COMPUTATIONAL PROBLEM SOLVING 7.4 Calendar Year 7.4.1 The Problem 7.4.2 Problem 7.4.3 7.4.4 269 269 Program Design Program Implementation Chapter Summary Exercises 284 Python Programming Exercises Program 269 269 Analysis 284 Chapter 269 Program (function version) Modification Problems Program Development Problems and 286 287 287 Testing 262 264 269 267 251 Text Files 289 MOTIVATION 290 FUNDAMENTAL CONCEPTS 8.1 What Is 8.2 Using 8.2.1 a Text File? Text Files 291 Text Files 8.2.2 Opening Reading Text Files 8.2.3 Writing 294 295 296 String Processing 8.3.1 Traversal String 8.3.2 String-Applicable Sequence Operations 8.3.3 String Methods 8.3.4 Let's Apply 296 297 Text Program 300 303 Questions Exception Handling 8.4.1 What Is 296 It—Sparse Self-Test 8.4 291 293 Text Files Self-Test Questions 8.3 290 290 303 Exception? 303 Propagation of Raised Exceptions 304 8.4.3 Catching and Handling Exceptions 305 8.4.4 Exception Handling and User Input 307 8.4.5 Exception Handling and File Processing 309 8.4.6 Let's Apply It—Word Frequency Count Program an 8.4.2 The Self-Test COMPUTATIONAL PROBLEM SOLVING 8.5 Cancer Correlation Cigarette Use/Lung 8.5.1 The Problem 8.5.4 8.5.5 314 Program 314 315 8.5.2 Problem 8.5.3 Analysis Program Design 315 316 Program Implementation and Testing 318 Determining the Correlation Between Smoking Chapter Summary 331 Chapter Exercises 332 Exercises Python Programming Program Modification Problems Program Development 310 314 Questions Problems and Lung Cancer 333 333 334 Dictionaries and Sets MOTIVATION 337 338 FUNDAMENTAL CONCEPTS 9.1 Dictionary Type 9.1.1 What Is a in Python Dictionary? 338 338 339 9.1.2 Let's Apply It—Phone Number Self-Test Questions 331 346 Spelling Program 342 xvi Contents 9.2 Set Data Type 9.2.1 346 The Set Data in Type 346 Python 9.2.2 Let's Apply It—Kitchen Tile Visualization 348 356 Self-Test Questions COMPUTATIONAL PROBLEM SOLVING 9.3 A Food Program Co-op's Worker Scheduling 9.3.1 The Problem 356 Simulation 356 357 9.3.2 Problem Analysis 357 9.3.3 Program Design 358 9.3.4 Program Implementation and Testing 9.3.5 Analyzing a Scheduled vs. 360 Unscheduled Co-op Worker Approach 375 379 Chapter Summary Chapter Exercises 379 Python Programming Exercises 380 Program Modification Problems Program Development 380 Problems 381 383 Object-Oriented Programming MOTIVATION 384 FUNDAMENTAL CONCEPTS 10.1 What Is 384 Class? a 385 10.1.2 Three Fundamental Features of 10.2 Encapsulation Classes in 10.2.3 Let's Apply It—A 387 Python Recipe Conversion Program 399 Questions 10.3 Inheritance 386 Encapsulation? Defining Self-Test Object-Oriented Programming 386 10.2.1 What Is 10.2.2 384 Object-Oriented Programming? 10.1.1 What Is 400 10.3.1 What Is Inheritance? 10.3.2 Subtypes 10.3.3 Defining Subclasses 400 401 in Python 402 10.3.4 Let's Apply It—A Mixed Fraction Class Self-Test Questions 10.4 Polymorphism 10.4.1 What Is 411 411 411 Polymorphism? 10.4.2 The Use of Polymorphism Self-Test Questions 10.5 Object-Oriented Design 10.5.1 What Is UML? 10.5.2 UML Class 414 417 Using UML Diagrams Self-Test Questions 417 417 418 422 COMPUTATIONAL PROBLEM SOLVING 10.6 Vehicle Rental Agency Program 10.6.1 The Problem 423 423 423 407 394 385 Contents 10.6.2 Problem Analysis 423 Program Design 423 10.6.4 Program Implementation Chapter Summary 453 10.6.3 Chapter Exercises Testing 429 454 Python Programming Exercises Program and 455 Modification Problems 456 Program Development Problems 457 Recursion 460 MOTIVATION 461 FUNDAMENTAL CONCEPTS 11.1 Recursive Functions 11.1.1 What Is a 461 461 Recursive Function? 461 11.1.2 The Factorial Function 464 11.1.3 Let's Apply It—Fractals (Sierpinski Triangle) Self-Test 11.2 Recursive Problem 11.2.1 11.2.2 472 Solving Thinking Recursively 472 MergeSort Recursive Algorithm 11.2.3 Let's Apply Self-Test vs. 472 It—MergeSort Implementation 474 476 Questions 11.3 Iteration 467 471 Questions Recursion 476 COMPUTATIONAL PROBLEM SOLVING 11.4 Towers of Hanoi 477 477 11.4.1 The Problem 477 11.4.2 Problem Analysis 477 11.4.3 Program Design and Implementation Chapter Summary 487 Chapter Exercises 487 Python Programming Program Exercises 488 Modification Problems Program Development 481 489 Problems 490 Computing and Its Developments 491 CONTRIBUTIONS TO THE MODERN COMPUTER 12.1 The Concept of a Programmable Computer 492 492 12.1.1 "Father of the Modern 12.1.2 "The First Computer 12.2 Electronic Computing 493 Development of Boolean Algebra (mid-1800s) Developments Leading to 12.2.1 The Computer"—Charles Babbage (1800s) 492 Programmer"—Ada Lovelace (1800s) 493 12.2.2 The Development of the Vacuum Tube (1883) 12.2.3 The Development of 493 494 Digital Electronic Logic Gates (1903) 494 xvii xviii Contents 12.2.4 The Development of Memory Electronic Circuits (1919) 495 12.2.5 The Development of Electronic Digital Logic Circuits (1937) 495 12.2.6 "The Father of Information Theory"—Claude Shannon (1948) 496 FIRST-GENERATION COMPUTERS (1940s-mid- 1950s) 12.3 The Early Groundbreakers 496 12.3.1 The Z3—The First 496 Programmable Computer (1941) 496 12.3.2 The Mark I—First Computer Project in the United States (1937-1943) 12.3.3 The ABC—The First 497 Fully Electronic Computing Device (1942) 498 12.3.4 Colossus—A Special-Purpose Electronic Computer (1943) 499 12.3.5 ENIAC—The First Fully Electronic Programmable Computer 500 12.3.6 EDVAC/ACE—The First Stored Program Computers (1950) 501 12.3.7 Whirlwind—The First Real-Time Computer (1951) 502 12.4 The First Commercially Available Computers 503 12.4.1 The Struggles of the Eckert-Mauchly Computer Corporation (1950) 503 12.4.2 The LEO Computer of the J. and Lyons Company (1951) 504 SECOND-GENERATION COMPUTERS (mid-1950s 12.5 Transistorized Computers 505 to mid-1960s) 505 12.5.1 The Development of the Transistor (1947) 505 12.5.2 The First Transistor 506 (1953) Computer 12.6 The Development of High-Level Programming Languages 506 The Development of Assembly Language (early 1950s) 506 12.6.2 The First High-Level Programming Languages (mid-1950s) 507 12.6.3 The First "Program Bug" (1947) 508 12.6.1 THIRD-GENERATION COMPUTERS (mid-1960s to early 1970s) 12.7 The Development of the Integrated Circuit (1958) 508 12.7.1 The 508 Catalyst for Integrated Circuit Advancements (1960s) Microprocessor (1971) 511 12.8 Mainframes, Minicomputers, and Supercomputers 512 509 12.7.2 The Development of the 12.8.1 The Establishment of the Mainframe Computer (1962) 12.8.2 The Development of the Minicomputer (1963) 513 12.8.3 The Development 512 of the UNDC Operating System (1969) 513 (early 1960s) 514 Supercomputer (1972) 515 12.8.4 The Development of Graphical User Interfaces 12.8.5 The Development of the FOURTH-GENERATION COMPUTERS (early 1970s to the Present) 515 Microprocessor 515 12.9.1 The First Commercially Available Microprocessor (1971) 515 12.9.2 The First Commercially Available Microcomputer Kit (1975) 516 12.10 The Dawn of Personal 516 Computing 12.10.1 The Beginnings of Microsoft (1975) 516 12.10.2 The Apple II (1977) 517 12.10.3 IBM's Entry into the Microcomputer Market (1981) 517 12.10.4 Society Embraces the Personal Computer (1983) 518 12.10.5 The Development of Graphical User Interfaces (GUIs) 518 12.10.6 The Development of the C+ + Programming Language 519 12.9 The Rise of the Contents THE DEVELOPMENT OF COMPUTER NETWORKS 12.11 The Development of Wide Area Networks 520 520 12.11.1 Theldeaof Packet-Switched Networks (early 1960s) 12.11.2 The First Packet-Switched Network: ARPANET 12.12 The Development of Local Area Networks (LANs) 12.12.1 The Need for Local Area Networks 12.12.2 The 12.13 The Development Development of Ethernet (1980) 12.13.2 The Development of the TCP/IP 520 521 521 521 of the Internet and World Wide Web 12.13.1 The Realization of the Need for 520 (1969) "Internetworking" 522 522 Internetworking Protocol (1973) 12.13.3 The Development of the World Wide Web 12.13.4 The Development of the Java (1990) 522 522 Programming Language (1995) 523 Appendix 525 Index 569 xlx
© Copyright 2026 Paperzz