### 210243: Data Structures and Algorithms

Prerequisites: - FPL I and FPL II

Course Objectives:

 To understand the standard and abstract data representation methods.
 To acquaint with the structural constraints and advantages in usage of the data.
 To understand the memory requirement for various data structures.
 To operate on the various structured data.
 To understand various data searching and sorting methods with pros and cons.
 To understand various algorithmic strategies to approach the problem solution.

Course Outcomes: On completion of the course, student will be able to–

 To discriminate the usage of various structures in approaching the problem solution.
 To design the algorithms to solve the programming problems.
 To use effective and efficient data structures in solving various Computer Engineering domain problems.
 To analyze the problems to apply suitable algorithm and data structure.
 To use appropriate algorithmic strategy for better efficiency

Course Contents:

Unit I -Introduction to Algorithm and Data Structures 09 Hours -

Algorithms- Problem Solving, Introduction to Algorithms, Characteristics of algorithms, Algorithm design tools: Pseudo code and flowchart, Analysis of Algorithms, Complexity of algorithms- Space complexity, Time complexity, Asymptotic notation- Big-O, Theta and Omega, standard measures of efficiency.
Data Structures- Data structure, Abstract Data Types (ADT), Concept of linear and Non-linear, static and dynamic, persistent and ephemeral data structures, and relationship among data, data structure, and algorithm, From Problem to Program.
Algorithmic Strategies- Introduction to algorithm design strategies- Divide and Conquer, and Greedy strategy.
Recurrence relation - Recurrence Relation, Linear Recurrence Relations, With constant Coefficients, Homogeneous Solutions. Solving recurrence relations

Unit II Linear Data Structures Using Sequential Organization 09 Hours

Sequential Organization, Linear Data Structure Using Sequential Organization, Array as an Abstract Data Type, Memory Representation and Address Calculation, Inserting an element into an array, Deleting an element, Multidimensional Arrays, Two-dimensional arrays, n- dimensional arrays, Concept of Ordered List, Single Variable Polynomial, Representation using arrays, Polynomial as array of structure, Polynomial addition, Polynomial multiplication, Sparse Matrix, Sparse matrix representation, Sparse matrix addition, Transpose of sparse matrix, String Manipulation Using Array. Case Study- Use of sparse matrix in Social Networks and Maps.

Unit III Linked Lists 09 Hours

Generalized Linked List (GLL) concept, representation of polynomial and sets using GLL. Case Study- Garbage Collection.

Unit IV Stacks 09 Hours Stacks-

Concept, Primitive operations, Stack Abstract Data Type, Representation of Stacks Using Sequential Organization, stack operations, Multiple Stacks, Applications of Stack- Expression Evaluation and Conversion, Polish notation and expression conversion, Need for prefix and postfix expressions, Postfix expression evaluation, Linked Stack and Operations.
Recursion- concept, variants of recursion- direct, indirect, tail and tree, Backtracking algorithmic strategy, use of stack in backtracking.
Case Study- 4 Queens problem, Androidmultiple tasks/multiple activities and back stack.

Unit V Queues 09 Hours

Concept,Queue as Abstract Data Type, Realization of Queues Using Arrays , Circular Queue, Advantages of using circular queues, Multi-queues, Deque, Priority Queue, Array implementation of priority queue, Linked Queue and operations.
Case study- Priority queue in bandwidth management.

Unit VI Sorting and Searching 09 Hours

Searching- Search Techniques, Sequential search, variant of sequential search- sentinel search, Binary search, Fibonacci search. Case Study- Use of Fibonacci search in non-uniform access memory storage and in Optimization of Unimodal Functions.
Sorting- Types of sorting-Internal and external sorting, General sort concepts-sort order, stability, efficiency, number of passes, Sorting methods- Bubble sort, Insertion sort, Selection sort, Quick sort, Heap sort, Shell sort, Bucket sort, Radix sort, Comparison of All Sorting Methods.
Case Study- Timsort as a hybrid stable sorting algorithm.

#### Books: Text: 1. Brassard & Bratley, ―Fundamentals of Algorithmics‖, Prentice Hall India/Pearson Education, ISBN 13-9788120311312. 2. Horowitz and Sahani, ―Fundamentals of Data Structures in C++‖, University Press, ISBN 10: 0716782928 ISBN 13: 9780716782926. 3. Goodrich, Tamassia, Goldwasser, ―Data Structures and Algorithms in C++‖, Wiley publication, ISBN-978-81-265-1260-7

References:
1. R. Gillberg, B. Forouzn, ―Data Structures: A Pseudo code approach with C‖, Cenage Learning, ISBN 9788131503140.
2. Horowitz, Sahani and Rajshekaran, ―Fundamentals of Computer Algorithms‖, University Press, ISBN-13, 9788175152571.
3. Yedidyah Langsam, Moshe J Augenstein, Aron M Tenenbaum, ―Data Structures using C and C++‖, Pearson Education, ISBN 81-317-0328-2.
4. A Michael Berman, ―Data Structures via C++: Objects by Evolution‖, Oxford University Press, ISBN:0-19-510843-4.
5. M. Weiss, ―Data Structures and Algorithm Analysis in C++‖, 2nd edition, Pearson Education, 2002,ISBN-81-7808-670-0.