Professional Documents
Culture Documents
Final Outline Analysis of Algorithm
Final Outline Analysis of Algorithm
Website:
Counseling Hours: TBA
Pre-requisites: CS – 443 Data Structure and Algorithms
Course Description: The “Analysis of Algorithms” is one of the most important courses in
Computer Science, targeted towards teaching efficient problem solving, to
the students. It majorly focuses on two vital activities in computing i.e the
design and then analysis of algorithms with the intent of producing the
most optimized solutions for problems. It mainly inlcudes discussion of
various solutions to the basic computing problems such as sorting,
searching, and selection . Students explore algorithm analysis - worst and
average case analysis - recurrences and asymptotic on different data
structures such as basic linear structures, balanced trees, heaps, and hash
tables. They learn algorithm design techniques - divide-and-conquer,
dynamic programming, greedy algorithms, amortized analysis. Discuss of
algorithms for fundamental graph problems such as depth-first search,
connected components, topological sort, shortest paths is also included in
the course. Moreover students are also introduced to the string match NP-
Completeness and Approximation Algorithms.
Objective:
The main objectives of the course are
To highlight the significance of performance of an algorithm and thus
its complexity
To understand the importance of the choice of an appropriate data
structure for an optimized overall performance
To learn various algorithm design techniques and their applications on
different problems in various domains
To learn to solve new problems using the design and analysis
procedures
Course Learning After the completion of this course, the student shall be able to:
Outcomes Analyze and compare the computational efficiency of algorithms
Propose improvements in an algorithm to enhance the overall efficiency
Understand a problem thoroughly, identify and analyze suitable criteria
and specifications to a (new) problem, and apply an appropriate
algorithm design technique to devise a solution
Justify their choice of design technique for a given problem
Explain and apply backtracking and branch and bound techniques to
deal with some hard problems.
Books: Textbook:
Introduction to Algorithms, 2nd Edition by Thomas H. Cormen
Reference
1. Algorithm Design, by Jon Kleinberg and Eva Tardos, 2013
(Pearson)
2. Introduction to the Design & Analysis of Algorithms, by Anany
Levitin, Second Edition, 2012 (Pearson)
Assignments:
Assignments need to be submitted on time. You will have 10 hours
to submit the assignment after the due date & time. However, 10%
marks will be deducted for every passing hour after the due time.
Copying/Cheating whole or part of the assignment from anywhere
without proper credit/references will not be tolerated. Whether you
have copied or your work has been copied by someone else, you
will be penalized brutally.
Week #01
Introduction to the Course
Important Computing Problem Types
Quick Review of Necessary Data Structure Concepts
Multiple Solutions for one problem
Significance of Algorithm Performance and Complexity
Some Simple Examples
Week#0 2
Algorithm Analysis Framework
Asymptotic Order of Growth
Asymptotic Order of Growth
Standard Notations and Common Functions
Week# 0 3 and 04
Week #11
Single Source Shortest Paths
Bellman-Ford Algorithm
Week #12
Greedy Algorithms
Huffman codes
A task-scheduling problem
Week # 13:
Dynamic Programming
Elements of dynamic programming
All Pair shortest distance( Floyed Warshal)
Week # 14:
Dynamic Programming
Matrix-chain multiplication
Longest Common Subsequence
Week # 15:
String Matching
The naïve string-matching algorithm
The Rabin-Karp algorithm
Week # 16:
String Matching
String matching with finite automata
The Knuth-Morris-Pratt algorithm
Week # 17:
Hash Tables
Direct-address table
Hash tables
Hash functions
Week # 18:
Hash Tables
Open addressing
Perfect addressing
Red-Black Trees
Properties of red-black trees
Rotations
Insertions