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