Semester IV
II
Lectures
Course Code Course Title Credits
/Week
USCS201 Design & Analysis of Algorithms 2 3
About the Course:
The course covers the concepts of - (i) calculating complexity of algorithms, (ii) the essential operations
like searching, sorting, selection, pattern matching & recursion, and (iii) various algorithmic strategies like
greedy, divide-n-conquer, dynamic programming, backtracking and implementations of all these on basic
data structures like array, list and stack.
Course Objectives:
The objectives of this course are:
To make students understand the basic principles of algorithm design
To give idea to students about the theoretical background of the basic data structures
To familiarize the students with fundamental problem-solving strategies like searching, sorting,
selection, recursion and help them to evaluate efficiencies of various algorithms.
To teach students the important algorithm design paradigms and how they can be used to solve
various real world problems.
Learning Outcomes:
After successful completion of this course, students would be able to
Students should be able to understand and evaluate efficiency of the programs that they write
based on performance of the algorithms used.
Students should be able to appreciate the use of various data structures as per need
To select, decide and apply appropriate design principle by understanding the requirements of
any real life problems
Topics No of
Unit
Lectures
Introduction to algorithms - What is algorithm, analysis of algorithm, Types
of complexity, Running time analysis, How to Compare Algorithms, Rate of
Growth, Types of Analysis, Asymptotic Notation, Big-O Notation, Omega-Ω
Notation, Theta-Θ Notation, Asymptotic Analysis, Performance
characteristics of algorithms, Estimating running time / number of steps of
executions on paper, Idea of Computability
I 15
Introduction to Data Structures - What is data structure, types, Introduction
to Array(1-d & 2-d), Stack and List data structures, operations on these data
structures, advantages disadvantages and applications of these data structures
like solving linear equations, Polynomial Representation, Infix-to-Postfix
conversion
Recursion - What is recursion, Recursion vs Iteration, recursion
II 15
applications like Factorial of a number, Fibonacci series & their
comparative analysis with respect to iterative version, Tower of hanoi
problem
Basic Sorting Techniques - Bubble, Selection and Insertion Sort & their
comparative analysis
Searching Techniques - Linear Search and its types, Binary Search and their
comparative analysis
Selection Techniques - Selection by Sorting, Partition-based Selection
Algorithm, Finding the Kth Smallest Elements in Sorted Order & their
comparative analysis
String Algorithms - Pattern matching in strings, Brute Force Method &
their comparative analysis
Algorithm Design Techniques - Introduction to various types of
classifications/design criteria and design techniques
Greedy Technique - Concept, Advantages & Disadvantages, Applications,
Implementation using problems like - file merging problem
Divide-n-Conquer - Concept, Advantages & Disadvantages, Applications,
Implementation using problems like - merge sort, Strassen's Matrix
III 15
Multiplication
Dynamic Programming - Concept, Advantages & Disadvantages,
Applications, Implementation using problems like - Fibonacci series,
Factorial of a number, Longest Common subsequence
Backtracking Programming - Concept, Advantages & Disadvantages,
Applications, Implementation using problems like N-Queen Problem
Textbooks:
1. “Data Structure and AlgorithmUsing Python”, Rance D. Necaise, Wiley India Edition, 2016.
2. “Data Structures and Algorithms Made Easy”, NarasimhaKarumanchi, CareerMonk
Publications, 2016.
3. “Introduction to Algorithms”, Thomas H. Cormen, 3rd Edition, PHI.
Additional References:
1. “Introduction to the Design and Analysis of Algorithms”, Anany Levitin, Pearson, 3rd Edition,
2011.
2. “Design and Analysis of Algorithms”, S. Sridhar, Oxford University Press, 2014.