Chapter 0 Preface¶
Chapter 1 Introduction¶
Chapter 2 Mathematical Background¶
Chapter 3 Recursion¶
- 3.1. Introduction to Recursion
- 3.2. Writing a recursive function
- 3.3. Code Completion Practice Exercises
- 3.3.1. Introduction
- 3.3.2. Recursion Programming Exercise: Largest
- 3.3.3. Recursion Programming Exercise: Multiply
- 3.3.4. Recursion Programming Exercise: GCD
- 3.3.5. Recursion Programming Exercise: log
- 3.3.6. Recursion Programming Exercise: Cummulative Sum
- 3.3.7. Recursion Programming Exercise: Add odd values
- 3.3.8. Recursion Programming Exercise: Sum Of the Digits
- 3.3.9. Recursion Programming Exercise: Count Characters
- 3.4. Writing More Sophisticated Recursive Functions
- 3.5. Intermediate Recursion Code Completion Exercises
- 3.6. Writing Practice Exercises
- 3.7. Tracing Recursive Code
- 3.8. Recursion Code Tracing Practice Exercises
- 3.9. Recursion Summary Questions
Chapter 4 Algorithm Analysis - Big Oh¶
Chapter 5 Objects, Pointers, References & Memory¶
- 5.1. Introduction to Object-Oriented Programming
- 5.2. Pointers Chapter Introduction
- 5.3. Basic References Part 1
- 5.4. Basic References Part 2
- 5.5. Pointers Syntax
- 5.6. Local Memory
- 5.7. Heap Memory
- 5.8. Link Nodes
- 5.9. Link Nodes Practice Exercises
- 5.10. Pointers Concepts Summary
- 5.11. Additional Practice Exercises
- 5.12. More Practice Exercises
- 5.12.1. AddNodeAfterRef7
- 5.12.2. ChangeHeadNodeValue
- 5.12.3. ConcatenateTwoLists
- 5.12.4. DeleteNode
- 5.12.5. FirstNodeEqualsValue
- 5.12.6. InsertListAfterRef13
- 5.12.7. InsertListInMiddle
- 5.12.8. LastNodeParam5
- 5.12.9. LastNodeRef1
- 5.12.10. LoopInChain15
- 5.12.11. MiddleNodeRef3
- 5.12.12. ReferenceSecondLastNode
- 5.12.13. ReferenceValueNode
- 5.12.14. RemoveRefNext9
- 5.12.15. ReverseUpToRef11
Chapter 6 Abstract Data Types¶
Chapter 7 List ADT & Implementations¶
Chapter 8 Searching & Sorting I¶
Chapter 9 Stacks & Queues¶
Chapter 10 Trees, Binary Tree & BST I¶
Chapter 11 BST II, Heaps, Priority Queues & Huffman Coding¶
Chapter 12 Sorting II¶
Chapter 13 Graphs¶
Chapter 14 Hashing, Sets & Dictionaries¶
- 14.1. The Dictionary ADT
- 14.2. Introduction to Hashing
- 14.3. Hash Function Principles
- 14.4. Sample Hash Functions
- 14.5. Open Hashing
- 14.6. Bucket Hashing
- 14.7. Collision Resolution
- 14.8. Improved Collision Resolution
- 14.9. Analysis of Closed Hashing
- 14.10. Hahing Deletion
- 14.11. Hashing Chapter Summary Exercises
Chapter 15 Memory & File Structures¶
- 15.1. Chapter Introduction: Memory Management
- 15.2. Dynamic Storage Allocation
- 15.3. Sequential-Fit Methods
- 15.4. First Fit Memory Allocation
- 15.5. Best Fit Memory Manager
- 15.6. Worst Fit Memory Manager
- 15.7. Sequential Fit Peformance
- 15.8. Chapter Introduction: File Processing
- 15.9. Primary versus Secondary Storage
- 15.10. Hard Disk Drives and Solid State Drives
- 15.11. Buffer Pools
- 15.12. The Programmer’s View of Files
Chapter 16 Programming Tutorials & Testing (Reference)¶
- 16.1. Command Line Basics
- 16.2. Parsing Command Line Parameters In Your Program
- 16.3. Using Command Line Parameters in Eclipse
- 16.4. Installing the Web-CAT Submission Plug-in for Eclipse
- 16.5. Common Debugging Methods
- 16.6. Debugging In Eclipse
- 16.7. Using the Java Scanner Class
- 16.8. Random Access Files In Java
- 16.9. JUnit Testing And You
- 16.10. Writing JUnit Tests
- 16.11. Code Coverage In JUnit
- 16.12. Using Mutation Coverage In Eclipse
- 16.13. Mutation Testing Basics
- 16.13.1. Types of Mutants
- 16.13.1.1. Arithmetic Operation Mutant
- 16.13.1.2. Example Code 1: Arithmetic Operation Mutant
- 16.13.1.3. Logical Expression Mutant (Remove Conditionals)
- 16.13.1.4. Example Code 2: Logical Expression Mutant (Remove Conditionals)
- 16.13.1.5. Example Code 3: Multiple Mutants in One (EvenOddCheck)
- 16.13.1.6. Example Code 4: Loop Conditions (optional)
- 16.13.1. Types of Mutants
- 16.14. Mutation Coverage Advanced Examples
- 16.15. Testing
- 16.16. Testing for Code Coverage
- 16.17. Bowling Test Coverage Example
- 16.18. Bowling Example: Testing to Code
Chapter 17 Optional Topics: Mathematical Foundations & Analysis¶
- 17.1. Sets and Relations
- 17.2. An Introduction to Recurrence Relations
- 17.3. Mathematical Proof Techniques
- 17.4. Introduction to Estimation
- 17.5. Chapter Summary Questions
- 17.6. Lower Bounds and \(\Theta\) Notation
- 17.7. Analyzing Problems
- 17.8. Common Misunderstandings
- 17.9. Multiple Parameters
- 17.10. Space Bounds
- 17.11. Code Tuning and Empirical Analysis
Chapter 18 Optional Topics: Design & Advanced Trees¶
- 18.1. The Unified Modeling Language
- 18.2. Software Development Processes
- 18.3. Design Patterns
- 18.4. Alternative List ADT Designs
- 18.5. Binary Tree as a Recursive Data Structure
- 18.6. The Full Binary Tree Theorem
- 18.7. Implementing Tree Traversals
- 18.8. Information Flow in Recursive Functions
- 18.8.1. Information Flow in Recursive Functions
- 18.8.2. Binary Tree Set Depth Exercise
- 18.8.3. Collect-and-return
- 18.8.4. Binary Tree Check Sum Exercise
- 18.8.5. Binary Tree Leaf Nodes Count Exercise
- 18.8.6. Binary Tree Sum Nodes Exercise
- 18.8.7. Combining Information Flows
- 18.8.8. Binary Tree Check Value Exercise
- 18.8.9. Combination Problems
- 18.8.10. Binary Tree Height Exercise
- 18.8.11. Binary Tree Get Difference Exercise
- 18.8.12. Binary Tree Has Path Sum Exercise
- 18.9. Binary Tree Guided Information Flow
- 18.10. Multiple Binary Trees
- 18.11. A Hard Information Flow Problem
- 18.12. Binary Tree Node Implementations
- 18.13. Composite-based Expression Tree
- 18.14. Binary Tree Space Requirements
- 18.15. Trees versus Tries
- 18.16. Proof of Optimality for Huffman Coding
- 18.17. Binary Tree Chapter Summary
