Design and Analysis of Algorithm, January 2019
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].
Class No | Date | Time | Duration | ReadingList / Resources | Contents Discussed |
---|---|---|---|---|---|
1 | 07/01/2019 | 12:15pm to 01:15pm | 1 hr | Chapter 1 of T1 | Motivation and introduction |
2 | 09/01/2019 | 09:15am to 10:15pm | 1 hr | Chapter 2 & 3 of T1 | RAM model of computation, concepts of worst case, best case and average case time |
3 | 14/01/2019 | 12:15pm to 01:15pm | 1 hr | Chapter 3 of T1 | Need of Asymptotic notation, Different asymptotic notations, Examples |
4 | 15/01/2019 | 12:15pm to 01:15pm | 1 hr | Chapter 4 of T1 (Better if you can refer 2nd Edition) | Recurrence relation and Solution approach (Substitution) |
5 | 16/01/2019 | 09:15am to 10:15am | 1 hr | Class Notes | Deriving relations of code segments and examples |
6 | 17/01/2019 | 12:15pm to 01:15pm | 1 hr | Class Notes | Deriving relation of recursive procedures and TOH example, analysis |
7 | 21/01/2019 | 12:15pm to 01:15pm | 1 hr | Class notes and Chapter 4 of T1 | Recurrence Tree Method : Solving recurrence relation |
8 | 23/01/2019 | 9:15am to 10:15am | 1 hr | Section 2.3 of T1 | Divide and Conquer: Genereal Structure, Merge sort (Problem Statement), Merge Procedure (example) |
9 | 24/01/2019 | 12:15pm to 01:15pm | 1 hr | Section 2.3 of T1 [Download link] |
Divide and Conquer: Merge sort worst case analysis and explanation |
10 | 25/01/2019 | 09:15am to 10:15am | 1 hr | Exercise 2.1.3 and 2.3.5 of T1 [Download link] |
Divide and Conquer: Binary Search (Algorithm, example and worst case complexity analysis |
11 | 28/01/2019 | 12:15pm to 01:15pm | 1 hr | Chapter 7 of T1 | Divide and Conquer: Quick sort: Idea, Partition procedure, example, Complexity of partition procedure |
12 | 30/01/2019 | 09:15am to 10:15am | 1 hr | Chapter 7 of T1 [ Class note ] |
Divide and Conquer: Quick sort: Complexity Analysis (Worst, best and average case) |
13 | 31/01/2019 | 12:15pm to 01:15pm | 1hr | Class Notes | Divide and Conquer: Strassen’s matrix multiplication |
14 | 01/02/2019 | 09:15am to 10:15am | 1 hr | Chapter 7 of T1 [ Class note ] |
Heap sort: Definition, Properties, Basic building blocks to develop the heap sort algorithm |
15 | 04/02/2019 | 12:15pm to 01:15pm | 1hr | Chapter 7 of T1 [ Class note ] |
Heap sort: Heapify, Build heap, Heap sort, Examples |
16 | 05/02/2019 | 12:15pm to 01:15pm | 1hr | Chapter 7 of T1 [ Class note ] |
Heap sort: Complexity analysis of Heapify, Build heap, Heap sort |
17 | 13/02/2019 | 09:15am to 10:15am | 1hr | Chapter 4 of T1 [ Class note ] |
The Master Method: Basic and generalized master method, examples; Basic concept of lower bound for sorting |
18 | 14/02/2019 | 12:15pm to 01:15pm | 1hr | Chapter 8 of T1 [ Class Note ] |
Lower bound for Sorting: Detailed analysis and derivation |
19 | 15/02/2019 | 09:15am to 10:15am | 1hr | Chapter 15 of T1 [ Class Note ] |
Dynamic Programming: Elements of dynamic programming, Matrix chain multiplication - problem statement explanation through an example |
20 | 20/02/2019 | 09:15am to 10:15am | 1hr | Class Note | Surprise Interaction and Revision Module 1 |
21 | 28/02/2019 | 12:15pm to 01:15pm | 1hr | Chapter 15 of T1 [ Class Note ] |
Dynamic Programming: Matrix chain multiplication: Developing the recursive solution and idea behind memoization |
22 | 07/03/2019 | 12:15pm to 01:15pm | 1hr | Chapter 15 of T1 [ Class Note ] |
Dynamic Programming: Matrix chain multiplication: Developing Algorithm, Complexity Analysis, Example |
23 | 11/03/2019 | 12:15pm to 01:15pm | 1hr | Chapter 15 of T1 [ Class Note ] |
Dynamic Programming: Longest Common Subsequence: Problem statement, Solution approach, Developing algorithm, Complexity analysis, Example |
24 | 13/03/2019 | 09:15am to 10:15am | 1hr | Chapter 16 of T1 [ Class Note ] |
Greedy Paradigm: Elements of Greedy paradigm, Fractional Kanpsack: Problem statement, Example, Building solution, algorithm, Complexity |
25 | 14/03/2019 | 12:15pm to 01:15pm | 1hr | Chapter 16 of T1 [ Class Note ] |
Greedy Paradigm: Huffman Codes: Problem statement, Example, Building solution, algorithm, Complexity |
26 | 18/03/2019 | 12:15pm to 01:15pm | 1hr | Chapter 16 of T1 [ Class Note ] |
Greedy Paradigm: Activity Selection: Problem statement, Example, Building solution, algorithm, Complexity |
27 | 19/03/2019 | 12:15pm to 01:15pm | 1hr | Chapter 21 of T1 [ Class Note ] |
Data Structure for Disjoint Sets: Definition, Basic Operations, Representation, Application: connected component |
28 | 20/03/2019 | 09:15am to 10:15am | 1hr | Class Notes | Graphs and their representation |
29 | 25/03/2019 | 12:15pm to 01:15pm | 1hr | Chapter 22 of T1 [ Class Note ] |
Graph Traversal: Breadth First Search (BFS) Problem statement, Algorithm, Complexity, Example |
30 | 26/03/2019 | 12:15pm to 01:15pm | 1hr | Chapter 22 of T1 [ Class Note ] |
Graph Traversal: Depth First Search (DFS) Problem statement, Algorithm, Complexity, Example |
31 | 27/03/2019 | 09:15am to 10:15am | 1hr | Chapter 23 of T1 [ Class Note ] |
MST: Kruskal’s algorithm, Example, Complexity |
32 | 27/03/2019 | 10:15am to 11:15am | 1hr | Chapter 23 of T1 [ Class Note ] |
MST: Prim’s algorithm, Example, Complexity |
33 | 02/04/2019 | 12:15pm to 01:15pm | 1hr | Chapter 24 of T1 [ Class Note ] |
Single Source Shortest Path: Bellman-Ford Algorithm, Example, Complexity |
34 | 03/04/2019 | 09:15am to 10:15am | 1hr | Chapter 24 of T1 | Single Source Shortest Path: Dijkstra’s Algorithm, Example, Complexity |
35 | 04/04/2019 | 12:15pm to 01:15pm | 1hr | Chapter 25 of T1 | All pair Shortest Path: Floyd-Warshall’s Algorithm, Example, Complexity |
36 | 05/04/2019 | 09:15am to 10:15am | 1hr | Chapter 32 of T1 | String Matching: Problem statement, Preliminary Idea, Naive algorithm, Example, complexity of naive algorithm |
37 | 05/04/2019 | 10:15am to 11:15am | 1hr | Chapter 32 of T1 | String Matching: Rabin-Karp Method: Basic idea, Mathematical background, Horner’s rule, Polynomial evalution |
38 | 09/04/2019 | 12:15pm to 01:15pm | 1hr | Chapter 32 of T1 | String Matching: Rabin-Karp Method: Algorithm, Complexity, Example |
39 | 09/04/2019 | 02:15pm to 03:15pm | 1hr | Chapter 34 of T1 | Complexity Classes: P, NP, NP Complete Definition reduction, NP complete problems |
40 | 09/04/2019 | 03:15pm to 04:15pm | 1hr | Chapter 35 of T1 | Handling NP complete problems: Idea of approximation algorithms. 2- Approximation Algorithms (Vertex cover , TSP) |