Chapter 0 Week 1
Chapter 1 Week 2
- 1.1. Algorithm Analysis
- 1.1.1. Algorithm Efficiency
- 1.1.2. How to Measure Efficiency?
- 1.1.3. Problems, Algorithms, Programs
- 1.1.4. Growth Rate Example (1)
- 1.1.5. Growth Rate Example (2)
- 1.1.6. Growth Rate Graph (1)
- 1.1.7. Growth Rate Graph (2)
- 1.1.8. Best, Worst, Average Cases
- 1.1.9. Which Analysis to Use?
- 1.1.10. Faster Computer or Algorithm?
- 1.1.11. Asymptotic Analysis: Big-oh
- 1.1.12. Big-oh Notation (cont)
- 1.1.13. Big-Oh Examples
- 1.1.14. Big-Oh Examples (2)
- 1.1.15. A Common Misunderstanding
- 1.1.16. Big \(\Omega\)
- 1.1.17. Big-Omega Example
- 1.1.18. \(\Theta\) Notation
- 1.1.19. A Common Misunderstanding
- 1.1.20. Simplifying Rules
- 1.1.21. Summary (1)
- 1.1.22. Summary (2)
- 1.1.23. Time Complexity Examples (1)
- 1.1.24. Time Complexity Examples (2)
- 1.1.25. Time Complexity Examples (3)
- 1.1.26. Time Complexity Examples (4)
- 1.1.27. Binary Search
- 1.1.28. Other Control Statements
- 1.1.29. Analyzing Problems
- 1.1.30. Analyzing Problems: Example
- 1.1.31. Space/Time Tradeoff Principle
- 1.1.32. Multiple Parameters
- 1.1.33. 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
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)
- 3.1.24. .
Chapter 4 Week 5
Chapter 5 Week 6
Chapter 6 Week 7-8
- 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-9
- 7.1. File Processing and Buffer Pools
- 7.1.1. Programmer’s View of Files
- 7.1.2. Java File Functions
- 7.1.3. Primary vs. Secondary Storage
- 7.1.4. Comparisons
- 7.1.5. Golden Rule of File Processing
- 7.1.6. Disk Drives
- 7.1.7. Sectors
- 7.1.8. Terms
- 7.1.9. Seek Time
- 7.1.10. Other Factors
- 7.1.11. (Old) Disk Spec Example
- 7.1.12. Disk Access Cost Example (1)
- 7.1.13. Disk Access Cost Example (2)
- 7.1.14. How Much to Read?
- 7.1.15. Newer Disk Spec Example
- 7.1.16. Solid State Drive (SSD)
- 7.1.17. Buffers
- 7.1.18. Buffer Pools
- 7.1.19. Buffer Pools
- 7.1.20. Organizing Buffer Pools
- 7.1.21. LRU
- 7.1.22. Dirty Bit
- 7.1.23. Bufferpool ADT: Message Passing
- 7.1.24. Bufferpool ADT: Buffer Passing
- 7.1.25. Design Issues
- 7.1.26. Some Goals
- 7.1.27. Improved Interface
- 7.1.28. Improved Interface (2)
Chapter 8 Week 10
- 8.1. Hashing
- 8.1.1. Hashing (1)
- 8.1.2. Hashing (2)
- 8.1.3. Simple Examples
- 8.1.4. Collisions (1)
- 8.1.5. Collisions (2)
- 8.1.6. Hash Functions (1)
- 8.1.7. Hash Functions (2)
- 8.1.8. Simple Mod Function
- 8.1.9. Binning
- 8.1.10. Mod vs. Binning
- 8.1.11. Mid-Square Method
- 8.1.12. Strings Function: Character Adding
- 8.1.13. String Folding
- 8.1.14. Open Hashing
- 8.1.15. Bucket Hashing (1)
- 8.1.16. Bucket Hashing (2)
- 8.1.17. Closed Hashing
- 8.1.18. Collision Resolution
- 8.1.19. Insertion
- 8.1.20. Search
- 8.1.21. Probe Function
- 8.1.22. Linear Probing (1)
- 8.1.23. Linear Probing (2)
- 8.1.24. Problem with Linear Probing
- 8.1.25. Linear Probing by Steps (1)
- 8.1.26. Linear Probing by Steps (2)
- 8.1.27. Pseudo-Random Probing (1)
- 8.1.28. Pseudo-Random Probing (2)
- 8.1.29. Quadratic Probing
- 8.1.30. Double Hashing (1)
- 8.1.31. Double Hashing (2)
- 8.1.32. Analysis of Closed Hashing
- 8.1.33. Deletion
- 8.1.34. Tombstones (1)
- 8.1.35. Tombstones (2)
- 8.2. Memory Management
- 8.2.1. Memory Management
- 8.2.2. Memory Manager ADT
- 8.2.3. Implementation Issues
- 8.2.4. Dynamic Storage Allocation
- 8.2.5. Fragmentation
- 8.2.6. Managing the Free Blocks
- 8.2.7. Selecting a Free Block
- 8.2.8. Sequential Fit Methods
- 8.2.9. Example
- 8.2.10. Buddy Method
- 8.2.11. Buddy Method Example
- 8.2.12. Failure Policies
Chapter 9 Week 11
Chapter 10 Week 12
- 10.1. Graphs
- 10.1.1. Graphs
- 10.1.2. Paths, Cycles
- 10.1.3. Connected Components
- 10.1.4. Directed Graph Representation
- 10.1.5. Undirected Graph Representation
- 10.1.6. Representation Space Costs
- 10.1.7. Graph ADT
- 10.1.8. Visiting Neighbors
- 10.1.9. Graph Traversals
- 10.1.10. Graph Traversals (2)
- 10.1.11. Depth First Search (1)
- 10.1.12. Depth First Search (2)
- 10.1.13. Depth First Search (3)
- 10.1.14. Breadth First Search (1)
- 10.1.15. Breadth First Search (3)
- 10.1.16. Topological Sort
- 10.1.17. Depth-First Topological Sort (1)
- 10.1.18. Depth-First Topological Sort (2)
- 10.1.19. Depth-First Topological Sort (3)
- 10.1.20. Queue-Based Topsort (1)
- 10.1.21. Queue-Based Topsort (2)
- 10.1.22. Shortest Paths Problems
- 10.1.23. Shortest Paths Definitions
- 10.1.24. Single-Source Shortest Paths
- 10.1.25. Dijkstra’s Algorithm Example
- 10.1.26. Dijkstra’s Implementation
- 10.1.27. Implementing minVertex
- 10.1.28. Approach 1
- 10.1.29. Approach 2
- 10.1.30. All-pairs Shortest Paths (1)
- 10.1.31. All-pairs Shortest Paths (2)
- 10.1.32. Floyd’s Algorithm
- 10.1.33. Minimal Cost Spanning Trees
- 10.1.34. MST Example
- 10.1.35. Prim’s MST Algorithm
- 10.1.36. Implementation 1
- 10.1.37. Alternate Implementation
- 10.1.38. Kruskal’s MST Algorithm (1)
- 10.1.39. Kruskal’s MST Algorithm (2)
- 10.1.40. Kruskal’s MST Algorithm (3)
Chapter 11 Week 13
Chapter 12 Week 14
- 12.1. General Trees
- 12.1.1. General Trees
- 12.1.2. General Tree ADT
- 12.1.3. General Tree Traversal
- 12.1.4. Representation: Lists of Children
- 12.1.5. Representation: Dynamic Node (Array)
- 12.1.6. Representation: Dynamic Node (linked list)
- 12.1.7. Representation: Left-Child/Right-Sibling
- 12.1.8. Serialization
- 12.1.9. Binary tree serialization
- 12.1.10. Alternate serialization
- 12.1.11. Bit Vector Serialization
- 12.1.12. General Tree Serialization