Design and Analysis of Algorithms

Algorithm design paradigms, complexity analysis, sorting and searching, graph algorithms, dynamic programming, greedy methods, and NP-completeness.

Instructor: Tushar R. Mahore

Term: AY 2022–23

Location: Sipna College of Engineering & Technology, Amravati

Course Overview

Develops systematic skills in designing efficient algorithms and analysing their time and space complexity — foundational for software engineering and competitive programming.

Topics Covered

  • Asymptotic notation: O, Ω, Θ — best, worst, average case
  • Divide and conquer: Merge Sort, Quick Sort, Binary Search
  • Greedy algorithms: Kruskal’s, Prim’s, Dijkstra’s, Huffman coding
  • Dynamic programming: Fibonacci, 0/1 Knapsack, LCS, Matrix Chain Multiplication
  • Backtracking: N-Queens, graph colouring, subset sum
  • Branch and bound
  • Graph algorithms: BFS, DFS, Topological Sort, Floyd-Warshall
  • String matching: KMP, Rabin-Karp
  • NP-completeness: P vs NP, reductions

Tools

Python / C++ for implementation, algorithm visualisers

Materials

Course materials will be uploaded here. Contact mahoretushar@gmail.com for resources.