Data Structure and Algorithms (CS-443) : University Institute of Information Technology
Data Structure and Algorithms (CS-443) : University Institute of Information Technology
Course Contents:
Abstract data types, complexity analysis, Big Oh notation, Stacks (linked lists and array
implementations), Recursion and analyzing recursive algorithms, divide and conquer
algorithms, Sorting algorithms (selection, insertion, merge, quick, bubble, heap, shell,
radix, bucket), queue, dequeuer, priority queues (linked and array implementations of
queues), linked list & its various types, sorted linked list, searching an unsorted array,
binary search for sorted arrays, hashing and indexing, open addressing and chaining,
trees and tree traversals, binary search trees, heaps, M-way tress, balanced trees,
graphs, breadth-first and depth-first traversal, topological order, shortest path,
adjacency matrix and adjacency list implementations, memory management and
garbage collection.
Course Objective:
This course aims at teaching the students to write programs that not only are correct but
also computation and space efficient and optimized for the intended use through
appropriate structuring/organization of the related data. Students will learn the standard
data structures such as linked lists, stacks, queues, trees, and graphs and the
algorithms that manipulate them. Students will also be introduced to the concept of
algorithm complexity analysis in order to make them realize the cost of the operations
they perform on their data structures.
Teaching Methodology:
Lectures, Written Assignments, Practical labs, Semester Project, Presentations
Courses Assessment:
Mid Exam, Home Assignments, Quizzes, Project, Presentations, Final Exam
Reference Materials:
1. Data Structures by Gillberg Forouzan (Fourth Edition), Latest Edition
2. Data Structures and Algorithms in C++ by Adam Drozdek , 4th edition, 2012
3. Data Structures and Algorithm Analysis in C++ by Mark Allen Weiss, 4th edition,
2013.
4. Data Structures Using C and C++, Thomas Y. Langsam, M. J. Augenstein, A. M.
Tenenbaum, Prentice-Hall.
5. Data Structures and Algorithms in C++ by Michael T. Goodrich 2nd Edition, 2011.
6. Introduction to Algorithms, Thomas H. Cormen et al, MIT Press, 3rd edition, 2009.
Complexity Analysis:
Complexity Analysis
Lecture-I
Time and Space Complexity
Big Oh notation
Searching Algorithms:
Arrays (basic and Object types)
Algorithms on arrays.
Week 2 Lecture-II Recursion and analyzing recursive
algorithms,
Linear Search
Binary Search
Implementation and
Comparison of searching
Practical
algorithm
Sorting Algorithms:
Selection Sort
Lecture-I
Bubble Sort
Insertion Sort
Sorting Algorithms:
Week 3 Divide and conquer algorithms
Lecture-II
Merge Sort
Quick Sort
Implementation and
Comparison of sorting
Practical
algorithm
Tree implementation
Practical
BST implementation
Balanced Tree and Heaps:
AVL tree
Lecture-I Heap (max and min)
Heaps and Associated Algorithms
Graphs:
Terminology, operations and
Lecture-I representation
Graph traversals and searching
algorithms (BFS-DFS)
Graphs:
Week 13
Lecture-II Weighted Graphs
Dijkstra’s Algorithms
Graph implementation using
Adjacency List and search
Practical
algorithms
DFS and BFS implementation
Week 14 Lecture-I Shortest Path:
Topological order
Shortest path
Shortest Path:
Lecture-II Adjacency matrix
Adjacency list implementations
Implementation of shortest
Practical
path algorithm.
Shortest Path:
Warshal Floyd’s Algorithm
Lecture-I
Unweighted graph
Weighted graph
Week 15 Memory management:
Lecture-II Memory Management
Garbage collection.
Implementation of Warshal
Practical
Floyd’s algorithm
Project Demos:
Lecture-I GroupWise Project Demos and
Presentations
Final Course Revision:
Week 16 Lecture-II
Revision of programming
Practical exercises