Complexity Analysis

Subtopic Done
Big O notation  
Time and space complexity  
Best, average, and worst-case scenarios  

Fundamental Data Structures

  • Arrays and Strings

Subtopic Done
Insertion, deletion, traversal  
String manipulation techniques  
  • Linked Lists

Subtopic Done
Singly Linked List  
Doubly Linked List  
Circular Linked List  
Common operations and use cases  
  • Stacks and Queues

Subtopic Done
LIFO vs. FIFO principles  
Implementation using arrays and linked lists  

Trees

  • Binary Trees

Subtopic Done
Tree terminology (nodes, edges, height, depth)  
Traversals methods (pre-order, in-order, post-order)  
  • Binary Search Trees

Subtopic Done
Properties of BST  
Operations on BST (insertion, deletion, search)  
  • Balanced Binary Trees

Subtopic Done
AVL Trees  
Red-Black Trees  
Importance of tree balancing  

Advanced Data Structures

  • Heaps

Subtopic Done
Min-heaps and max-heaps  
Heap operations  
Priority queues  
  • Hash Tables

Subtopic Done
Hash functions  
Collision resolution strategies (chaining, open addressing)  
Load factor and resizing  

Graphs

  • Graph Theory Basics

Subtopic Done
Definitions (vertices, edges, adjacency)  
Directed vs. undirected graphs  
  • Graph Representation

Subtopic Done
Adjacency matrix  
Adjacency list  
  • Graph Traversal Algorithms

Subtopic Done
Depth-first search (DFS)  
Breadth-first search (BFS)  
  • Shortest Path Algorithms

Subtopic Done
Dijkstra’s algorithm  
Bellman-Ford algorithm  

Sorting and Searching Algorithms

  • Sorting Algorithms

Subtopic Done
Bubble Sort  
Selection Sort  
Insertion Sort  
Merge Sort  
Quick Sort  
Heap Sort  
Radix Sort  
  • Searching Algorithms

Subtopic Done
Linear Search  
Binary Search  
Search in trees and graphs  

Algorithm Design Techniques

  • Recursion

Subtopic Done
Understanding recursive functions  
Tail recursion  
  • Divide and Conquer

Subtopic Done
Concept and applications  
Master theorem for complexity  
  • Dynamic Programming

Subtopic Done
Principles and memoization  
Classic problems (Fibonacci sequence, knapsack problem)  
  • Greedy Algorithms

Subtopic Done
Strategy and examples  
When to use greedy vs. dynamic programming  

Advanced Topics

  • Backtracking Algorithms

Subtopic Done
Concept and problem-solving  
N-Queens problem, sudoku solver  
  • Advanced Data Structures

Subtopic Done
Tries  
Segment trees  
Disjoint sets (Union-Find)  
  • Algorithm Complexity Classes

Subtopic Done
P vs. NP  
NP-Complete problems