# Virtual University of Pakistan

## CS702 : Advanced Algorithms Analysis and Design

### Course Overview

#### Course Synopsis

This is a graduate level course. The major objective of this course is providing comprehensive knowledge of modern computer algorithms and solving scientific and engineering problems efficiently and accurately. The students will be guided, how to analyze complex algorithms comparing efficiencies of these algorithms. Students will not only be taught the design of the existing algorithms but on the other hand it will be focused to teach them designing techniques using rigorous mathematical approaches. The students will be motivated to think about procedures solving real world problems optimally and correctly. Real world problem will be taken as examples to create feelings about the usefulness of this course.

#### Course Learning Outcomes

Upon successful completion of this course, students should be able to:

• Argue and prove the correctness of algorithms using rigorous mathematical techniques taught in this course.
• Analyze average and worst-case running times of given algorithm.
• Describe the divide-and-conquer technique and arguing when an algorithmic design calls this approach.
• Derive and solve recurrence relations describing performance of divide-and-conquer algorithms.
• Describe advanced topics such as dynamic programming and greedy approach and reason to use these approaches for a particular situation.
• Integrate dynamic programming and recursive approach improving efficiency of an algorithm.
• Know the importance of graph theory in problem solving.
• Employing graphs to model science and engineering problems, and to reason about when it is appropriate to use it optimally.
• Analyze and design algorithms on further advanced topics such as computational geometry, operations research, cryptography, number theoretic, algorithms etc.
• Analyze several other algorithms of importance such as string matching, NP completeness, approximation algorithms etc.

#### Course Calendar

 Topic Lecture Resource Page Introduction 1 Cormen et al. (2001) Mathematical Tools 2 Rosen (2002) Logic and Proving Techniques 3 Rosen (2002) Proofs, Validation, Verification 4 Cormen et al. (2001), Rosen (2002) Strong Math Induction 5 Cormen et al. (2001), Rosen (2002) Fibonacci Sequences 6 Cormen et al. (2001), Rosen (2002) Recurrence Relations: Mathematical Models, Analysis Techniques 7 Brassard and Bretly (1995) Recurrence Relations: Algorithms Design and Analysis Techniques 8 Brassard and Bretly (1995) Assignment No. 1 Further Techniques Solving Recurrence Relations 9 Brassard and Bretly (1995) Time Complexity Measuring Notations 10 Cormen et al. (2001) Relations over Asymptotic Notations 11 Cormen et al. (2001) Brute Force Approach: Introduction, Starting with Primality, Sorting Sequence of numbers 12 Cormen et al. (2001) Designing Algorithms using Brute Force and Divide & Conquer Approaches 13 Cormen et al. (2001) Designing Algorithms using Divide & Conquer Approaches (Cont.) 14 Brassard and Bretly (1995) Dynamic Programming for Solving Optimization Problems: Chain Matrix Multiplication Problem 15 Cormen et al. (2001) Chain Matrix Multiplication Problem using Dynamic Programming (Cont.) 16 Cormen et al. (2001) Assignment No. 2 Assembly-Line Scheduling Problem 17 Cormen et al. (2001) 2-Line Assembly Scheduling Problem, n-Line Assembly Scheduling Problem 18 Cormen et al. (2001) 0-1 Knapsack Problem using Dynamic Programming 19 Brassard and Bretly (1995) 0-1 Knapsack Problem's Algorithm using Dynamic Programming, Optimal Weight Triangulation 20 Brassard and Bretly (1995) Optimal Weight Triangulation using Dynamic Programming 21 Cormen et al. (2001) Review Lectures 1-21 22 Cormen et al. (2001) Mid-term Examination Longest Common Subsequence, Optimal Binary Search Trees 23 Cormen et al. (2001) Dynamic Programming: Optimal Binary Search Trees (Cont.) , Greedy Algorithms 24 Cormen et al. (2001) Greedy Algorithms: Activity Selection Algorithm, Fractional Knapsack, Coin Change Making 25 Cormen et al. (2001) Greedy Algorithms: Huffman Coding 26 Cormen et al. (2001) Huffman Coding Problem, Road Trip Problem, Graph Theoretic Concepts 27 Cormen et al. (2001) Breadth First Search: Shortest Paths 28 Cormen et al. (2001) Proof of Breadth First Search Algorithm, Depth First Search 29 Cormen et al. (2001) Proof of White Path Theorem, Applications of Depth First Search 30 Cormen et al. (2001) Assignment No. 3 Backtracking, Branch & Bound Algorithms 31 Brassard and Bretly (1995) Minimal Spanning Tree Problem, Kruskal's Algorithm, Prim's Algorithm 32 Cormen et al. (2001) Road Map Problem, Paths and Shortest Paths, Bellman-Ford Algorithm 33 Cormen et al. (2001) Proof: Bellman Ford Algorithm, Shortest Paths in Directed Acyclic Graphs 34 Cormen et al. (2001) Dijkstra's Algorithm: Problem Statement, Analysis, Correctness 35 Cormen et al. (2001) Course Viva All-Pairs Shortest Paths, Shortest Paths and Matrix Multiplication 36 Cormen et al. (2001) The Floyd-Warshall Algorithm, Johnson's Algorithm 37 Cormen et al. (2001) Number Theoretic Algorithms: Definitions and Some Important Results 38 Cormen et al. (2001) Number Theoretic Algorithms: GCD, Euclid's Algorithm, Groups and Rings 39 Cormen et al. (2001) Presentation Groups and Rings, Chinese Remainder Theorem, RSA Cryptosystem 40 Cormen et al. (2001) Fermat Theorem, Euler's Theorem, RSA Cryptosystem, String Matching Problem 41 Cormen et al. (2001) String Matching: Naive Algorithm, Rabin-Karp Algorithm, String Match with Finite Automata 42 Cormen et al. (2001) Polynomials and Fast Fourier Transform: Representation of Polynomials, The DFT and FFT 43 Cormen et al. (2001) NP Completeness: Circuit Satisfiability, Proof: Formula Satisfiability, 3-CNF, Clique 44 Cormen et al. (2001) Review Lecture 1-44 45 Cormen et al. (2001) Final-term Examination