Many fresh applicants for software development positions have insufficient exposure to algorithms and data structures during their college or university studies. The numbers would be worse if one considers IT jobs aspirants among non CS/IT graduates. In this scenario, employers are increasingly looking for candidates with solid fundamentals, those who can decompose problems well, taking care of space and time complexity of the algorithms they are implementing. This course is primarily targeted towards those who intend to search for jobs in the software industry where algorithms and data structures skills are of paramount importance. The course is also for those who have some background but would like to strengthen their fundamentals and learn how to develop programs using efficient algorithms and data structures.
The focus of the course will be on algorithms, data structures and problem solving. This will be a tutorial style course with emphasis on problem solving, rather than mere description of usual textbook algorithms and data structures. The course will involve solving more than 100 problems on Arrays, Linked Lists, Trees, Heaps, Binary Search Trees, Graphs, Analysis, Asymptotic Notations, Sorting, Lower Bounds, Binary Search and variants, Binary Search Trees, Divide and Conquer, Dynamic Programming, Greedy Algorithms, Amortized Analysis, Disjoint Sets, Graph Algorithms and Algoriths using Bitwise Operations.