A comprehensive learning path covering fundamental and advanced data structures and algorithms. By the end, you will be able to analyze algorithmic complexity, implement core data structures from scratch, and apply algorithmic paradigms to solve complex problems efficiently.
§ SYLLABUS
- 01Computational Thinking
Learn to break problems into smaller parts, recognize patterns, and design step-by-step solutions before writing any code.
- 02Big-O Notation and Complexity Analysis
Understand how to measure and compare the time and space efficiency of algorithms using asymptotic notation (O, Ω, Θ).
- 03Recursion and Recurrence Relations
Master the art of solving problems by having functions call themselves, and learn to analyze recursive algorithms using recurrence relations.
- 01Arrays and Dynamic Arrays
Understand contiguous memory storage, random access, resizing strategies, and the trade-offs between static and dynamic arrays.
- 02Linked Lists
Learn singly and doubly linked lists, pointer manipulation, and when linked structures outperform contiguous ones.
- 03Stacks
Understand the LIFO principle, implement stacks using arrays and linked lists, and apply them to parsing, undo systems, and expression evaluation.
- 04Queues and Deques
Learn FIFO queues, double-ended queues, and circular buffers, and see how they model real-world waiting and scheduling problems.
- 01Elementary Sorting Algorithms
Implement and analyze bubble sort, selection sort, and insertion sort to build intuition for sorting mechanics and best/worst-case behavior.
- 02Efficient Sorting: Merge Sort and Quick Sort
Master divide-and-conquer sorting algorithms, understand their O(n log n) performance, and learn how pivot selection affects quicksort.
- 03Non-Comparison Sorting
Explore counting sort, radix sort, and bucket sort — algorithms that beat the O(n log n) lower bound by exploiting data properties.
- 04Binary Search and Its Variants
Learn to halve your search space efficiently, and apply binary search to sorted arrays, answer spaces, and monotonic functions.
- 01Hash Tables and Hash Functions
Understand how hash functions map keys to indices, and learn to build hash tables with O(1) average-case lookups.
- 02Collision Resolution Strategies
Compare chaining vs. open addressing (linear probing, quadratic probing, double hashing) and understand load factors and rehashing.
- 01Binary Trees and Traversals
Learn tree terminology (root, leaf, height, depth), implement binary trees, and master in-order, pre-order, post-order, and level-order traversals.
- 02Binary Search Trees
Understand how BSTs maintain sorted order, implement insertion, deletion, and search, and analyze their performance characteristics.
- 03Balanced Trees (AVL and Red-Black)
Learn why unbalanced BSTs degrade to O(n) and how self-balancing trees guarantee O(log n) operations through rotations.
- 04Heaps and Priority Queues
Build min-heaps and max-heaps using arrays, implement heap sort, and use priority queues for scheduling and greedy algorithms.
- 05Tries (Prefix Trees)
Implement trie data structures for efficient string storage and retrieval, supporting autocomplete and dictionary lookups.
- 01Graph Representations
Understand adjacency matrices, adjacency lists, and edge lists, and learn when each representation is most appropriate.
- 02BFS and DFS
Master breadth-first and depth-first search, understand their properties, and apply them to connectivity, cycle detection, and topological sorting.
- 03Shortest Path Algorithms
Implement Dijkstra's, Bellman-Ford, and Floyd-Warshall algorithms and understand when to use each based on graph properties.
- 04Minimum Spanning Trees
Learn Kruskal's and Prim's algorithms for finding minimum-cost spanning trees, and understand the role of the Union-Find data structure.
- 05Union-Find (Disjoint Set Union)
Implement the Union-Find structure with path compression and union by rank for near-constant-time connectivity queries.
- 01Greedy Algorithms
Learn the greedy choice property and optimal substructure, and apply greedy strategies to interval scheduling, Huffman coding, and coin change.
- 02Divide and Conquer
Understand how to split problems into independent subproblems, solve them recursively, and combine results — beyond just sorting.
- 03Dynamic Programming
Master memoization and tabulation to solve overlapping-subproblem problems like knapsack, longest common subsequence, and edit distance.
- 04Backtracking
Learn to systematically explore solution spaces by building candidates incrementally and abandoning paths that cannot lead to valid solutions.
- 01String Matching Algorithms
Explore KMP, Rabin-Karp, and other pattern matching algorithms that find substrings faster than brute force.
- 02Amortized Analysis
Understand how to analyze the average cost of operations over a sequence, even when individual operations vary widely in cost.
- 03NP-Completeness and Intractability
Learn what makes problems computationally hard, understand P vs NP, and recognize NP-complete problems to avoid futile optimization attempts.