These lecture notes cover algorithms and their analysis over 4 modules. Module I introduces algorithms, their properties, analysis of complexity and asymptotic notations. It covers analysis of sorting algorithms like merge sort, quicksort and binary search. Module II covers dynamic programming and greedy algorithms. Module III covers graph algorithms like BFS, DFS and minimum spanning trees. Module IV covers advanced topics like fast Fourier transform, string matching, NP-completeness and approximation algorithms.