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
|
3
|
Logic and Proving Techniques
|
4
|
Proofs, Validation, Verification
|
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
|
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
|
|
|
|