- Data types, variables, operators
- Conditional statements (if, switch)
- Loops (for, while, do-while)
- Functions and recursion
- Arrays and strings
- Pointers and memory management (
malloc,free) - Structures and unions
- Linear search,
- Binary search
- Selection sort
- Bubble sort
- Insertion sort
- Counting sort
- Fibonacci recursion examples
- Factorial recursion examples
- 1d array
- 2d array
- Singly Linked List (Basic operations: insertion, deletion, traversal)
- constant
- logarithmic
- linear
- quadratic
- cubic
- Singly Linked List
- Doubly Linked List
- Circular Linked List
- Dynamic Array
- Stack
- Queue
- Circular Queue
- Recursion
- Backtracking
- Binary Tree and Binary Search Tree (BST)
- Tree traversals (Inorder, Preorder, Postorder)
- Height, diameter, leaf nodes
- Basic tree operations (insertion, deletion, search)
- Merge Sort
- Quick Sort
- Heap Sort (introduction to heaps)
- AVL Trees
- B-Trees and B+ Trees (basics)
- Segment Tree
- Trie (Prefix Tree)
- Min Heap and Max Heap implementation
- Heapify and Priority Queue using Heaps
- Representation (Adjacency Matrix, List)
- Traversal (BFS, DFS)
- Topological Sort
- Shortest Path Algorithms (Dijkstra, Bellman-Ford)
- Minimum Spanning Tree (Prim’s, Kruskal’s)
- Memoization vs Tabulation
- Classic problems:
- Fibonacci
- 0/1 Knapsack
- Longest Common Subsequence (LCS)
- Matrix Chain Multiplication
- Coin Change
- Activity Selection
- Huffman Encoding
- Fractional Knapsack
- Bitwise operations in C
- Applications (checking power of 2, counting bits)
- Practice problems on each topic (LeetCode, HackerRank, Codeforces)
- Implement every data structure from scratch in C
- Use dry run and visualization tools (like VisuAlgo)
- Participate in contests to sharpen algorithmic thinking
- Strongly Connected Components (Kosaraju’s, Tarjan’s)
- Union-Find / Disjoint Set Union (DSU) with Path Compression
- Lowest Common Ancestor (Binary Lifting)
- Dijkstra with Binary Heap / Fibonacci Heap
- Floyd-Warshall & Johnson’s Algorithm
- Euler Tour (for tree problems)
- Articulation Points & Bridges
- Network Flow:
- Ford-Fulkerson
- Edmonds-Karp
- Dinic’s Algorithm
- Bitmask DP
- DP on Trees
- DP with Knuth Optimization
- DP with Divide & Conquer Optimization
- DP on Graphs
- Digit DP
- Convex Hull Trick & Li-Chao Segment Tree
- Convex Hull (Graham's scan, Andrew’s monotone chain)
- Line Intersection
- Rotating Calipers
- Sweep Line Algorithms
- Point in Polygon
- Closest Pair of Points
- Segment Trees with Lazy Propagation
- Persistent Segment Trees
- Binary Indexed Tree (Fenwick Tree)
- Suffix Arrays and LCP Array
- Sparse Tables (for RMQ)
- Treaps, Splay Trees, AVL Trees (Self-balancing BSTs)
- Link-Cut Trees
- Heavy-Light Decomposition (HLD)
-
Number Theory:
- Modular Arithmetic
- Sieve of Eratosthenes
- Fermat's Little Theorem
- Extended Euclidean Algorithm
-
Combinatorics:
- Catalan Numbers
- Inclusion-Exclusion Principle
- Pigeonhole Principle
-
Fast Exponentiation
-
Matrix Exponentiation
-
FFT (Fast Fourier Transform)
-
Chinese Remainder Theorem
- KMP Algorithm
- Z-Algorithm
- Aho-Corasick (Multi-pattern matching)
- Rabin-Karp (Hashing)
- Suffix Trees & Suffix Automaton
- Rolling Hash
- Game Theory (Grundy Numbers, Nim Game)
- Mo’s Algorithm (Query Optimization)
- Interactive Problems
- Online Algorithms
- Implicit Treaps & Rope Data Structures
- Codeforces (div 1/2/3 problems)
- AtCoder (ABC, ARC, AGC)
- TopCoder (SRMs)
- USACO / CSES / SPOJ
- CS Academy, Timus Online Judge
- ICPC problems / CodeChef contests
- "Competitive Programming" by Halim Brothers
- "Algorithm Design Manual" by Steven Skiena
- "Introduction to Algorithms" (CLRS)
- "Programming Challenges" by Skiena & Revilla
- "Advanced Data Structures" by Peter Brass
If you're aiming for research, academia, or very high-level optimization problems, you can also explore:
- Parallel Algorithms
- Approximation Algorithms
- Online Algorithms and Real-Time Systems
- Quantum Algorithms (for theoretical interest)