Algorithm Design and Analysis (Nov-Feb, 2020)
The main objective of this course is to discuss the techniques necessary to propose practical algorithmic solution for real world problems, which still permit strong theoretical bounds on time and space utilization. Students will study a wide collection of important and useful algorithms with necessary data structures in different areas of applications, focusing on fundamental concepts.
Upon successful completion of this course, the student should be able to:
You can find the syllabus [here].
Note: Following the uncertainty caused by COVID-19, this evaluation process may subject to change.
[ Not an updated list ]
Serial No | Topics Discussed | |||
---|---|---|---|---|
1 | 04/11/2020 | 1hr | Overview of the course, motivation and introduction | |
2 | 06/11/2020 | 1hr | [T1] Chapter 2 & 3 | Model of computation, concepts of worst case, best case and average case time, Asymptotic notations (Definitions, interpretations) |
3 | 09/11/2020 | 1hr | [T1] Chapter 4 (Refer the second edition of the book) | Recurrence relation: Definition, significance; Solving recurrence relation using substitution method |
4 | 11/11/2020 | 1hr | [T1] Chapter 4 (Refer the second edition of the book) | Solving recurrence relation using recurrence tree method: Approach, solving examples |
5 | 13/11/2020 | 2hrs | [T1] Chapter 7 (Refer the second edition of the book) | Divide and Conquer: Quick sort: Idea, Partition procedure, example, Complexity of partition procedure, Worst, best and average case analysis |
5 | 18/11/2020 | 2hrs | Class Notes (Google meet recording) | Divide and Conquer: Binary search(Problem statement, algorithm, complexity), extend binary search idea to ternary search, comparision between binary and ternary search algorithms |
6 | 09/12/2020 | 1hr | [T1] Chapter 8 (Section 8.1) | Lower bound for sorting (problem statement, mathematical proof) |
7 | 09/12/2020 | 1hr | [T1] Chapter 30 (Section 30.1) | Polynomials and FFT: Representation of polynomials (coefficient vs point-value), addition, multiplication, evaluation and interpolation of polynomials |
8 | 14/12/2020 | 1hr | [T1] Chapter 30 (Section 30.2, 30.3) | Polynomials and FFT: Basics of complex number, roots of unity, properties of roots of unity, building FFT algorithm (D&C approach), complexity analysis |
9 | 16/12/2020 | 1hr | [T1] Chapter-15 (Section 15.3) | Dynamic Porgramming: Elements of dynamic programming, principle of optimality, advantage of memoization in dynamic programming through example |
10 | 18/12/2020 | 1hr | [T1] Chapter-15 (Section 15.2) | Dynamic Porgramming: Matrix chain multiplication - problem statement explanation through an example, developing the recursive solution, algorithm, complexity analysis, example |
11 | 21/12/2020 | 2hrs | [T1] Chapter-15 (Section 15.4) | Dynamic Programming: Longest Common Subsequence: Problem statement, solution approach, developing algorithm, complexity analysis, example |
12 | 28/12/2020 | 1hr | [T1] Chapter-16 (Section 16.2) | Greedy Approach: Elements of Greedy strategy, Activity Selection (Problem statement, developing the dynamic programming solution, complexity of dynamic programming based activity selector) |
13 | 01/01/2021 | 1hr | [T1] Chapter-16 (Section 16.1, 16.2) | Greedy Approach: Elements of Greedy strategy, Activity Selection (Problem statement, developing the dynamic programming solution, complexity of dynamic programming based activity selector) |
14 | 04/01/2021 | 2hrs | [T1] Chapter-16 (Section 16.1, 16.2) | Greedy Approach: Greedy activity selector (selection of greedy criteria, validate greedy criteria for optimal solution using mathematical proof, algorithm, analysis, example) |
15 | 06/01/2021 | 1hr | Class Notes (Google meet recording) | Greedy Approach: Knapsack problem(fractional and 0-1 knapsack problem, selection of greedy criteria for fractional knapsack, greedy algorithm, dynamic programming solution of 0-1 knapsack, complexity analysis) |
16 | 08/01/2021 | 2hrs | [T1] Chapter-6 | Heap sort: Definition of heap, properties, basic building blocks to develop the heap sort algorithm, developing heapify algorithm, example to check the heapify procedure |