It is being taught with the intention to teach the student how to measure the effectiveness of an algorithm and also to build an efficient way to carry out various types of sorting and searching techniques.
Basic Concepts of Algorithms: Introduction, Notion of Algorithm, Fundamentals of Algorithmic Solving, Important Problem types, Fundamentals of the Analysis Framework, Asymptotic Notations and Basic Efficiency Classes, Problem Classifications, NP class, NP completeness, reducibility, NP complete problems.
Mathematical Aspects and Analysis of Algorithms: Mathematical Analysis of Non-Recursive Algorithm, Mathematical Analysis of Recursive Algorithm, Solving Recurrence Relations, Example: Fibonacci Numbers, Empirical Analysis of Algorithms, Algorithm Visualization.
Analysis Of Sorting and Searching Algorithms: Radix Sort, Sequential Search and Brute-force string matching, Divide and conquer, Merge sort, Quick Sort, Hashing, Binary Search, Binary tree, Traversal and Related Properties, Decrease and Conquer , Insertion Sort , Depth first Search and Breadth First Search.
Algorithmic Techniques: Transform and conquer, Presorting , Balanced Search trees, AVL Trees, Heaps and Heap sort, Dynamic Programming, Warshall’s and Floyd’s Algorithm, Optimal Binary Search trees, Greedy Techniques, Kruskal’s Algorithm, Dijkstra’s Algorithm , Huffman trees.
Algorithm Design Methods: Backtracking, n-Queen’s Problem, Hamiltonian Circuit problem, Subset-Sum problem, Branch and bound, Assignment problem, Knapsack problem, Traveling salesman problem, Flow-Shop Scheduling.