Table of Contents

Chapter 0: Introduction

  • 0.1 The Role of Algorithms
  • 0.2 The History of Computing
  • 0.3 An Outline of Our Study
  • 0.4 The Overarching Themes of Computer Science

Chapter 1: Data Storage

  • 1.1 Bits and Their Storage
  • 1.2 Main Memory
  • 1.3 Mass Storage
  • 1.4 Representing Information as Bit Patterns
  • *1.5 The Binary System
  • *1.6 Storing Integers
  • *1.7 Storing Fractions
  • *1.8 Data and Programming
  • *1.9 Data Compression
  • *1.10 Communication Errors

Chapter 2: Data Manipulation

  • 2.1 Computer Architecture
  • 2.2 Machine Language
  • 2.3 Program Execution
  • *2.4 Arithmetic/Logic Instructions
  • *2.5 Communicating with Other Devices
  • *2.6 Programming Data Manipulation
  • *2.7 Other Architectures

Chapter 3: Operating Systems

  • 3.1 The History of Operating Systems
  • 3.2 Operating System Architecture
  • 3.3 Coordinating the Machine’s Activities
  • *3.4 Handling Competition Among Processes
  • 3.5 Security

Chapter 4: Networking and the Internet

  • 4.1 Network Fundamentals
  • 4.2 The Internet
  • 4.3 The World Wide Web
  • *4.4 Internet Protocols
  • *4.5 Simple Client Server
  • 4.6 Cybersecurity

Chapter 5: Algorithms

  • 5.1 The Concept of an Algorithm
  • 5.2 Algorithm Representation
  • 5.3 Algorithm Discovery
  • 5.4 Iterative Structures
  • 5.5 Recursive Structures
  • 5.6 Efficiency and Correctness

Chapter 6: Programming Languages

  • 6.1 Historical Perspective
  • 6.2 Traditional Programming Concepts
  • 6.3 Procedural Units
  • 6.4 Language Implementation
  • 6.5 Object-Oriented Programming
  • *6.6 Programming Concurrent Activities
  • *6.7 Declarative Programming

Chapter 7: Software Engineering

  • 7.1 The Software Engineering Discipline
  • 7.2 The Software Life Cycle
  • 7.3 Software Engineering Methodologies
  • 7.4 Modularity
  • 7.5 Tools of the Trade
  • 7.6 Quality Assurance
  • 7.7 Documentation
  • 7.8 The Human-Machine Interface
  • 7.9 Software Ownership and Liability

Chapter 8: Data Abstractions

  • 8.1 Basic Data Structures
  • 8.2 Related Concepts
  • 8.3 Implementing Data Structures
  • 8.4 A Short Case Study
  • 8.5 Customized Data Types
  • 8.6 Classes and Objects
  • *8.7 Pointers in Machine Language

Chapter 9: Database Systems

  • 9.1 Database Fundamentals
  • 9.2 The Relational Model
  • *9.3 Object-Oriented Databases
  • *9.4 Maintaining Database Integrity
  • *9.5 Traditional File Structures
  • 9.6 Data Mining
  • 9.7 Social Impact of Database Technology

Chapter 10: Computer Graphics

  • 10.1 The Scope of Computer Graphics
  • 10.2 Overview of 3D Graphics
  • 10.3 Modeling
  • 10.4 Rendering
  • *10.5 Dealing with Global Lighting
  • 10.6 Animation

Chapter 11: Artificial Intelligence

  • 11.1 Intelligence and Machines
  • 11.2 Perception
  • 11.3 Reasoning
  • 11.4 Additional Areas of Research
  • 11.5 Artificial Neural Networks
  • 11.6 Robotics
  • 11.7 Considering the Consequences

Chapter 12: Theory of Computation

  • 12.1 Functions and Their Computation
  • 12.2 Turing Machines
  • 12.3 Universal Programming Languages
  • 12.4 A Noncomputable Function
  • 12.5 Complexity of Problems
  • *12.6 Public-Key Cryptography

Appendixes

  • A: ASCII
  • B: Circuits to Manipulate Two’s Complement Representations
  • C: Vole: A Simple Machine Language
  • D: High-Level Programming Languages
  • E: The Equivalence of Iterative and Recursive Structures
  • F: Answers to Questions & Exercises

Index

  • * Asterisks indicate suggestions for optional sections.