EARTH WEEK
Go paperless and save 40% on eligible eBooks, 70% on video now through April 26. Shop the sale.
Register your product to gain access to bonus material or receive a coupon.
• Illustrations and Web-based tools illuminate key points and support active learning.
• Review questions end each of the computer science breadth chapters.
• Incremental exercises–Provides exercises that build upon one another; eventually new programs for solving interesting and engaging problems are created.
• “Common errors to avoid...”–Identifies and discusses common errors and points of confusion.
• “Designer secrets...”–Provides problem-solving and program design advice in special sections.
• Nine laboratory assignments–Corresponding to each programming depth chapter, this collection is available to supplement the text.
A BALANCED INTRODUCTION TO COMPUTER SCIENCE
SECOND EDITION
DAVID REED
This new edition of A Balanced Introduction to Computer Science represents a unique and proven approach to introductory computer science courses. In contrast with traditional texts that focus almost exclusively on either breadth (a survey of computing concepts) or depth (programming and problem-solving), this text provides a balanced view of computing. Breadth chapters cover concepts and issues in computing that are most relevant to the beginning student, including computer terminology, the Internet and Web, algorithms and software, and technology's impact on society. Mixed among these topics are depth chapters that introduce fundamental programming concepts and skills with hands-on tutorials. Using HTML and the programming language JavaScript, students develop problem-solving skills as they design and implement interactive Web pages.
Breadth Chapters
Depth Chapters
About the Author
David Reed is an Associate Professor and Chair of the Department of Computer Science at Creighton University in Omaha, Nebraska. He received his M.S. and Ph.D. in computer science from Duke University in 1992, and subsequently taught and conducted research at Duke University and Dickingon College before joining the faculty at Creighton in 2000. His primary interests are in artificial intelligence, programming languages, and computer science education, where he has published extensively on topics such as apprentice-based learning, Web-based programming, and innovative instructional methods in introductory computer science. He is a member of the Liberal Arts Computer Science Consortium and the Chief Reader for the Advanced Placement® Computer Science Exam since 2004.
0. Introduction and Overview
Balancing Breadth and Depth
Text Goals
Text Features
Changes in the 2nd Edition
Advice for the Student
Advice for the Instructor
Acknowledgements
1. Computer Basics
What is a Computer?
Hardware
Central Processing Unit (CPU)
Memory
Input/Output Devices (I/O)
Software
Operating Systems
Internet and the Web
Web Browsers and Servers
Web Addresses
Accessing Local Pages
Looking Ahead…
Chapter Summary
Review Questions
References
2. HTML and Web Pages
HTML Basics
HTML Tags
HTML Elements
Document Formatting
Text Spacing
Headings and Alignment
Font Formatting
Hypertext and Multimedia
Hyperlinks
Images
Lists
Formatting Lists
Tables
Table Borders
Table Alignment
Making Pages Accessible
Chapter Summary
Supplemental Material and Exercises
3. The Internet and the World Wide Web
History of the Internet
ARPANet
Growth and Privatization
How the Internet Works
Distributed Network
Packet-Switching
Internet Protocols: TCP/IP
Domain Names
History of the Web
Hypertext and the Web
The Web Goes Mainstream
Web Growth
How the Web Works
HTML
Web Protocol: HTTP
Caching
Chapter Summary
Review Questions
References
Endnotes
4. JavaScript and Dynamic Web Pages
Dynamic Web Pages
Interaction via Assignments and Write Statements
Formatting Output
JavaScript Variables
Variables and Memory Cells
Interactive Pages
Localizing Changes with Variables
Example: Interactive Stories
Looking Ahead…
Chapter Summary
Supplemental Material and Exercises
5. JavaScript Numbers and Expressions
Data Types and Operators
Variables and Expressions
Number Representation
Evaluating Mixed Expressions
Prompting for Numbers
Predefined JavaScript Functions
Raising Numbers to a Power
Generating Random Numbers
Programming Errors and Debugging
Looking Ahead…
Chapter Summary
Supplemental Material and Exercises
6. The History of Computers
Generation 0: Mechanical Computers (1642-1945)
Programmable Devices
Electromagnetic Relays
Generation 1: Vacuum Tubes (1945-1954)
Computing and World War II
The von Neumann Architecture
Generation 2: Transistors (1954-1963)
High-Level Programming Languages
Generation 3: Integrated Circuits (1963-1973)
Large-Scale Integration
Computing for Businesses
Generation 4: VLSI (1973-1985)
The Personal Computer Revolution
Generation 5: Parallel Processing and Networking (1985-????)
Looking Ahead…
Chapter Summary
Review Questions
References
Endnotes
7. Event-Driven Pages
Initiating Actions via Buttons
Input/Output via Text Boxes
Text Boxes for Displaying Output
Text Boxes for Accessing Input
Text Boxes for Handling Both Input and Output
Input/Output via Text Areas
Dynamic Images
Simplifying Buttons with Functions
Looking Ahead…
Chapter Summary
Supplemental Material and Exercises
8. Algorithms and Programming Languages
Algorithms
Algorithms in the Real World
Designing and Analyzing Algorithms
An Alternative Algorithm
Algorithm Analysis
Big Oh Notation
Algorithm Example: Searching a List
Sequential Search
Binary Search
Algorithm Analysis
Algorithm Example: Approximating a Square Root
Algorithm Analysis
Algorithms and Programming
Machine Languages
High-Level Languages
Program Translation
Interpreters and Compilers
Looking Ahead…
Chapter Summary
Review Questions
References
9. Abstraction and User-Defined Functions
The Structure of Functions
Functions with Inputs
Multiple Inputs
Parameters as Local Variables
Functions that Return Values
The random.js Library
Looking Ahead…
Chapter Summary
Supplemental Material and Exercises
10. Computer Science as a Discipline
Computer "Science"
Artificial Science
Computer Science Themes
Hardware
Software
Theory
Subfields of Computer Science
Algorithms and Data Structures
Architecture
Operating Systems and Networks
Software Engineering
Artificial Intelligence and Robotics
Bioinformatics
The Ethics of Computing
Looking Ahead…
Chapter Summary
Review Questions
References
11. Conditional Execution
If Statements
Boolean Tests
Nested If Statements
Cascading If-else Statements
Example: Counting Dice Rolls
Counters
Boolean Expressions
Looking Ahead…
Chapter Summary
Supplemental Material and Exercises
12. Data Representation
Analog v. Digital
Binary Numbers
Representing Integers
Representing Real Numbers
Representing Characters and Strings
Representing Other Types of Data
Sound
Images
How Computers Distinguish among Data Types
Looking Ahead…
Chapter Summary
Review Questions
References
13. Conditional Repetition
While Loops
Counter-driven Loops
Variables and Repetition
Example: Generating Hailstone Sequences
Looking Ahead…
Chapter Summary
Supplemental Material and Exercises
14. Inside the Computer — The von Neumann Architecture
CPU Subunits and Datapath
CPU Subunits
CPU Datapath Cycles
Datapath Simulator
CPU and Main Memory
Transferring Data to and from Main Memory
Datapath with Memory Simulator
Stored-Program Computer
Machine Languages
Control Unit
Stored-Program Computer Simulator
The Role of Input/Output Devices
Machine vs. Assembly Languages
Looking Ahead…
Chapter Summary
Review Questions
References
15. JavaScript Strings
Strings as Objects
Properties and Methods
Common String Manipulation Methods
String Concatenation
Searching Strings
General Searches
String Manipulations and Repetition
Example: Recognizing Palindromes
Looking Ahead…
Chapter Summary
Supplemental Material and Exercises
16. Inside the Computer — Transistors and Integrated Circuits
Electricity and Switches
Electricity Basics
Switches
Transistors
Transistors as Switches
From Transistors to Gates
Circuits
Gates and Binary Logic
From Gates to Complex Circuits
Circuits
Example: Designing Memory Circuitry
From Circuits to Microchips
The Integrated Circuit
Manufacturing Integrated Circuits
Packaging Microchips
Looking Ahead…
Chapter Summary
Review Questions
References
17. JavaScript Arrays
Arrays as Objects
Accessing Items in an Array
Assigning Items in an Array
From Strings to Arrays
The split Method for Strings
Example: Generating Acronyms
Arrays of Numbers
Example: Maintaining Dice Statistics using an Array
Approach 1: Separate Counters
Approach 2: An Array of Counters
Looking Ahead…
Chapter Summary
Supplemental Material and Exercises
18. Computers and Society
Positive Impact of Technology
Computers and Programs for Everyday Tasks
The Internet and Web as Information Sources
The Internet and Web as Communication Media
The Internet and Web for Commerce
Potential Dangers of Technology
Reliance on Complex Systems
Information Overload
Privacy and Security
The Digital Divide
Looking Beyond…
Chapter Summary
Review Questions
References
APPENDIX A: Browser Basics
APPENDIX B: Common Text Editors
APPENDIX C: HTML Reference
APPENDIX D: JavaScript Reference
APPENDIX E: random.js Library