Course Pack
Course Pack
SCHEME
The scheme is an overview of work-integrated learning opportunities and gets students out into the real
world. This will show what a course entails.
Course Title Advanced Data Structures and Algorithms Course Type Integrated
Course Code E2UC503C Class
Activity Credits Credit Hours Total Number of Assessment in
Classes per Semester Weightage
Lecture 3 3
Instruction Tutorial
Practical
Tutorial
0 0
Theory
delivery
study
Self-
SEE
Practical
CIE
1 2
Self-study 1 10
Total 5 15 45 0 30 150 50% 50%
Course Lead Dr. Anupam Kumar Course Dr. Nabanita Mahata
Sharma Coordinator
Names Theory Practical
Course Nabanita Mahata Nabanita Mahata
Instructors Vipul Narayan Vipul Narayan
Vijayant Pawar Vijayant Pawar
Biswa Mohan Sahoo Biswa Mohan Sahoo
Gopal Chandra Jana Gopal Chandra Jana
Alok Kumar Alok Kumar
Mohd. Arquam Mohd. Arquam
Abdul Mazid Abdul Mazid
Anupam Kumar Sharma Anupam Kumar Sharma
Aditya Kishore Saxena Aditya Kishore Saxena
Krishna Kant Agrawal Krishna Kant Agrawal
Gyanendra Kumar Gyanendra Kumar
Pragya Pragya
Shivani Goswami Shivani Goswami
Abdul Aleem Abdul Aleem
Ravi Kumar Ravi Kumar
Vimal Kumar Vimal Kumar
G. Sakthi G. Sakthi
Abhist Kumar Abhist Kumar
Vimal Kumar Vimal Kumar
Himanshu Verma Himanshu Verma
Pragya Pragya
Gyanendra Kumar Gyanendra Kumar
Biswa Mohan Sahoo Biswa Mohan Sahoo
Aditya Kishore Saxena Aditya Kishore Saxena
Abdul Mazid Abdul Mazid
COURSEPACK |
FORMAT
Vijayant Pawar Vijayant Pawar
Vipul Narayan Vipul Narayan
Raghvendra Ajay Mishra Raghvendra Ajay Mishra
COURSE OVERVIEW
An advanced course in data structures and algorithms typically builds upon the foundational
knowledge of basic data structures and algorithms. It delves deeper into more complex data
structures and advanced algorithmic techniques. This course explores advanced data structures and
algorithmic techniques used in computer science and software development. It focuses on the
design, analysis, and implementation of data structures and algorithms for solving complex
computational problems efficiently.
PREREQUISITE COURSE
COURSE OBJECTIVE
1. To study and implement complex data structures.
2. To learn advanced algorithm design paradigms and techniques.
3. To study and analyze algorithms for solving complex problems.
4. To apply the knowledge gained to implement and analyze algorithms and data structures in
programming assignments and projects.
COURSE OUTCOMES(COs)
After the completion of the course, the student will be able to:
CO No. Course
Outcomes
E2UC503.1 Explain the concept of Dynamic memory management, priority queue, hashing,
backtracking, graphs, dynamic programming, and greedy algorithms.
E2UC503.2 Apply dynamic programming, greedy algorithms, and backtracking to solve real
world problems.
E2UC503.3 Analyze the problem for suitable data structures and algorithms.
E2UC503.4 Develop a project based on dynamic programming, greedy algorithms,
backtracking, and hashing evaluating the scenario as per requirements.
Bloom's taxonomy is a set of hierarchical models used for the classification of educational learning
objectives into levels of complexity and specificity. The learning domains are cognitive, affective, and
COURSEPACK |
FORMAT
psychomotor.
COMPREHENSIVE
Remember Understand Apply Analyse Evaluate Create
CO No.
KL1 KL 2 KL 3 KL 4 KL 2 KL 6
E2UC 503.1 √
E2UC 503.2 √
E2UC 503.3 √
E2UC 503.4 √ √
PO2 Problem analysis: Identify, formulate, review research literature, and analyze complex
computing science problems reaching substantiated conclusions using first principles of
mathematics, natural sciences, and computer sciences.
PO3 Design/development of solutions: Design solutions for complex computing problems and
design system components or processes that meet the specified needs with appropriate
consideration for the public health and safety, and the cultural, societal, and environmental
considerations.
PO5 Modern tool usage: Create, select, and apply appropriate techniques, resources, and modern
computing science and IT tools including prediction and modeling to complex computing
activities with an understanding of the limitations.
PO6 IT specialist and society: Apply reasoning informed by the contextual knowledge to assess
societal, health, safety, legal and cultural issues and the consequent responsibilities relevant to
the professional computing science and information science practice.
PO7 Environment and sustainability: Understand the impact of the professional computing
science solutions in societal and environmental contexts, and demonstrate the knowledge of, and
need for sustainable development.
PO8 Ethics: Apply ethical principles and commit to professional ethics and responsibilities and
norms of the computing science practice.
PO9 Individual and team work: Function effectively as an individual, and as a member or leader
in diverse teams, and in multidisciplinary settings.
PO11 Project management and finance: Demonstrate knowledge and understanding of the
computing science and management principles and apply these to one’s own work, as a member
and leader in a team, to manage projects and in multidisciplinary environments.
PO12 Life-long learning: Recognize the need for, and have the preparation and ability to engage
in independent and life-long learning in the broadest context of technological change.
PSO1: Have the ability to work with emerging technologies in computing requisite to Industry
4.0.
PSO2: Demonstrate Engineering Practice learned through industry internship and research
project tosolve live problems in various domains
COURSE ARTICULATIONMATRIX
The Course articulation matrix indicates the correlation between Course Outcomes and Program
Outcomes and their expected strength of mapping in three levels (low, medium, and high).
PSO1
PSO2
PO10
PO11
PO12
PO1
PO2
PO3
PO4
PO5
PO6
PO7
PO8
PO9
COs#/
POs
E2UC 503.1 1 1
E2UC 503.2 2 2 1
E2UC 503.3 2 1 1
E2UC 503.4 1 1 1 1 2 1 2
Note: 1-Low, 2-Medium, 3-High
COURSE ASSESSMENT
The course assessment patterns are the assessment tools used both in formative and summative
examinations.
COURSE CONTENT
THEORY+ PRACTICAL
Contents
Theory
Arrays: Definition, Single and Multidimensional Arrays, Representation of Arrays: Row Major
Order, and Column Major Order, Derivation of Index Formulae for 1-D, 2-D, 3-D, Sparse
Matrices and their representations.
Linked lists: Implementation of Singly Linked Lists. Operations on Linked List. Insertion,
Deletion, Traversal. QUEUES
Stacks: List Implementation of Stack, Application of stack: infix, Prefix and Postfix Expressions,
infix to postfix expression, Evaluation of postfix expression,
Recursion- Principles of recursion, Tail recursion, Removal of recursion Problem solving using
iteration and recursion with examples such as binary search, Tower of Hanoi.
Queues: Operations on Queue: Create, Add, Delete, Full & Empty,
Searching, Index Sequential Search, Concept of Hashing & Collision resolution Techniques
used in Hashing.
Tree: Linked List Representation, Binary Search Tree, Tree Traversal algorithms: In-order, Pre-
order, and Post-order, Constructing Binary Tree from given Tree Traversal, Operation of
Insertion, Deletion, Searching Modification of data in Binary Search. Concept & Basic
Operations for AVL Tree, B+ tree. Implementation of Quad tree and Oct Tree
Graph: Representations: Adjacency Matrices, Adjacency List, Graph Traversal: Depth First
Search & Breadth First Search.
Minimum Cost Spanning Trees: Prims and Kruskal algorithm. Shortest Path algorithm:
Warshal Algorithm.
Dynamic Programming: Elements of dynamic programming, Longest common subsequence,
Optimal binary search trees, 0/1 Knapsack.
Greedy Algorithms: Elements of the greedy strategy, Offline caching, Fractional knapsack
Back Tracking: Sum of subset, N queens’ problem
COURSEPACK |
FORMAT
Bipartite Graphs: Maximum bipartite matching, The stable-marriage problem
Trie Data structure, Trie insert and search
Bitonic Sort and Radix sort
Lab (To be implemented in Java and Python)
Write a program to implement Stack operations using linked list implementation of Stack.
Write a program to implement Tower of Hanoi.
Write a program for to convert infix expression to postfix and evaluate it.
Write a program to implement Queue operations using linked list implementation.
Write a program to implement Binary Search Tree.
Write a program to traverse a binary tree using PRE-ORDER, IN-ORDER, POST-ORDER
traversal techniques.
Write a program to construct a binary tree using given tree traversal.
Write a program for B+ Tree
Write a program to implement AVL Tree.
Write a program to implement Quad Tree.
Write a program to implement Oct Tree.
Write a program to traverse a graph using breadth-first search (BFS).
Write a program to traverse a graph using depth-first search (DFS).
Write a program for Kruskal’s algorithm for a given graph
Write a program for Prim’s algorithm for a given graph
Write a program for all pairs shortest path.
Write a program for Longest Common Subsequence.
Write a program for 0/1 knapsack.
Write a program for fractional knapsack.
Write a program to implement N queens' problem.
Write a program to insert and delete in Trie data structure.
Write a program to implement Bitonic sort.
Write a program to implement Radix sort.
COURSEPACK |
FORMAT
LESSON PLAN FOR COMPREHENSIVE COURSES
FOR THEORY 15 weeks * 3 Hours = 45 Classes) (1credit = 1Lecture Hour)
FOR PRACTICAL 15 weeks * 2Hours = 30 Hours lab sessions (1 credit = 2 lab hours)
Practical
9
Write a program to implement
Tower of Hanoi. Practical
10
Theory
Infix to postfix expression,
11
Evaluation of postfix expression
COURSEPACK |
FORMAT
Recursion: Principles of Theory
12
recursion, Tail recursion
Removal of recursion Problem Theory
solving using iteration and
13
recursion with examples such as
binary search
Practical
14 Write a program for to convert
infix expression to postfix and
Practical
15 evaluate it.
Practical
19
Write a program to implement
Queue operations using linked
Practical
list implementation.
20
COURSEPACK |
FORMAT
BIBLIOGRAPHY
SWAYAM/NPTEL/MOOCs Certification
• https://www.coursera.org/specializations/data-structures-algorithms.
• https://www.codespaces.com/best-data-structures-and-algorithms-courses-
classes.html#3-data-structures-and-algorithms-nanodegree-certification-udacity
•
PROBLEM-BASED LEARNING
SNo Problem KL
2–Sum Problem: Finding two numbers in an array that add up to a given target K3
1
value.
Longest Common Subsequence Problem: Finding longest subsequence which is K4
2
common in all given input sequences.
Maximum Subarray Problem: Finding a contiguous subarray with the largest K3
3
sum, within a given one-dimensional array A[1...n] of numbers.
Coin Change Problem: Finding the number of ways to make sum by using K3
4 different denominations from an integer array of coins[ ] of size N representing
different types of denominations and an integer sum.
0–1 Knapsack Problem: Restrict the number of copies of each kind of item to K4
5
zero or one.
Subset Sum Problem: Checking if there is a subset of the given set whose sum K3
6 is equal to the given sum.
Longest Palindromic Subsequence Problem: Finding a maximum-length K3
7 subsequence of a given string that is also a Palindrome.
Matrix Chain Multiplication Problem: Finding the most efficient way to K4
8 multiply these matrices together such that the total number of element
multiplications is minimum.
9 Longest Common Substring Problem: A set of strings can be found by building K3
COURSEPACK |
FORMAT
a generalized suffix tree for the strings, and then finding the deepest internal
nodes which have leaf nodes from all the strings in the subtree below it.
Rod Cutting Problem: A rod is given of length n. Another table is also provided, K3
10 which contains different size and price for each size. Determine the maximum
price by cutting the rod and selling them in the market.
Word Break Problem: You will be given a string, say "s", and a dictionary of K3
11 strings say "wordDict". You have to return true if s can be segmented into a
space-separated sequence of one or more dictionary words.
Edit Distance Problem: Quantifying how dissimilar two strings (e.g., words) are K4
12 to one another, that is measured by counting the minimum number of operations
required to transform one string into the other.
Chess Knight Problem: A knight starting at any square of the board and moving K3
13 to the remaining 63 squares without ever jumping to the same square more than
once.
Partition Problem: A given set can be partitioned in such a way, that sum of K3
14
each subset is equal.
3–Partition Problem: Deciding whether a given multiset of integers can be K3
15
partitioned into triplets that all have the same sum.
Snake and Ladder Problem: Write a function that returns the minimum K4
16
number of jumps to take top or destination position. You can assume the
dice you throw results in always favor of you means you can control the
dice.
Largest Consecutive Subarray Problem: Finding out the largest sum of the K3
17
consecutive numbers of the array.
Dutch National Flag Problem: The flag of the Netherlands consists of three K3
18 colors: white, red, and blue. The task is to randomly arrange balls of white, red,
and blue such that balls of the same color are placed together.
Knight’s Tour Problem: a puzzle where a chess knight is placed on an empty K3
19 chess board and the goal is to move the knight to every square on the board
exactly once without re-visiting any squares.
Maximum Sum Submatrix Problem: A 2D array arr[][] of dimension N*M is K3
20
given, the task is to find the maximum sum sub-matrix from the matrix arr[][].
Longest Palindromic Substring Problem: Finding a maximum-length contiguous K4
21
substring of a given string that is also a palindrome.
Job Sequencing Problem: You have a single processor operating system and a K3
22
set of jobs that have to be completed with given deadline constraints.
N–Queens Problem: Placing N chess queens on an N×N chessboard so that no K3
23
two queens attack each other.
Maximum Product Subarray Problem: Find the contiguous subarray within the K3
24 array which has the largest product of its elements. You have to report this
maximum product.
Longest Repeated Subsequence Problem: Find the length of the longest K3
25 repeating subsequence in a given string such that the two subsequences don't
have the same original string character at the same position.
3–Sum Problem: Given an array and a value, find if there is a triplet in array K3
26 whose sum is equal to the given value. If there is such a triplet present in array,
then print the triplet and return true. Else return false.
COURSEPACK |
FORMAT
Shortest Common Super Sequence Problem: Given two strings X and Y of K4
27 lengths m and n respectively, find the length of the smallest string which has
both, X and Y as its sub-sequences.
Longest Alternating Subarray Problem: Given an array containing positive and K3
28 negative elements, find a subarray with alternating positive and negative
elements, and in which the subarray is as long as possible.
4–Sum Problem: Given an array nums of n integers and an integer target, are K3
29 there elements a, b, c, and d in nums such that a + b + c + d = target we need to
find all unique quadruplets in the array which gives the sum of target.
30
K–Partition Problem: Partitioning an array of positive integers into k disjoint K3
subsets that all have an equal sum, and they completely cover the set.
Minimum Sum Partition Problem: Given a set of positive integers S, partition K3
set S into two subsets, S1 and S2, such that the difference between the sum of
31
elements in S1 and S2 is minimized. The solution should return the minimum
absolute difference between the sum of elements of two partitions.
Wildcard Pattern Matching Problem: We have a string and a pattern then we K3
32 have to compare the string with a pattern that whether the pattern matches with
a string or not
Maximum Overlapping Intervals Problem: Print the maximum number of K3
33
overlap among these intervals at any time.
Graph Coloring Problem: Assigning colors to the vertices such that no two K3
34
adjacent vertexes have the same color.
Longest Increasing Subsequence Problem: Given an array arr[] of size N, the K4
35
task is to find the length of the Longest Increasing Subsequence (LIS).
Pots of Gold Game Problem: Two players X and Y are playing a game in which K3
there are pots of gold arranged in a line, each containing some gold coins. They
get alternating turns in which the player can pick a pot from one of the ends of
the line. The winner is the player who has a higher number of coins at the end.
36
The objective is to maximize the number of coins collected by X, assuming Y
also plays optimally. Return the maximum coins X could get while playing the
game. Initially, X starts the game.
37
Activity Selection Problem: Selection of non-conflicting activities that needs to K3
be executed by a single person or machine in a given time frame.
Longest Alternating Subsequence Problem:One wants to find a subsequence of K3
38 a given sequence in which the elements are in alternating order, and in which
the sequence is as long as possible.
Longest Consecutive Subsequence Problem: First sort the array and find the K4
longest subarray with consecutive elements. After sorting the array and
39
removing the multiple occurrences of elements, run a loop and keep a count and
max (both initially zero).
Weighted Interval Scheduling Problem: A value is assigned to each executed K3
40 task and the goal is to maximize the total value. The solution need not be
unique.
Longest Bitonic Subarray Problem: Find a subarray of a given sequence in K3
41 which the subarray’s elements are first sorted in increasing order, then in
decreasing order, and the subarray is as long as possible.
COURSEPACK |
FORMAT
Water Jugs Problem: You are given two jugs, a 4-gallon one and a 3-gallon one, K4
a pump which has unlimited water which you can use to fill the jug, and the
42
ground on which water may be poured. Neither jug has any measuring markings
on it. How can you get exactly 2 gallons of water in the 4-gallon jug?
Hat Check Problem: Given a positive number n, find the total number of ways K3
43 in which n hats can be returned to n people such that no hat makes it back to its
owner.
Merging Overlapping Intervals: Start from the first interval and compare it with K4
44
all other intervals for overlapping.
45
Longest Common Prefix (LCP) Problem: An array of strings is the common K4
prefix between 2 most dissimilar strings.
Maximum Product Rod Cutting Problem: Get the maximum product by making K4
46
a cut at different positions and comparing the values obtained after a cut.
Box Stacking Problem: Pile up boxes one on top of the other so that you form K4
47
the maximum height of box pile-up.
Maximum Product Subset Problem: Given an integer array, find the maximum K4
48
product of its elements among all its subsets.
Maximum Independent Set Problem: Finding the largest independent set in a K4
49 graph, where an independent set is a set of vertices such that no two vertices are
adjacent.
STUDENT-CENTERED LEARNING (SELF-LEARNING TOWARDS LIFE-LONG-
LEARNING)
Self-Learning (it’s a typical course-based project to be carried out by a whole class in groups of four
students each; they should exhibit higher level KLs)
The students, in a group, are expected to conceive an idea based on the content (objectives/outcomes) and
apply suitable knowledge to demonstrate their learning.
To enhance their skill set in the integrated course, the students are advised to execute course-based
design projects. Some sample projects are given below:
SNo Suggested KL
Projects
1 Snake Game K5
2 Sudoku K5
3 To-Do list K5
4 Social Media Network K6
5 Phonebook K5
6 Library Management System K6
7 Maze K5
COURSEPACK |
FORMAT
8 Music Playlist K5
9 Calendar K5
10 Student Grade Checker K5
11 Flight Route Planner K5
12 Spell Checker K5
13 Web Crawler K5
14 File Compression Tool K6
15 Real-Time Trafic Analysis K5
18 Online Bookstore K6
20 Banking System K5
21 Tic-Tac-Toe K5
24 Crossword Puzzle K6
25 Hangman K5
COURSEPACK |
FORMAT
39 Banking Management System Project K5
44 Calendar Application K6
45 3D Bounce game K6
COURSEPACK |
FORMAT