Table of Contents:
  • Ch. 1: Computer Science: The Mechanization of Abstraction. 1.1: What This Book Is About. 1.2: What This Chapter Is About. 1.3: Data Models. 1.4: The Pascal Data Model. 1.5: Algorithms and the Design of Programs. 1.6: Summary of Chapter 1. 1.7: Bibliographic Notes for Chapter 1
  • Ch. 2: Iteration, Induction, and Recursion. 2.1: What This Chapter Is About. 2.2: Iteration. 2.3: Inductive Proofs. 2.4: Complete Induction. 2.5: Proving Properties of Programs. 2.6: Recursive Definitions. 2.7: Recursive Procedures. 2.8: Merge Sort: A Recursive Sorting Algorithm. 2.9: Proving Properties of Recursive Programs. 2.10: Summary of Chapter 2. 2.11: Bibliographic Notes for Chapter 2
  • Ch. 3: The Running Time of Programs. 3.1: What This Chapter Is About. 3.2: Choosing An Algorithm. 3.3: Measuring Running Time. 3.4: Big-Oh and Approximate Running Time. 3.5: Simplifying Big-Oh Expressions. 3.6: Analyzing the Running Time of a Program. 3.7: A Recursive Rule for Bounding the Running Time. 3.8: Analyzing Programs with Procedure Calls. 3.9: Analyzing Recursive Procedures. 3.10: Analysis of Merge Sort. 3.11: Solving Recurrence Relations. 3.12: Summary of Chapter 3. 3.13: Bibliographic Notes for Chapter 3
  • Ch. 4: Data Models for the Computer. 4.1: What This Chapter Is About. 4.2: The Hierarchy of Abstractions in a Computer. 4.3: A Look at a Typical Computer. 4.4: The Main Memory. 4.5: Secondary Storage Devices. 4.6: Machine Instructions and Their Execution. 4.7: A Typical Instruction Set. 4.8: Supporting the Pascal Data Model. 4.9: Representing Structures: The General Case. 4.10: The Running Time of Programs. 4.11: Representing Integers by Computer Words. 4.12: Representing Real Numbers. 4.13: The File Model of Secondary Storage. 4.14: Summary of Chapter 4. 4.15: Bibliographic Notes for Chapter 4
  • Ch. 5: The Tree Data Model. 5.1: What This Chapter Is About. 5.2: Basic Terminology. 5.3: Data Structures for Trees. 5.4: Recursions on Trees. 5.5: Structural Induction. 5.6: Binary Trees. 5.7: Generating Assembly Code from Binary Trees. 5.8: Binary Search Trees. 5.9: Efficiency of Binary Search Tree Operations. 5.10: Priority Queues and Partially Ordered Trees. 5.11: Heapsort: Sorting with Balanced POTs. 5.12: Summary of Chapter 5. 5.13: Bibliographic Notes for Chapter 5
  • Ch. 6: The List Data Model. 6.1: What This Chapter Is About. 6.2: Basic Terminology. 6.3: Operations on Lists. 6.4: The Linked-List Data Structure. 6.5: Array-Based Implementation of Lists. 6.6: Stacks. 6.7: Implementing Procedure Calls Using a Stack. 6.8: Queues. 6.9: Longest Common Subsequences. 6.10: Representing Character Strings. 6.11: Summary of Chapter 6. 6.12: Bibliographic Notes for Chapter 6
  • Ch. 7: The Set Data Model. 7.1: What This Chapter Is About. 7.2: Basic Definitions. 7.3: Operations on Sets. 7.4: List Implementation of Sets. 7.5: Characteristic Vector Implementation of Sets. 7.6: Hashing. 7.7: Relations and Functions. 7.8: Implementing Functions as Data. 7.9: Implementing Binary Relations. 7.10: Some Special Properties of Binary Relations. 7.11: Infinite Sets. 7.12: Summary of Chapter 7. 7.13: Bibliographic Notes for Chapter 7
  • Ch. 8: The Relational Data Model. 8.1: What This Chapter Is About. 8.2: Relations. 8.3: Keys. 8.4: Primary Storage Structures for Relations. 8.5: Secondary Index Structures. 8.6: Navigation among Relations. 8.7: An Algebra of Relations. 8.8: Implementing Relational Algebra Operations. 8.9: Algebraic Laws for Relations. 8.10: Summary of Chapter 8. 8.11: Bibliographic Notes for Chapter 8
  • Ch. 9: The Graph Data Model. 9.1: What This Chapter Is About. 9.2: Basic Concepts. 9.3: Implementation of Graphs. 9.4: Connected Components of an Undirected Graph. 9.5: Minimal Spanning Trees. 9.6: Depth-First Search. 9.7: Some Uses of Depth-First Search. 9.8: Dijkstra's Algorithm for Finding Shortest Paths. 9.9: Floyd's Algorithm for Shortest Paths. 9.10: An Introduction to Graph Theory. 9.11: Summary of Chapter 9. 9.12: Bibliographic Notes for Chapter 9
  • Ch. 10: Patterns, Automata, and Regular Expressions. 10.1: What This Chapter Is About. 10.2: State Machines and Automata. 10.3: Deterministic and Nondeterministic Automata. 10.4: From Nondeterministism to Deterministism. 10.5: Regular Expressions. 10.6: The UNIX Extensions to Regular Expressions. 10.7: Algebraic Laws for Regular Expressions. 10.8: From Regular Expressions to Automata. 10.9: From Automata to Regular Expressions. 10.10: Summary of Chapter 10. 10.11: Bibliographic Notes for Chapter 10
  • Ch. 11: Recursive Description of Patterns. 11.1: What This Chapter Is About. 11.2: Context-Free Grammars. 11.3: Languages from Grammars. 11.4: Parse Trees. 11.5: Ambiguity and the Design of Grammars. 11.6: Constructing Parse Trees. 11.7: A Table-Driven Parsing Algorithm. 11.8: Grammars Versus Regular Expressions. 11.9: Summary of Chapter 11. 11.10: Bibliographic Notes for Chapter 11
  • Ch. 12: Propositional Logic. 12.1: What This Chapter Is About. 12.2: What Is Propositional Logic? 12.3: Logical Expressions. 12.4: Truth Tables. 12.5: From Boolean Functions to Logical Expressions. 12.6: Designing Logical Expressions by Karnaugh Maps. 12.7: Tautologies. 12.8: Some Algebraic Laws for Logical Expressions. 12.9: Tautologies and Methods of Proof. 12.10: Deduction. 12.11: Proofs by Resolution. 12.12: Summary of Chapter 12. 12.13: Bibliographic Notes for Chapter 12
  • Ch. 13: Using Logic to Design Computer Components. 13.1: What This Chapter Is About. 13.2: Gates. 13.3: Circuits. 13.4: Logical Expressions and Circuits. 13.5: Some Physical Constraints on Circuits. 13.6: A Divide-and-Conquer Addition Circuit. 13.7: Design of a Multiplexer. 13.8: Memory Elements. 13.9: Summary of Chapter 13. 13.10: Bibliographic Notes for Chapter 13
  • Ch. 14: Predicate Logic. 14.1: What This Chapter Is About. 14.2: Predicates. 14.3: Logical Expressions. 14.4: Quantifiers. 14.5: Interpretations. 14.6: Tautologies. 14.7: Tautologies Involving Quantifiers. 14.8: Proofs in Predicate Logic. 14.9: Proofs from Rules and Facts. 14.10: Truth and Provability. 14.11: Summary of Chapter 14. 14.12: Bibliographic Notes for Chapter 14.