- What is an Algorithm?
- Characteristics of Algorithms
- Importance of Algorithms in Problem Solving
- Examples of Algorithms in Everyday Life
- Time Complexity
- Big O Notation
- Big Theta and Big Omega
- Space Complexity
- Analyzing Algorithms
- Best, Worst, and Average Case Analysis
- Definition and Properties
- Operations: Access, Insertion, Deletion
- Dynamic Arrays
- Singly Linked Lists
- Doubly Linked Lists
- Circular Linked Lists
- Operations and Applications
- Definition and Properties
- Stack Operations
- Applications of Stacks
- Definition and Properties
- Types of Queues: Simple, Circular, Priority
- Queue Operations
- Applications of Queues
- Definition and Properties
- Binary Tree Traversals
- Inorder, Preorder, Postorder
- Binary Search Trees (BST)
- Operations: Insertion, Deletion, Search
- Balanced vs. Unbalanced BST
- Definition and Properties
- Min-Heaps and Max-Heaps
- Heap Operations
- Applications: Priority Queues
- AVL Trees
- Red-Black Trees
- B-Trees and B+ Trees
- Tries and Suffix Trees
- Definition and Terminology
- Representations: Adjacency Matrix, Adjacency List
- Graph Traversal Algorithms
- Depth-First Search (DFS)
- Breadth-First Search (BFS)
- Shortest Path Algorithms
- Dijkstra’s Algorithm
- Bellman-Ford Algorithm
- A* Algorithm
- Minimum Spanning Tree Algorithms
- Kruskal’s Algorithm
- Prim’s Algorithm
- Network Flow Algorithms
- Bubble Sort
- Selection Sort
- Insertion Sort
- Merge Sort
- Quick Sort
- Heap Sort
- Counting Sort
- Radix Sort
- Bucket Sort
- Comparison of Sorting Algorithms
- Linear Search
- Binary Search
- Interpolation Search
- Exponential Search
- Search in Unsorted and Sorted Data
- Hash Functions
- Hash Tables
- Collision Resolution Techniques
- Chaining
- Open Addressing: Linear Probing, Quadratic Probing, Double Hashing
- Applications of Hashing
- Principles of Dynamic Programming
- Memoization vs. Tabulation
- Common Dynamic Programming Problems
- Fibonacci Sequence
- Knapsack Problem
- Longest Common Subsequence
- Matrix Chain Multiplication
- Principles of Greedy Algorithms
- Common Greedy Problems
- Activity Selection
- Huffman Coding
- Kruskal’s and Prim’s Algorithms Revisited
- Principles of Divide and Conquer
- Common Divide and Conquer Problems
- Merge Sort and Quick Sort Revisited
- Binary Search Revisited
- Closest Pair of Points
- Principles of Backtracking
- Common Backtracking Problems
- N-Queens Problem
- Hamiltonian Cycle
- Subset Sum Problem
- Pattern Matching
- Naive String Matching
- Knuth-Morris-Pratt (KMP) Algorithm
- Boyer-Moore Algorithm
- Suffix Arrays and Trees
- Convex Hull
- Closest Pair of Points Revisited
- Line Intersection
- Prime Number Algorithms
- Greatest Common Divisor (GCD)
- Modular Arithmetic
- Cryptographic Algorithms
- Principles of Parallel Algorithms
- Parallel Sorting and Searching
- Distributed Consensus Algorithms
- Paxos Revisited
- Raft Revisited
- Principles of Approximation
- Approximation Algorithms for NP-Hard Problems
- Traveling Salesman Problem (TSP)
- Vertex Cover
- Set Cover
- Principles of Randomized Algorithms
- Monte Carlo and Las Vegas Algorithms
- Randomized Algorithms for Sorting and Searching
- Applications and Analysis
- Overview of Machine Learning
- Common Machine Learning Algorithms
- Linear Regression
- Decision Trees
- k-Nearest Neighbors (k-NN)
- Support Vector Machines (SVM)
- Neural Networks
- Evaluation and Optimization
- Algorithm Design in Real-World Systems
- Google’s PageRank
- Facebook’s Graph Search
- Amazon’s Recommendation System
- Data Structures in Real-World Applications
- Twitter’s Timeline
- Netflix’s Streaming Service
- Current Trends in Algorithm Research
- Quantum Algorithms
- Algorithms in Big Data and Cloud Computing
- Open Problems and Future Directions