Chapter 0 Week 1
Chapter 1 Week 2
- 1.1. Project Management
- 1.1.1. Project Management
- 1.1.2. Scheduling
- 1.1.3. Historical Data
- 1.1.4. Historical Data 2
- 1.1.5. What is the Mechanism?
- 1.1.6. How to fail at implementing your project:
- 1.1.7. How to succeed at implementing your project:
- 1.1.8. Being Organized
- 1.1.9. Milestones
- 1.1.10. Working with a Partner (1)
- 1.1.11. Working with a Partner (2)
- 1.2. Algorithm Analysis Part 2
- 1.2.1. Growth Rate Example (1)
- 1.2.2. Growth Rate Example (2)
- 1.2.3. Growth Rate Graph (1)
- 1.2.4. Growth Rate Graph (2)
- 1.2.5. Best, Worst, Average Cases
- 1.2.6. Which Analysis to Use?
- 1.2.7. Faster Computer or Algorithm?
- 1.2.8. Asymptotic Analysis: Big-oh
- 1.2.9. Big-oh Notation (cont)
- 1.2.10. Big-Oh Examples
- 1.2.11. Big-Oh Examples (2)
- 1.2.12. A Common Misunderstanding
- 1.2.13. Big \(\Omega\)
- 1.2.14. Big-Omega Example
- 1.2.15. \(\Theta\) Notation
- 1.2.16. A Common Misunderstanding
- 1.2.17. Simplifying Rules
- 1.2.18. Summary (1)
- 1.2.19. Summary (2)
- 1.3. Testing
- 1.4. Algorithm Analysis Part 3
- 1.4.1. Time Complexity Examples (1)
- 1.4.2. Time Complexity Examples (2)
- 1.4.3. Time Complexity Examples (3)
- 1.4.4. Time Complexity Examples (4)
- 1.4.5. Binary Search
- 1.4.6. Other Control Statements
- 1.4.7. Analyzing Problems
- 1.4.8. Analyzing Problems: Example
- 1.4.9. Space/Time Tradeoff Principle
- 1.4.10. Multiple Parameters
- 1.4.11. Space Complexity
Chapter 2 Week 3
- 2.1. Lists
- 2.1.1. Lists
- 2.1.2. List Implementation Concepts
- 2.1.3. List ADT (1)
- 2.1.4. List ADT (2)
- 2.1.5. List ADT (3)
- 2.1.6. List ADT Examples
- 2.1.7. List Find Function
- 2.1.8. Array-Based List Class (1)
- 2.1.9. Array-Based List Insert
- 2.1.10. Link Class
- 2.1.11. Linked List Position (1)
- 2.1.12. Linked List Position (2)
- 2.1.13. Linked List Position (3)
- 2.1.14. Linked List Class (1)
- 2.1.15. Linked List Class (2)
- 2.1.16. Insertion
- 2.1.17. Removal
- 2.1.18. Prev
- 2.1.19. Overhead
- 2.1.20. Comparison of Implementations
- 2.1.21. Space Comparison
- 2.1.22. Space Example
- 2.1.23. Freelist
- 2.1.24. Doubly Linked Lists
- 2.1.25. Doubly Linked Node (1)
- 2.1.26. Doubly Linked Insert
- 2.1.27. Doubly Linked Remove
- 2.1.28. Container Class Design Issues
- 2.2. Clean Code
- 2.3. Stacks and Queues
Chapter 3 Week 4
- 3.1. Binary Trees
- 3.1.1. Binary Trees
- 3.1.2. A Recursive Data Structure
- 3.1.3. Binary Tree Node Class
- 3.1.4. Question
- 3.1.5. Traversals
- 3.1.6. Preorder Traversal (1)
- 3.1.7. Preorder Traversal (2)
- 3.1.8. How not to write a traversal
- 3.1.9. Recursion Examples
- 3.1.10. Full and Complete Binary Trees
- 3.1.11. Full Binary Tree Theorem (1)
- 3.1.12. Full Binary Tree Theorem (2)
- 3.1.13. Full Binary Tree Corollary
- 3.1.14. Binary Search Trees
- 3.1.15. BST
findhelp - 3.1.16. BST
inserthelp - 3.1.17. BST
deletemax - 3.1.18. BST
removehelp - 3.1.19. BST Analysis
- 3.1.20. Dictionary
- 3.1.21. Dictionary (2)
- 3.1.22. BST as a Dictionary (1)
- 3.1.23. BST as a Dictionary (2)
Chapter 4 Week 5
- 4.1. Project 2
- 4.2. Over-Constrained Code
- 4.3. Design Patterns
- 4.3.1. Comparison (1)
- 4.3.2. Comparison (2)
- 4.3.3. KVpair: A Truly General Solution
- 4.3.4. KVpair: Generics
- 4.3.5. Using the KVpair (1)
- 4.3.6. Binary Tree Implementation (1)
- 4.3.7. Binary Tree Implementation (2)
- 4.3.8. Inheritance (1)
- 4.3.9. Inheritance (3)
- 4.3.10. Design Patterns
- 4.3.11. Composite (1)
- 4.3.12. Composite (2)
- 4.4. Advanced Mutation Testing
Chapter 5 Week 6
Chapter 6 Week 7
- 6.1. Sorting Part 1
- 6.2. Sorting Part 2
- 6.2.1. Shellsort
- 6.2.2. Shellsort (2)
- 6.2.3. Mergesort
- 6.2.4. Mergesort cost
- 6.2.5. Quicksort
- 6.2.6. Quicksort Partition
- 6.2.7. Quicksort Partition Cost
- 6.2.8. Quicksort Summary
- 6.2.9. Quicksort Worst Case
- 6.2.10. Quicksort Best Case
- 6.2.11. Quicksort Average Case
- 6.2.12. Optimizations for Quicksort
- 6.2.13. Heapsort
- 6.2.14. Heapsort Analysis
Chapter 7 Week 8
- 7.1. Sorting Part 3
- 7.2. Project 3
- 7.3. File Processing and Buffer Pools
- 7.3.1. Programmer’s View of Files
- 7.3.2. Java File Functions
- 7.3.3. Primary vs. Secondary Storage
- 7.3.4. Comparisons
- 7.3.5. Golden Rule of File Processing
- 7.3.6. Disk Drives
- 7.3.7. Sectors
- 7.3.8. Terms
- 7.3.9. Seek Time
- 7.3.10. Other Factors
- 7.3.11. (Old) Disk Spec Example
- 7.3.12. Disk Access Cost Example (1)
- 7.3.13. Disk Access Cost Example (2)
- 7.3.14. How Much to Read?
- 7.3.15. Newer Disk Spec Example
- 7.3.16. Buffers
- 7.3.17. Buffer Pools
- 7.3.18. Buffer Pools
- 7.3.19. Organizing Buffer Pools
- 7.3.20. LRU
- 7.3.21. Dirty Bit
- 7.3.22. Bufferpool ADT: Message Passing
- 7.3.23. Bufferpool ADT: Buffer Passing
- 7.3.24. Design Issues
- 7.3.25. Some Goals
- 7.3.26. Improved Interface
- 7.3.27. Improved Interface (2)
Chapter 8 Week 9
- 8.1. External Sorting
- 8.1.1. External Sorting
- 8.1.2. Model of External Computation
- 8.1.3. Key Sorting
- 8.1.4. Simple External Mergesort (1)
- 8.1.5. Simple External Mergesort (2)
- 8.1.6. Simple External Mergesort (3)
- 8.1.7. Problems with Simple Mergesort
- 8.1.8. A Better Process
- 8.1.9. Breaking a File into Runs
- 8.1.10. Replacement Selection (1)
- 8.1.11. Replacement Selection (2)
- 8.1.12. RS Example
- 8.1.13. Snowplow Analogy (1)
- 8.1.14. Snowplow Analogy (2)
- 8.1.15. Problems with Simple Merge
- 8.1.16. Multiway Merge (1)
- 8.1.17. Multiway Merge (2)
- 8.1.18. Limits to Multiway Merge (1)
- 8.1.19. Limits to Multiway Merge (2)
- 8.1.20. General Principles
- 8.1.21. A Broader Principle: Algorithms, Code Tuning, and Power Consumption
- 8.1.22. Compute Cycles == Electricity == Money
- 8.2. Recommender Systems
- 8.3. Huffman Coding
- 8.4. Tries
Chapter 9 Week 10
- 9.1. Hashing
- 9.1.1. Hashing (1)
- 9.1.2. Hashing (2)
- 9.1.3. Simple Examples
- 9.1.4. Collisions (1)
- 9.1.5. Collisions (2)
- 9.1.6. Hash Functions (1)
- 9.1.7. Hash Functions (2)
- 9.1.8. Simple Mod Function
- 9.1.9. Binning
- 9.1.10. Mod vs. Binning
- 9.1.11. Mid-Square Method
- 9.1.12. Strings Function: Character Adding
- 9.1.13. String Folding
- 9.1.14. Open Hashing
- 9.1.15. Bucket Hashing (1)
- 9.1.16. Bucket Hashing (2)
- 9.1.17. Closed Hashing
- 9.1.18. Collision Resolution
- 9.1.19. Insertion
- 9.1.20. Search
- 9.1.21. Probe Function
- 9.1.22. Linear Probing (1)
- 9.1.23. Linear Probing (2)
- 9.1.24. Problem with Linear Probing
- 9.1.25. Linear Probing by Steps (1)
- 9.1.26. Linear Probing by Steps (2)
- 9.1.27. Pseudo-Random Probing (1)
- 9.1.28. Pseudo-Random Probing (2)
- 9.1.29. Quadratic Probing
- 9.1.30. Double Hashing (1)
- 9.1.31. Double Hashing (2)
- 9.1.32. Analysis of Closed Hashing
- 9.1.33. Deletion
- 9.1.34. Tombstones (1)
- 9.1.35. Tombstones (2)
- 9.2. Memory Management
- 9.2.1. Memory Management
- 9.2.2. Memory Manager ADT
- 9.2.3. Implementation Issues
- 9.2.4. Dynamic Storage Allocation
- 9.2.5. Fragmentation
- 9.2.6. Managing the Free Blocks
- 9.2.7. Selecting a Free Block
- 9.2.8. Sequential Fit Methods
- 9.2.9. Example
- 9.2.10. Buddy Method
- 9.2.11. Buddy Method Example
- 9.2.12. Failure Policies
Chapter 10 Week 11
Chapter 11 Week 12
- 11.1. B-trees
- 11.1.1. B-Trees (1)
- 11.1.2. B-Trees (2)
- 11.1.3. B-Tree Definition
- 11.1.4. B-Tree Search
- 11.1.5. B+-Trees
- 11.1.6. 23+-Tree Build Example
- 11.1.7. 23+-Tree Search Example
- 11.1.8. 23+-Tree Delete Example
- 11.1.9. B+-Tree Find
- 11.1.10. B+-Tree Insert
- 11.1.11. B+-Tree Deletion
- 11.1.12. B+-Tree Insert (Degree 5)
- 11.1.13. B-Tree Space Analysis (1)
- 11.1.14. B-Tree Space Analysis (2)
- 11.1.15. B-Trees: The Big Idea
Chapter 12 Week 13
- 12.1. Graphs
- 12.1.1. Graphs
- 12.1.2. Paths, Cycles
- 12.1.3. Connected Components
- 12.1.4. Directed Graph Representation
- 12.1.5. Undirected Graph Representation
- 12.1.6. Representation Space Costs
- 12.1.7. Graph ADT
- 12.1.8. Visiting Neighbors
- 12.1.9. Graph Traversals
- 12.1.10. Graph Traversals (2)
- 12.1.11. Depth First Search (1)
- 12.1.12. Depth First Search (2)
- 12.1.13. Depth First Search (3)
- 12.1.14. Breadth First Search (1)
- 12.1.15. Breadth First Search (3)
- 12.1.16. Topological Sort
- 12.1.17. Depth-First Topological Sort (1)
- 12.1.18. Depth-First Topological Sort (2)
- 12.1.19. Depth-First Topological Sort (3)
- 12.1.20. Queue-Based Topsort (1)
- 12.1.21. Queue-Based Topsort (2)
- 12.1.22. Shortest Paths Problems
- 12.1.23. Shortest Paths Definitions
- 12.1.24. Single-Source Shortest Paths
- 12.1.25. Dijkstra’s Algorithm Example
- 12.1.26. Dijkstra’s Implementation
- 12.1.27. Implementing minVertex
- 12.1.28. Approach 1
- 12.1.29. Approach 2
- 12.1.30. All-pairs Shortest Paths (1)
- 12.1.31. All-pairs Shortest Paths (2)
- 12.1.32. Floyd’s Algorithm
- 12.1.33. Minimal Cost Spanning Trees
- 12.1.34. MST Example
- 12.1.35. Prim’s MST Algorithm
- 12.1.36. Implementation 1
- 12.1.37. Alternate Implementation
- 12.1.38. Kruskal’s MST Algorithm (1)
- 12.1.39. Kruskal’s MST Algorithm (2)
- 12.1.40. Kruskal’s MST Algorithm (3)
Chapter 13 Week 14
- 13.1. Union/FIND
- 13.2. General Trees
- 13.2.1. General Trees
- 13.2.2. General Tree ADT
- 13.2.3. General Tree Traversal
- 13.2.4. Representation: Lists of Children
- 13.2.5. Representation: Dynamic Node (Array)
- 13.2.6. Representation: Dynamic Node (linked list)
- 13.2.7. Representation: Left-Child/Right-Sibling
- 13.2.8. Serialization
- 13.2.9. Binary tree serialization
- 13.2.10. Alternate serialization
- 13.2.11. Bit Vector Serialization
- 13.2.12. General Tree Serialization