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

TopicLectureResourcePage
Introduction1Cormen et al. (2001)
Mathematical Tools2Rosen (2002)
Logic and Proving Techniques3Rosen (2002)
Proofs, Validation, Verification4Cormen et al. (2001), Rosen (2002)
Strong Math Induction5Cormen et al. (2001), Rosen (2002)
Fibonacci Sequences6Cormen et al. (2001), Rosen (2002)
Recurrence Relations: Mathematical Models, Analysis Techniques7Brassard and Bretly (1995)
Recurrence Relations: Algorithms Design and Analysis Techniques8Brassard and Bretly (1995)
Assignment No. 1
Further Techniques Solving Recurrence Relations9Brassard and Bretly (1995)
Time Complexity Measuring Notations10Cormen et al. (2001)
Relations over Asymptotic Notations11Cormen et al. (2001)
Brute Force Approach: Introduction, Starting with Primality, Sorting Sequence of numbers12Cormen et al. (2001)
Designing Algorithms using Brute Force and Divide & Conquer Approaches13Cormen et al. (2001)
Designing Algorithms using Divide & Conquer Approaches (Cont.)14Brassard and Bretly (1995)
Dynamic Programming for Solving Optimization Problems: Chain Matrix Multiplication Problem15Cormen et al. (2001)
Chain Matrix Multiplication Problem using Dynamic Programming (Cont.)16Cormen et al. (2001)
Assignment No. 2
Assembly-Line Scheduling Problem17Cormen et al. (2001)
2-Line Assembly Scheduling Problem, n-Line Assembly Scheduling Problem18Cormen et al. (2001)
0-1 Knapsack Problem using Dynamic Programming19Brassard and Bretly (1995)
0-1 Knapsack Problem's Algorithm using Dynamic Programming, Optimal Weight Triangulation20Brassard and Bretly (1995)
Optimal Weight Triangulation using Dynamic Programming21Cormen et al. (2001)
Review Lectures 1-2122Cormen et al. (2001)
Mid-term Examination
Longest Common Subsequence, Optimal Binary Search Trees23Cormen et al. (2001)
Dynamic Programming: Optimal Binary Search Trees (Cont.) , Greedy Algorithms24Cormen et al. (2001)
Greedy Algorithms: Activity Selection Algorithm, Fractional Knapsack, Coin Change Making25Cormen et al. (2001)
Greedy Algorithms: Huffman Coding26Cormen et al. (2001)
Huffman Coding Problem, Road Trip Problem, Graph Theoretic Concepts27Cormen et al. (2001)
Breadth First Search: Shortest Paths28Cormen et al. (2001)
Proof of Breadth First Search Algorithm, Depth First Search29Cormen et al. (2001)
Proof of White Path Theorem, Applications of Depth First Search30Cormen et al. (2001)
Assignment No. 3
Backtracking, Branch & Bound Algorithms31Brassard and Bretly (1995)
Minimal Spanning Tree Problem, Kruskal's Algorithm, Prim's Algorithm32Cormen et al. (2001)
Road Map Problem, Paths and Shortest Paths, Bellman-Ford Algorithm33Cormen et al. (2001)
Proof: Bellman Ford Algorithm, Shortest Paths in Directed Acyclic Graphs34Cormen et al. (2001)
Dijkstra's Algorithm: Problem Statement, Analysis, Correctness35Cormen et al. (2001)
Course Viva
All-Pairs Shortest Paths, Shortest Paths and Matrix Multiplication36Cormen et al. (2001)
The Floyd-Warshall Algorithm, Johnson's Algorithm37Cormen et al. (2001)
Number Theoretic Algorithms: Definitions and Some Important Results38Cormen et al. (2001)
Number Theoretic Algorithms: GCD, Euclid's Algorithm, Groups and Rings39Cormen et al. (2001)
Presentation
Groups and Rings, Chinese Remainder Theorem, RSA Cryptosystem40Cormen et al. (2001)
Fermat Theorem, Euler's Theorem, RSA Cryptosystem, String Matching Problem41Cormen et al. (2001)
String Matching: Naive Algorithm, Rabin-Karp Algorithm, String Match with Finite Automata42Cormen et al. (2001)
Polynomials and Fast Fourier Transform: Representation of Polynomials, The DFT and FFT43Cormen et al. (2001)
NP Completeness: Circuit Satisfiability, Proof: Formula Satisfiability, 3-CNF, Clique44Cormen et al. (2001)
Review Lecture 1-4445Cormen et al. (2001)
Final-term Examination
 
 
Back to Top