Teaching › ADA
Design & Analysis of Algorithms
How to design algorithms and prove how fast they are: divide and conquer, greedy, dynamic programming, graph algorithms and NP-completeness.
Week 01Introduction: algorithms, the analysis framework, asymptotic notationsSlides soonPractice soon
Week 02Recurrences: substitution, recursion tree, master theoremSlides soonPractice soon
Week 03Divide & conquer I: binary search, merge sort, quick sortSlides soonPractice soon
Week 04Divide & conquer II: Strassen's matrix multiplication, selection (quickselect)Slides soonPractice soon
Week 05Heaps, heap sort and priority queuesSlides soonPractice soon
Week 06Sorting lower bound; counting sort and radix sortSlides soonPractice soon
Week 07Greedy I: activity selection, fractional knapsack, Huffman codingSlides soonPractice soon
Week 08Greedy II: minimum spanning trees (Kruskal, Prim), union-findSlides soonPractice soon
Week 09Graph traversal: BFS, DFS, topological sortSlides soonPractice soon
Week 10Shortest paths: Dijkstra, Bellman-FordSlides soonPractice soon
Week 11Dynamic programming I: principles, matrix-chain multiplication, LCSSlides soonPractice soon
Week 12Dynamic programming II: 0/1 knapsack, Floyd-WarshallSlides soonPractice soon
Week 13Backtracking: N-queens, sum of subsets, graph colouringSlides soonPractice soon
Week 14Branch and bound: 0/1 knapsack, travelling salespersonSlides soonPractice soon
Week 15P, NP and NP-completeness; revisionSlides soonPractice soon