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

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