## Extensive Course on Algorithms

1. ​ Introduction to Python / C / C++ / Java

• Asymptotic Analysis

• Worst, Average and Best Cases

• Asymptotic Notations

• Analysis of Loops

• Solving Recurrences

• Amortized Analysis

• Space Complexity

2. Data Structures in Brief

• Arrays​

• Stacks

• Queue

• Lists and Dictionaries

• Trees

• Graphs

3. Recursion

• Introduction​

• Applications

• Solving Recurrence Relations

4. Searching and Sorting

• Linear Search

• Binary Search

• Jump Search, Interpolation Search, Exponential Search,Ternary Search

• Selection Sort

• Bubble Sort

• Insertion Sort

• Merge Sort

• Heap Sort

• QuickSort

• Counting Sort

• Bucket Sort, ShellSort, Comb Sort, Pigeonhole Sort, Cycle Sort

• Miscellaneous Problems ​

5. Greedy Algorithms

• Activity Selection Problem

• Kruskal’s Minimum Spanning Tree Algorithm

• Huffman Coding

• Prim’s Minimum Spanning Tree Algorithm

• Dijkstra’s Shortest Path Algorithm

• Job Sequencing Problem

• Greedy Algorithm to find Minimum number of Coins

• K Centers Problem

• Minimum Number of Platforms Required for a Railway/Bus Station

• Overlapping Subproblems Property

• Optimal Substructure Property

• Longest Common Subsequence

• Min Cost Path

• Coin Change

• Matrix Chain Multiplication

• 0-1 Knapsack Problem

• Egg Dropping Puzzle

• Longest Palindromic Subsequence

• Cutting a Rod

• Floyd Warshall Algorithm

• Palindrome Partitioning

• Partition problem

• Word Wrap Problem

• Box Stacking Problem

• Bellman–Ford Algorithm for Shortest Paths

• Optimal Binary Search Tree

• Subset Sum Problem

• Maximum sum rectangle in a 2D matrix

• Boolean Parenthesization Problem

• Count of n digit numbers whose sum of digits equals to given sum

• Minimum Initial Points to Reach Destination

• Find length of the longest consecutive path from a given starting character

• Tiling Problem

• Minimum number of squares whose sum equals to given number n

• Find minimum number of coins that make a given value

• Collect maximum points in a grid using two traversals

• Compute sum of digits in all numbers from 1 to n

• Count possible ways to construct buildings

• Find the minimum cost to reach destination using a train

• Vertex Cover Problem

• Count number of ways to reach a given score in a game

• Weighted Job Scheduling

• Character Counting Based Problems​

• Anagram Problems

• Palindrome Problems

• Binary String problems

• Pattern Searching Algorithms

• Miscellaneous Problems

6. Backtracking

• Permutations of a given string

• The Knight’s tour problem

• Rat in a Maze

• N Queen Problem

• Subset Sum

• m Coloring Problem

• Hamiltonian Cycle

• Sudoku

• Tug of War

• Solving Cryptarithmetic Puzzles

7. Divide and Conquer

• Finding maximum and minimum element in an array​

• Power of an element

• Binary Search

• Quick Sort

• Merge Sort

• Strassen's Matrix Multiplication

• Median of two sorted arrays

• Count Inversions

• Closest Pair of Points

8. Geometric Algorithms

9. Mathematical Algorithms

10. Bit Algorithms

11. Graph Algorithms

• Graph and its representations

• Breadth First Traversal and Depth First Traversal for a Graph​

• Directed and Undirected Graph

• Topological Sorting

• Biconnected Components

• Check if a given graph is tree or not

• Minimum Spanning Tree

• Prim’s Minimum Spanning Tree

• Kruskal’s Minimum Spanning Tree Algorithm

• Boruvka’s algorithm for Minimum Spanning Tree

• Applications

• Shortest Path

• Dijkstra’s shortest path algorithm

• Bellman–Ford Algorithm

• Floyd Warshall Algorithm

• Johnson’s algorithm for All-pairs shortest paths

• Connectivity​

• Connectivity in a directed graph

• Articulation Points (or Cut Vertices) in a Graph

• Biconnected graph

• Bridges in a graph

• Eulerian path and circuit

• Fleury’s Algorithm for printing Eulerian Path or Circuit

• Strongly Connected Components

• Transitive closure of a graph

• Find the number of islands

• Tarjan’s Algorithm to find Strongly Connected Components

• Hard Problems:

• Graph Coloring (Introduction and Applications)

• Travelling Salesman Problem (Naive and Dynamic Programming)

• Travelling Salesman Problem (Approximate using MST)

• Hamiltonian Cycle

• Vertex Cover Problem (Introduction and Approximate Algorithm)

• K Centers Problem (Greedy Approximate Algorithm)

• Maximum Flow:

• Ford-Fulkerson Algorithm for Maximum Flow Problem

• Find maximum number of edge disjoint paths between two vertices

• Find minimum s-t cut in a flow network

• Maximum Bipartite Matching

• Channel Assignment Problem

• Miscellaneous Problems

12. Randomized Algorithms

13. Branch and Bound

• Introduction with 0/1 Knapsack

• 8 puzzle Problem

• Job Assignment Problem

• N Queen Problem

• Traveling Salesman Problem

14. Miscellaneous Algorithms